2017-10-16 18 views
0

J'ai une application SNS amazon (GCM). Je l'ai configuré pour déclencher une fonction lambda à exécuter lors de la création d'un nouveau point de terminaison de plate-forme. J'ai besoin d'ajouter le point de terminaison de la plateforme à ma base de données d'utilisateurs. Le nom d'utilisateur associé au point de terminaison est envoyé en tant que "Données utilisateur".Les événements d'application SNS obtiennent des données d'utilisateur à partir du point d'extrémité

Je souhaite utiliser la fonction lambda pour ajouter le point de terminaison arn à l'entrée DB de l'utilisateur.

Lorsque j'obtiens les données JSON à lambda, la seule chose utile que j'ai est l'ARN du point de terminaison du nouveau jeton. Les données de l'utilisateur ne sont pas envoyées. Par conséquent, je dois être capable de le rechercher en utilisant boto, mais je n'ai pas été en mesure de trouver un moyen de le faire. Comment rechercher les données utilisateur en fonction des points de terminaison ARN?

données JSON données lambda funciton:

{ 
 
    "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\"}"} 
 
    } 
 
}

enter image description here

Répondre

1

Boto3 a une méthode qui SNS ressemble à ce que vous cherchez: GetEndpointAttributes.

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

HTH

Documentation trouvé here.

+0

Je ne peux pas croire que j'ai négligé cela. J'ai regardé cette page pendant des heures hier, essayant tout. JE VOUS REMERCIE! – Reid