Abonnement d'une fonction Lambda aux notifications d'événements provenant de compartiments S3 dans différentes régions AWS - Recommandations AWS

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.

Abonnement d'une fonction Lambda aux notifications d'événements provenant de compartiments S3 dans différentes régions AWS

Créée par Suresh Konathala, Andrew Preston et Arindom Sarkar

Récapitulatif

Les notifications d'événements Amazon Simple Storage Service (Amazon S3) publient des notifications pour certains événements de votre compartiment S3 (par exemple, les événements créés, les événements de suppression d'objets ou les événements de restauration d'objets). Vous pouvez utiliser une fonction AWS Lambda pour traiter ces notifications conformément aux exigences de votre application. Cependant, la fonction Lambda ne peut pas s'abonner directement aux notifications provenant de compartiments S3 hébergés dans différentes régions AWS.

L'approche de ce modèle déploie un scénario de fanout pour traiter les notifications Amazon S3 provenant de compartiments S3 interrégionaux en utilisant une rubrique Amazon Simple Notification Service (Amazon SNS) pour chaque région. Ces rubriques SNS régionales envoient les notifications d'événements Amazon S3 à une file d'attente Amazon Simple Queue Service (Amazon SQS) située dans une région centrale qui contient également votre fonction Lambda. La fonction Lambda s'abonne à cette file d'attente SQS et traite les notifications d'événements conformément aux exigences de votre organisation.

Conditions préalables et limitations

Prérequis

Architecture

Le schéma suivant montre l'architecture de l'approche de ce modèle. 

Workflow utilise Amazon SNS, S3 et SQS pour traiter les notifications d'événements provenant de compartiments S3 interrégionaux.

Le schéma suivant illustre le flux de travail suivant :

  1. Amazon S3 envoie des notifications d'événements concernant les compartiments S3 (par exemple, un objet créé, un objet supprimé ou un objet restauré) à une rubrique SNS de la même région.

  2. La rubrique SNS publie l'événement dans une file d'attente SQS de la région centrale.

  3. La file d'attente SQS est configurée comme source d'événements pour votre fonction Lambda et met en mémoire tampon les messages d'événement de la fonction Lambda. 

  4. La fonction Lambda interroge la file d'attente SQS à la recherche de messages et traite les notifications d'événements Amazon S3 conformément aux exigences de votre application.

Pile technologique

  • Lambda

  • Amazon SNS

  • Amazon SQS

  • Amazon S3

Outils

  • AWS CLI — L'interface de ligne de commande AWS (AWS CLI) est un outil open source permettant d'interagir avec les services AWS par le biais de commandes dans votre shell de ligne de commande. Avec une configuration minimale, vous pouvez exécuter des commandes de l'interface de ligne de commande AWS qui mettent en œuvre des fonctionnalités équivalentes à celles fournies par la console de gestion AWS basée sur un navigateur à partir d'une invite de commande.

  • AWS CloudFormation — AWS vous CloudFormation aide à modéliser et à configurer vos ressources AWS, à les approvisionner rapidement et de manière cohérente, et à les gérer tout au long de leur cycle de vie. Vous pouvez utiliser un modèle pour décrire vos ressources et leurs dépendances, puis les lancer et les configurer ensemble sous forme de pile, au lieu de gérer les ressources individuellement. Vous pouvez gérer et approvisionner des piles sur plusieurs comptes AWS et régions AWS.

  • AWS Lambda — AWS Lambda est un service de calcul qui prend en charge l'exécution de code sans provisionner ni gérer de serveurs. Lambda exécute le code uniquement lorsque cela est nécessaire et se met à l’échelle automatiquement, qu’il s’agisse de quelques requêtes par jour ou de milliers de requêtes par seconde. Vous payez uniquement le temps de calcul que vous utilisez. Vous n'exposez aucuns frais quand votre code n'est pas exécuté.

  • Amazon SNS — Amazon Simple Notification Service (Amazon SNS) coordonne et gère la distribution ou l'envoi de messages entre les éditeurs et les clients, y compris les serveurs Web et les adresses e-mail. Les abonnés reçoivent tous les messages publiés dans les rubriques auxquelles ils sont abonnés, et tous les abonnés à une rubrique reçoivent les mêmes messages.

  • Amazon SQS — Amazon Simple Queue Service (Amazon SQS) propose une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de dissocier les systèmes et composants logiciels distribués. Amazon SQS prend en charge les files d'attente standard et FIFO.

Épopées

TâcheDescriptionCompétences requises

Créez une file d'attente SQS avec un déclencheur Lambda.

Connectez-vous à l'AWS Management Console et suivez les instructions du didacticiel Using Lambda with Amazon SQS de la documentation AWS Lambda pour créer les ressources suivantes dans votre région centrale :

  • Un rôle d'exécution Lambda

  • Une fonction Lambda pour traiter les événements Amazon S3

  • Une file d'attente SQS

Note

Assurez-vous de configurer la file d'attente SQS comme source d'événements pour votre fonction Lambda.

AWS DevOps, architecte du cloud
TâcheDescriptionCompétences requises

Créez une rubrique SNS pour recevoir des notifications d'événements Amazon S3.

Créez une rubrique SNS dans une région à partir de laquelle vous souhaitez recevoir des notifications d'événements Amazon S3. Pour plus d'informations à ce sujet, consultez la rubrique Création d'un réseau SNS dans la documentation Amazon SNS. 

Important

Assurez-vous d'enregistrer le nom de ressource Amazon (ARN) de votre rubrique SNS. 

AWS DevOps, architecte du cloud

Abonnez la rubrique SNS à la file d'attente SQS centrale.

Abonnez votre rubrique SNS à la file d'attente SQS hébergée par votre région centrale. Pour plus d'informations à ce sujet, consultez la section Abonnement à une rubrique SNS dans la documentation Amazon SNS.

AWS DevOps, architecte du cloud

Mettez à jour la politique d'accès de la rubrique SNS.

  1. Ouvrez la console Amazon SNS, choisissez Rubriques, puis choisissez la rubrique SNS que vous avez créée précédemment.

  2. Choisissez Modifier, puis développez la section Politique d'accès - facultative.

  3. Joignez la politique d'accès suivante à votre rubrique SNS pour sns:publish autoriser Amazon S3, puis choisissez Enregistrer :

{ "Version": "2012-10-17", "Statement": [ { "Sid": "0", "Effect": "Allow", "Principal": { "Service": "s3.amazonaws.com" }, "Action": "sns:Publish", "Resource": "arn:aws:sns:us-west-2::s3Events-SNSTopic-us-west-2" } ] }
AWS DevOps, architecte du cloud

Configurez des notifications pour chaque compartiment S3 de la région.

Configurez des notifications d'événements pour chaque compartiment S3 de la région. Pour plus d'informations à ce sujet, consultez la section Activation et configuration des notifications d'événements à l'aide de la console Amazon S3 dans la documentation Amazon S3.

Note

Dans la section Destination, choisissez le sujet SNS et spécifiez l'ARN du sujet SNS que vous avez créé précédemment.

AWS DevOps, architecte du cloud

Répétez cette épopée pour toutes les régions requises.

Important

Répétez les tâches de cette épopée pour chaque région dont vous souhaitez recevoir des notifications d'événements Amazon S3, y compris votre région centrale.

AWS DevOps, architecte du cloud

Ressources connexes