在我的React Native移动应用程序中,我使用AWS Amplify将有关用户操作(屏幕视图、按钮点击、滑动等)的信息通过AWS PinpointAnalytics.record(...)
发送到AWS Pinpoint,后者又将它们输入AWS Kinesis Data Stream。我创建了一个AWS Lambda Python 3 函数,用于侦听此数据流中的事件。
得益于出色的文档,设置变得轻而易举,并且一切正常-除了一件事:
当用户登录时,我使用Analytics.updateEndpoint(...)
. 在 lambda 函数中,我base64
对事件负载进行解码,如本示例代码所示,示例事件负载大致如下所示:
{
"event_type": "_session.start",
"event_timestamp": 1572345161558,
"application": {
"app_id": "<some app ID>",
"cognito_identity_pool_id": "us-east-1:<some pool ID>",
"sdk": {},
"version_name": "<the app version I put in using updateEndpoint(...)>"
... <snipped for brevity> ...
},
"attributes": {},
"endpoint": {
"ChannelType": "APNS",
"Address": "=ABAQRuUDJD ... <some longish binary value> j0eL+69lsY=",
"EndpointStatus": "ACTIVE",
"Location": {
"Country": "US"
},
"Demographic": {
"Make": "iPhone",
"Model": "iPhone X",
"ModelVersion": "13.1.3",
...
"Platform": "ios"
},
"User": {
"UserId": "us-east-1:<Cognito ID of the user that logged in>",
"UserAttributes": {}
},
... <snipped for brevity> ...
},
"awsAccountId": "<my account ID>"
}
上述字段中的用户电子邮件地址"Address"
不以纯文本形式包含在 Kinesis Data Stream 事件中,而是以某种方式编码(或加密?)。
我的问题:谁能告诉我它是如何编码/加密的?而且,理想情况下,如何获取纯文本地址?
我尝试使用我的默认AWS KMS密钥(及其组合)base64
对其进行解码或解密,但没有运气。
或者,我可以使用(纯文本)用户 ID 在用于管理身份验证和身份验证的AWS Cognito用户池中查找电子邮件地址,但直接从事件中获取它显然要简单得多......
我在gitterAWS-Amplify
上的频道中进行了上下搜索,但似乎没有任何地方记录编码/加密......Address