Публикация в AWS SNS для определенного пользователя с помощью идентификатора Cognito

Здесь я пытаюсь отправить уведомление через SNS и APNS, когда конкретный пользователь является частью недавно добавленного элемента DynamoDB. Я хочу отправить его пользователям Cognito Identity ID, а не на токен устройства.

Поэтому лямбда должна срабатывать при добавлении элемента, а затем просматривать список идентификаторов Cognito Identity, который также является частью элемента.

Затем предполагается, что Lambda публикует push-уведомления для каждого идентификатора Cognito Identity ID.

Все устройства зарегистрированы как конечные точки в пределах sns. Я также сохраняю Cognito Identity ID в строке «пользовательские данные» для конечной точки.

Но я не нашел способа отправлять уведомления прямо на Cognito Identity ID. Должен ли я добавить тему для каждого пользователя и отправить уведомление в эту тему? Или мне нужно хранить другую таблицу DynamoDB для сопоставления идентификаторов Cognito Identity с токенами устройств? Было бы здорово, если бы кто-то знал более простой и не слишком дорогой способ!

Спасибо!

Ответы на вопрос(1)

Решение Вопроса

Если вы отправляете Push-уведомления через SNS в APNS или GCM, вам сначала нужно создать конечную точку платформы SNS для каждого токена устройства, зарегистрированного для Push-уведомлений. Получив конечную точку SNS, вам необходимо сопоставить эту конечную точку с идентификатором Cognito Identity ID в пользовательской таблице или другой таблице сопоставления.

Когда новый элемент добавляется в DynamoDB, обработчику событий (Lambda) необходимо сопоставить входящий идентификатор Cognito Identity ID с конечной точкой платформы SNS в таблице пользователей, а затем он может направить публикацию на эту одну конечную точку.

Вам не нужно создавать тему SNS для отправки Push на отдельные конечные точки.

 weka127 мая 2016 г., 09:57
Спасибо! Это именно то, что мне нужно было знать! Я надеялся, что доступ к конечным точкам будет возможен по значению, хранящемуся в столбце «Данные пользователя» конкретной конечной точки. Знайте, что я просто храню конечные точки в списке для каждого пользователя в моей пользовательской таблице.
 KMC13 дек. 2016 г., 15:30
Мне также нужна эта функция в моем мобильном приложении. Я настроил лямбда-функцию, которая будет запускаться при загрузке нового файла на S3. Я структурировал имя файла таким образом, чтобы оно содержало информацию «from» и «To», например «fromuser_touser.txt». Но я не могу найти Cognito API, который бы возвращал хранилища атрибутов как часть профиля пользователя. (Я думаю о хранении конечной точки как атрибута). Знаете ли вы, есть ли такой API?

Ваш ответ на вопрос