События приложения 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"])
НТН
Документация найдена здесь.