В моем мобильном приложении React Native я использую AWS Amplify для отправки информации о действиях пользователя (просмотры экрана, нажатия кнопок, пролистывания и т. Д.) С помощью Analytics.record(...)
- AWS Pinpoint , который в свою очередь передает их в AWS Kinesis Data Stream . Я создал функцию AWS Lambda Python 3, которая прослушивает события в этом потоке данных.
Установка прошла быстро, благодаря выдающейся документации и все работает отлично - за исключением одного:
Когда пользователь входит в систему, я обновляю Pinpoint Конечная точка , используя идентификатор пользователя, адрес электронной почты и некоторые другие атрибуты, используя Analytics.updateEndpoint(...)
. В лямбда-функции я 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» как обычный текст, а каким-то образом закодировано (или зашифровано?).
Мой вопрос: Может кто-нибудь сказать мне, как онозакодированы / зашифрованы? И, в идеале, как получить простой текстовый адрес?
Я пытался base64
- расшифровать или расшифровать его, используя мой ключ по умолчанию AWS KMS (и их комбинацию), ноне повезло.
В качестве альтернативы, я мог бы использовать (простой текст) идентификатор пользователя для поиска адреса электронной почты в пуле пользователей AWS Cognito , который используется для управления аутентификацией и аутентификацией, но получать его отсобытие напрямую, очевидно, было бы намного проще ...
Я искал в Интернете вверх и вниз, спросил в канале AWS-Amplify
на gitter , но это Address
кодировка /шифрование просто нигде не документировано ...