Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Utilisez une fonction Lambda pour traiter les notifications Amazon Simple Notification Service (Amazon SNS). Amazon SNS prend en charge les fonctions Lambda en tant que cibles pour les messages envoyés à une rubrique. Vous pouvez abonner votre fonction à des rubriques du même compte ou d’autres comptes AWS . Pour voir une procédure, consultez Tutoriel : Utilisation AWS Lambda avec Amazon Simple Notification Service.
Lambda prend en charge les déclencheurs SNS pour les rubriques SNS standard uniquement. Les rubriques FIFO ne sont pas prises en charge.
Lambda traite les messages SNS de manière asynchrone en les mettant en file d'attente et en gérant les nouvelles tentatives. Si Amazon SNS ne peut pas atteindre Lambda ou si le message est rejeté, Amazon SNS effectue de nouvelles tentatives à intervalles croissants pendant plusieurs heures. Pour plus de détails, consultez la section Fiabilité
Avertissement
Les appels asynchrones Lambda traitent chaque événement au moins une fois, et le traitement des enregistrements peut être dupliqué. Pour éviter les problèmes potentiels liés à des événements dupliqués, nous vous recommandons vivement de rendre votre code de fonction idempotent. Pour en savoir plus, consultez Comment rendre ma fonction Lambda idempotente
Rubriques
Ajout d’une rubrique Amazon SNS comme déclencheur de fonction Lambda à l’aide de la console
Pour ajouter une rubrique SNS comme déclencheur d’une fonction Lambda, le moyen le plus simple consiste à utiliser la console Lambda. Lorsque vous ajoutez le déclencheur via la console, Lambda configure automatiquement les autorisations et les abonnements nécessaires pour commencer à recevoir des événements provenant de la rubrique SNS.
Pour ajouter une rubrique SNS comme déclencheur d’une fonction Lambda (console)
Ouvrez la page Functions
(Fonctions) de la console Lambda. -
Choisissez le nom de la fonction pour laquelle vous souhaitez ajouter le déclencheur.
-
Choisissez Configuration, puis Déclencheurs.
-
Choisissez Add trigger (Ajouter déclencheur).
-
Sous Configuration du déclencheur, dans le menu déroulant, choisissez SNS.
-
Pour Rubrique SNS, choisissez la rubrique SNS à laquelle vous abonner.
Ajout manuel d’une rubrique Amazon SNS comme déclencheur de fonction Lambda
Pour configurer manuellement un déclencheur SNS pour une fonction Lambda, vous devez suivre les étapes suivantes :
-
Définir une stratégie basée sur les ressources pour votre fonction afin de permettre à SNS de l’invoquer.
-
Abonner votre fonction Lambda à la rubrique Amazon SNS.
Note
Si votre rubrique SNS et votre fonction Lambda se trouvent sur des comptes AWS différents, vous devez également accorder des autorisations supplémentaires pour autoriser les abonnements entre comptes à la rubrique SNS. Pour plus d’informations, consultez Accorder une autorisation multicompte pour l’abonnement Amazon SNS.
Vous pouvez utiliser le AWS Command Line Interface (AWS CLI) pour effectuer ces deux étapes. Tout d’abord, pour définir une politique basée sur les ressources pour une fonction Lambda qui autorise les invocations SNS, utilisez la commande AWS CLI suivante. Assurez-vous de remplacer la valeur de --function-name
par le nom de votre fonction Lambda et la valeur de --source-arn
par l’ARN de votre rubrique SNS.
aws lambda add-permission --function-name
example-function
\ --source-arnarn:aws:sns:us-east-1:123456789012:sns-topic-for-lambda
\ --statement-id function-with-sns --action "lambda:InvokeFunction" \ --principal sns.amazonaws.com
Pour abonner votre fonction à la rubrique SNS, utilisez la AWS CLI commande suivante. Remplacez la valeur de --topic-arn
par le nom de votre rubrique ARN et la valeur de --notification-endpoint
par l’ARN de votre fonction Lambda.
aws sns subscribe --protocol lambda \ --region us-east-1 \ --topic-arn
arn:aws:sns:us-east-1:123456789012:sns-topic-for-lambda
\ --notification-endpointarn:aws:lambda:us-east-1:123456789012:function:example-function
Exemple de forme d’évènement SNS
Amazon SNS appelle votre fonction de façon asynchrone avec un événement contenant un message et des métadonnées.
Exemple Événement de message Amazon SNS
{
"Records": [
{
"EventVersion": "1.0",
"EventSubscriptionArn": "arn:aws:sns:us-east-1:123456789012:sns-lambda:21be56ed-a058-49f5-8c98-aedd2564c486",
"EventSource": "aws:sns",
"Sns": {
"SignatureVersion": "1",
"Timestamp": "2019-01-02T12:45:07.000Z",
"Signature": "tcc6faL2yUC6dgZdmrwh1Y4cGa/ebXEkAi6RibDsvpi+tE/1+82j...65r==",
"SigningCertURL": "https://sns.us-east-1.amazonaws.com/SimpleNotificationService-ac565b8b1a6c5d002d285f9598aa1d9b.pem",
"MessageId": "95df01b4-ee98-5cb9-9903-4c221d41eb5e",
"Message": "Hello from SNS!",
"MessageAttributes": {
"Test": {
"Type": "String",
"Value": "TestString"
},
"TestBinary": {
"Type": "Binary",
"Value": "TestBinary"
}
},
"Type": "Notification",
"UnsubscribeUrl": "https://sns.us-east-1.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:us-east-1:123456789012:test-lambda:21be56ed-a058-49f5-8c98-aedd2564c486",
"TopicArn":"arn:aws:sns:us-east-1:123456789012:sns-lambda",
"Subject": "TestInvoke"
}
}
]
}