AWS Kinesis: адрес пользователя в событии, закодированный / зашифрованный - PullRequest
1 голос
/ 29 октября 2019

В моем мобильном приложении 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 кодировка /шифрование просто нигде не документировано ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...