События приложения SNS получают данные пользователя от конечной точки

У меня есть приложение Amazon SNS (GCM). Я настроил его для запуска лямбда-функции, которая будет выполняться при создании новой конечной точки платформы. Мне нужно добавить конечную точку платформы в базу данных пользователей. Имя пользователя, связанное с конечной точкой, отправляется как "Данные пользователя".

Я хочу использовать лямбда-функцию для добавления конечной точки arn к записи БД пользователей.

Когда я передаю данные JSON в lambda, единственная полезная вещь, которую я имею, - это конечная точка ARN нового токена. Данные пользователя не отправляются. Поэтому мне нужно иметь возможность искать это с помощью boto, но я не смог найти способ сделать это. Как бы я посмотрел пользовательские данные с учетом конечных точек ARN?

Данные JSON, переданные лямбда-функции:

{
  "Type" : "Notification",
  "MessageId" : "afb28e95-f8cb-5622-a6ad-dccb37f6b07a",
  "TopicArn" : "<Censored>",
  "Subject" : "EndpointCreated event message",
  "Message" : "{\"EndpointArn\":\"<Censored>\",\"EventType\":\"EndpointCreated\",\"Resource\":\<Censored>\",\"Service\":\"SNS\",\"Time\":\"2017-10-16T15:15:09.097Z\",\"Type\":\"EndpointCreated\"}",
  "Timestamp" : "2017-10-16T15:15:09.181Z",
  "SignatureVersion" : "1",
  "Signature" : "<Censored>",
  "SigningCertURL" : "<Censored>",
  "UnsubscribeURL" : "https://sns.us-east-1.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=<Censored>",
  "Attributes" : {
    "EndpointArn" : "<Censored>",
    "EventType" : "EndpointCreated",
    "Resource" : "<Censored>",
    "Service" : "SNS",
    "Time" : "2017-10-16T15:15:09.097Z",
    "Type" : "EndpointCreated"
  },
  "MessageAttributes" : {
    "AWS.SNS.OldAttributeTransport" : {"Type":"String","Value":"{\"EndpointArn\":\"<Censored>\",\"EventType\":\"EndpointCreated\",\"Resource\":\"<Censored>\",\"Service\":\"SNS\",\"Time\":\"2017-10-16T15:15:09.097Z\",\"Type\":\"EndpointCreated\"}"}
  }
}

1 ответ

Решение

В Boto3 есть метод SNS, который звучит так, как вы ищете: GetEndpointAttributes,

import boto3
client = boto3.client('sns')
response = client.get_endpoint_attributes(EndpointArn="INSERT-ARN")
print(response["Attributes"]["CustomUserData"])

НТН

Документация найдена здесь.

Другие вопросы по тегам