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.
Didacticiel : utilisation d’un déclencheur Amazon S3 pour invoquer une fonction Lambda
Dans ce didacticiel, vous allez utiliser la console pour créer une fonction Lambda et configurer un déclencheur pour un compartiment Amazon Simple Storage Service (Amazon S3). Chaque fois que vous ajoutez un objet à votre compartiment Amazon S3, votre fonction s'exécute et affiche le type d'objet dans Amazon CloudWatch Logs.
![Flux de données entre un compartiment S3, une fonction Lambda et des journaux CloudWatch](images/services-s3-example/s3_tut_config.png)
Ce didacticiel explique comment :
-
Créez un compartiment Amazon S3.
-
Créez une fonction Lambda qui renvoie le type d’objet des objets dans un compartiment Amazon S3.
-
Configurez un déclencheur Lambda qui invoque votre fonction lorsque des objets sont chargés dans votre compartiment.
-
Testez votre fonction, d’abord avec un événement fictif, puis en utilisant le déclencheur.
En suivant ces étapes, vous apprendrez à configurer une fonction Lambda pour qu’elle s’exécute chaque fois que des objets sont ajoutés ou supprimés d’un compartiment Amazon S3. Vous pouvez compléter ce didacticiel en n’utilisant que la AWS Management Console.
Prérequis
Si vous n'en avez pas Compte AWS, procédez comme suit pour en créer un.
Pour vous inscrire à un Compte AWS
Suivez les instructions en ligne.
Dans le cadre de la procédure d‘inscription, vous recevrez un appel téléphonique et vous saisirez un code de vérification en utilisant le clavier numérique du téléphone.
Lorsque vous vous inscrivez à un Compte AWS, un Utilisateur racine d'un compte AWSest créé. Par défaut, seul l‘utilisateur racine a accès à l‘ensemble des AWS services et des ressources de ce compte. La meilleure pratique de sécurité consiste à attribuer un accès administratif à un utilisateur, et à utiliser uniquement l‘utilisateur racine pour effectuer les tâches nécessitant un accès utilisateur racine.
AWS vous envoie un e-mail de confirmation une fois le processus d'inscription terminé. Vous pouvez afficher l‘activité en cours de votre compte et gérer votre compte à tout moment en accédant à https://aws.amazon.com/
Après vous être inscrit à un Compte AWS, sécurisez Utilisateur racine d'un compte AWS AWS IAM Identity Center, activez et créez un utilisateur administratif afin de ne pas utiliser l'utilisateur root pour les tâches quotidiennes.
Sécurisez votre Utilisateur racine d'un compte AWS
-
Connectez-vous en AWS Management Console
tant que propriétaire du compte en choisissant Utilisateur root et en saisissant votre adresse Compte AWS e-mail. Sur la page suivante, saisissez votre mot de passe. Pour obtenir de l‘aide pour vous connecter en utilisant l‘utilisateur racine, consultez Connexion en tant qu‘utilisateur racine dans le Guide de l‘utilisateur Connexion à AWS .
-
Activez l'authentification multifactorielle (MFA) pour votre utilisateur root.
Pour obtenir des instructions, voir Activer un MFA périphérique virtuel pour votre utilisateur Compte AWS root (console) dans le guide de IAM l'utilisateur.
Création d'un utilisateur doté d'un accès administratif
-
Activez IAM Identity Center.
Pour obtenir des instructions, consultez Activation d’ AWS IAM Identity Center dans le Guide de l’utilisateur AWS IAM Identity Center .
-
Dans IAM Identity Center, accordez un accès administratif à un utilisateur.
Pour un didacticiel sur l'utilisation du Répertoire IAM Identity Center comme source d'identité, voir Configurer l'accès utilisateur par défaut Répertoire IAM Identity Center dans le Guide de AWS IAM Identity Center l'utilisateur.
Connexion en tant qu‘utilisateur doté d'un accès administratif
-
Pour vous connecter avec votre utilisateur IAM Identity Center, utilisez l'URLidentifiant envoyé à votre adresse e-mail lorsque vous avez créé l'utilisateur IAM Identity Center.
Pour obtenir de l'aide pour vous connecter en utilisant un utilisateur d'IAMIdentity Center, consultez la section Connexion au portail AWS d'accès dans le guide de Connexion à AWS l'utilisateur.
Attribution d'un accès à d'autres utilisateurs
-
Dans IAM Identity Center, créez un ensemble d'autorisations conforme à la meilleure pratique consistant à appliquer les autorisations du moindre privilège.
Pour obtenir des instructions, consultez Création d’un ensemble d’autorisations dans le Guide de l’utilisateur AWS IAM Identity Center .
-
Attribuez des utilisateurs à un groupe, puis attribuez un accès par authentification unique au groupe.
Pour obtenir des instructions, consultez Ajout de groupes dans le Guide de l’utilisateur AWS IAM Identity Center .
Créer un compartiment Amazon S3
![Première étape : créer le compartiment Amazon S3](images/services-s3-example/s3trigger_tut_steps1.png)
Pour créer un compartiment Amazon S3
-
Ouvrez la console Amazon S3
et sélectionnez la page Compartiments. -
Choisissez Create bucket (Créer un compartiment).
-
Sous Configuration générale, procédez comme suit :
-
Pour le nom du compartiment, saisissez un nom unique au monde qui respecte les règles de dénomination du compartiment Amazon S3. Les noms de compartiment peuvent contenir uniquement des lettres minuscules, des chiffres, de points (.) et des traits d’union (-).
-
Choisissez une région dans Région AWS . Plus loin dans le didacticiel, vous devez créer votre fonction Lambda dans la même région.
-
-
Conservez les valeurs par défaut de toutes les autres options et choisissez Créer un compartiment.
Charger un objet de test dans votre compartiment
![Étape suivante : télécharger un objet de test](images/services-s3-example/s3trigger_tut_steps2.png)
Pour charger un objet de test
-
Ouvrez la page Compartiments
de la console Amazon S3 et choisissez le compartiment que vous avez créé à l’étape précédente. -
Sélectionnez Charger.
-
Choisissez Ajouter des fichiers et sélectionnez l'objet que vous souhaitez télécharger. Vous pouvez sélectionner n'importe quel fichier (par exemple,
HappyFace.jpg
). -
Choisissez Ouvrir, puis Charger.
Plus loin dans le didacticiel, vous testerez votre fonction Lambda à l'aide de cet objet.
Créer une stratégie d’autorisations
![Étape suivante : créer la politique d'autorisations pour Lambda](images/services-s3-example/s3trigger_tut_steps3.png)
Créez une politique d'autorisation qui permet à Lambda d'obtenir des objets depuis un compartiment Amazon S3 et d'écrire dans Amazon CloudWatch Logs.
Pour créer la politique
-
Ouvrez la page Politiques
de la IAM console. -
Choisissez Create Policy (Créer une politique).
-
Choisissez l'JSONonglet, puis collez la politique personnalisée suivante dans l'JSONéditeur.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:PutLogEvents", "logs:CreateLogGroup", "logs:CreateLogStream" ], "Resource": "arn:aws:logs:*:*:*" }, { "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": "arn:aws:s3:::*/*" } ] }
-
Choisissez Suivant : Balises.
-
Choisissez Suivant : Vérification.
-
Sous Examiner une stratégie, pour le Nom de la stratégie, saisissez
s3-trigger-tutorial
. -
Choisissez Créer une stratégie.
Créer un rôle d’exécution
![Étape suivante : créer le rôle d'exécution](images/services-s3-example/s3trigger_tut_steps4.png)
Un rôle d'exécution est un rôle AWS Identity and Access Management (IAM) qui accorde à une fonction Lambda l'autorisation d'accéder aux AWS services et aux ressources. Au cours de cette étape, créez un rôle d'exécution à l'aide de la politique d'autorisation que vous avez créée à l'étape précédente.
Pour créer un rôle d’exécution et attacher votre politique d’autorisations personnalisée
-
Ouvrez la page Rôles
de la IAM console. -
Sélectionnez Créer un rôle.
-
Pour le type d’entité de confiance, choisissez Service AWS , puis pour le cas d’utilisation, choisissez Lambda.
-
Choisissez Suivant.
-
Dans la zone de recherche de stratégie, entrez
s3-trigger-tutorial
. -
Dans les résultats de la recherche, sélectionnez la stratégie que vous avez créée (
s3-trigger-tutorial
), puis choisissez Suivant. -
Sous Role details (Détails du rôle), pour Role name (Nom du rôle), saisissez
lambda-s3-trigger-role
, puis sélectionnez Create role (Créer un rôle).
Créer la fonction Lambda
![Étape suivante : créer la fonction Lambda](images/services-s3-example/s3trigger_tut_steps5.png)
Créez une fonction Lambda dans la console à l'aide de l'environnement d'exécution Python 3.12.
Pour créer la fonction Lambda
-
Ouvrez la page Functions
(Fonctions) de la console Lambda. -
Assurez-vous de travailler dans le même environnement que celui dans Région AWS lequel vous avez créé votre compartiment Amazon S3. Vous pouvez modifier votre région à l’aide de la liste déroulante en haut de l’écran.
-
Sélectionnez Create function (Créer une fonction).
-
Choisissez Créer à partir de zéro.
-
Sous Basic information (Informations de base), procédez comme suit :
-
Sous Nom de la fonction, saisissez
s3-trigger-tutorial
. -
Pour Runtime, choisissez Python 3.12.
-
Pour Architecture, choisissez x86_64.
-
-
Dans l’onglet Modifier le rôle d’exécution par défaut, procédez comme suit :
-
Ouvrez l’onglet, puis choisissez Utiliser un rôle existant.
-
Sélectionnez le
lambda-s3-trigger-role
que vous avez créé précédemment.
-
-
Sélectionnez Create function (Créer une fonction).
Déployer le code de la fonction
![Étape suivante : déployer le code de fonction](images/services-s3-example/s3trigger_tut_steps6.png)
Ce didacticiel utilise le moteur d'exécution Python 3.12, mais nous avons également fourni des exemples de fichiers de code pour d'autres environnements d'exécution. Vous pouvez sélectionner l’onglet dans la zone suivante pour voir le code d’exécution qui vous intéresse.
La fonction Lambda récupère le nom clé de l'objet chargé et le nom du compartiment à partir du event
paramètre qu'il reçoit d'Amazon S3. La fonction utilise ensuite la méthode get_object
Pour déployer le code de la fonction
-
Choisissez l'onglet Python dans la zone suivante et copiez le code.
-
Dans le volet Source du code de la console Lambda, collez le code dans le fichier lambda_function.py.
-
Choisissez Deploy (Déployer).
Création d’un déclencheur Amazon S3
![Étape suivante : créer le déclencheur S3](images/services-s3-example/s3trigger_tut_steps7.png)
Pour créer le déclencheur Amazon S3
-
Dans le volet de Présentation de la fonction, choisissez Ajouter un déclencheur.
-
Sélectionnez S3.
-
Sous Compartiment, sélectionnez le compartiment que vous avez créé précédemment dans le didacticiel.
-
Sous Types d'événements, assurez-vous que l'option Tous les événements de création d'objets est sélectionnée.
-
Sous Invocation récursive, cochez la case pour confirmer qu’il n’est pas recommandé d’utiliser le même compartiment Amazon S3 pour les entrées et les sorties.
-
Choisissez Ajouter.
Note
Lorsque vous créez un déclencheur Amazon S3 pour une fonction Lambda à l'aide de la console Lambda, Amazon S3 configure une notification d'événement sur le compartiment que vous spécifiez. Avant de configurer cette notification d'événement, Amazon S3 effectue une série de vérifications pour confirmer que la destination de l'événement existe et dispose des IAM politiques requises. Amazon S3 effectue également ces tests sur toutes les autres notifications d'événements configurées pour ce compartiment.
En raison de cette vérification, si le compartiment a déjà configuré des destinations d'événements pour des ressources qui n'existent plus ou pour des ressources qui ne disposent pas des politiques d'autorisation requises, Amazon S3 ne sera pas en mesure de créer la nouvelle notification d'événement. Vous verrez le message d'erreur suivant indiquant que votre déclencheur n'a pas pu être créé :
An error occurred when creating the trigger: Unable to validate the following destination configurations.
Vous pouvez voir cette erreur si vous avez précédemment configuré un déclencheur pour une autre fonction Lambda utilisant le même compartiment, et si vous avez depuis supprimé la fonction ou modifié ses politiques d'autorisation.
Test de votre fonction Lambda à l’aide d’un événement fictif
![Schéma de flux de travail du didacticiel vous montrant que vous êtes à l’étape du test avec un événement fictif](images/services-s3-example/s3trigger_tut_steps8.png)
Pour tester la fonction Lambda à l’aide d’un événement fictif
-
Sur la page de console Lambda de votre fonction, choisissez l'onglet Test.
-
Dans Event name (Nom de l’événement), saisissez
MyTestEvent
. -
Dans l'événement JSON, collez l'événement de test suivant. Assurez-vous de remplacer les valeurs suivantes :
-
Remplacez
us-east-1
par la région dans laquelle vous avez créé votre compartiment Amazon S3. -
Remplacez les deux instances de
amzn-s3-demo-bucket
par le nom de votre propre compartiment Amazon S3. -
Remplacez
test%2FKey
par le nom de l’objet de test que vous avez chargé précédemment dans votre compartiment (par exemple,HappyFace.jpg
).
{ "Records": [ { "eventVersion": "2.0", "eventSource": "aws:s3", "awsRegion": "
us-east-1
", "eventTime": "1970-01-01T00:00:00.000Z", "eventName": "ObjectCreated:Put", "userIdentity": { "principalId": "EXAMPLE" }, "requestParameters": { "sourceIPAddress": "127.0.0.1" }, "responseElements": { "x-amz-request-id": "EXAMPLE123456789", "x-amz-id-2": "EXAMPLE123/5678abcdefghijklambdaisawesome/mnopqrstuvwxyzABCDEFGH" }, "s3": { "s3SchemaVersion": "1.0", "configurationId": "testConfigRule", "bucket": { "name": "amzn-s3-demo-bucket
", "ownerIdentity": { "principalId": "EXAMPLE" }, "arn": "arn:aws:s3:::amzn-s3-demo-bucket
" }, "object": { "key": "test%2Fkey
", "size": 1024, "eTag": "0123456789abcdef0123456789abcdef", "sequencer": "0A1B2C3D4E5F678901" } } } ] } -
-
Choisissez Save (Enregistrer).
-
Sélectionnez Tester).
-
Si votre fonction s’exécute correctement, vous obtiendrez un résultat similaire à celui qui suit dans l’onglet Résultats de l’exécution.
Response "image/jpeg" Function Logs START RequestId: 12b3cae7-5f4e-415e-93e6-416b8f8b66e6 Version: $LATEST 2021-02-18T21:40:59.280Z 12b3cae7-5f4e-415e-93e6-416b8f8b66e6 INFO INPUT BUCKET AND KEY: { Bucket: 'amzn-s3-demo-bucket', Key: 'HappyFace.jpg' } 2021-02-18T21:41:00.215Z 12b3cae7-5f4e-415e-93e6-416b8f8b66e6 INFO CONTENT TYPE: image/jpeg END RequestId: 12b3cae7-5f4e-415e-93e6-416b8f8b66e6 REPORT RequestId: 12b3cae7-5f4e-415e-93e6-416b8f8b66e6 Duration: 976.25 ms Billed Duration: 977 ms Memory Size: 128 MB Max Memory Used: 90 MB Init Duration: 430.47 ms Request ID 12b3cae7-5f4e-415e-93e6-416b8f8b66e6
Test de la fonction Lambda avec le déclencheur Amazon S3
![Schéma de flux de travail du didacticiel vous montrant que vous êtes à l’étape du test en utilisant le déclencheur S3](images/services-s3-example/s3trigger_tut_steps9.png)
Pour tester votre fonction avec le déclencheur configuré, téléchargez un objet dans votre compartiment Amazon S3 à l'aide de la console. Pour vérifier que votre fonction Lambda s'est exécutée comme prévu, utilisez CloudWatch Logs pour afficher le résultat de votre fonction.
Pour charger un objet dans votre compartiment Amazon S3
-
Ouvrez la page Buckets
de la console Amazon S3 et choisissez le bucket que vous avez créé précédemment. -
Sélectionnez Charger.
-
Choisissez Ajouter des fichiers et utilisez le sélecteur de fichiers pour choisir l’objet que vous souhaitez charger. Cet objet peut être n’importe quel fichier que vous choisissez.
-
Choisissez Ouvrir, puis Charger.
Pour vérifier l'invocation de la fonction à l'aide CloudWatch de Logs
-
Ouvrez la CloudWatch
console. -
Assurez-vous de travailler de la même manière que celle dans laquelle Région AWS vous avez créé votre fonction Lambda. Vous pouvez modifier votre région à l’aide de la liste déroulante en haut de l’écran.
-
Choisissez Journaux, puis Groupes de journaux.
-
Choisissez le groupe de journaux de votre fonction (
/aws/lambda/s3-trigger-tutorial
). -
Sous Flux de journaux, sélectionnez le flux de journaux le plus récent.
-
Si votre fonction a été invoquée correctement en réponse à votre déclencheur Amazon S3, vous verrez un résultat similaire à ce qui suit. Le
CONTENT TYPE
que vous voyez dépend du type de fichier que vous avez chargé dans votre compartiment.2022-05-09T23:17:28.702Z 0cae7f5a-b0af-4c73-8563-a3430333cc10 INFO CONTENT TYPE:
image/jpeg
Nettoyage de vos ressources
Vous pouvez maintenant supprimer les ressources que vous avez créées pour ce didacticiel, sauf si vous souhaitez les conserver. En supprimant AWS les ressources que vous n'utilisez plus, vous évitez des frais inutiles pour votre Compte AWS.
Pour supprimer la fonction Lambda
-
Ouvrez la page Functions (Fonctions)
de la console Lambda. -
Sélectionnez la fonction que vous avez créée.
-
Sélectionnez Actions, Supprimer.
-
Saisissez
delete
dans la zone de saisie de texte et choisissez Delete (Supprimer).
Pour supprimer le rôle d’exécution
-
Ouvrez la page Rôles
de la IAM console. -
Sélectionnez le rôle d’exécution que vous avez créé.
-
Sélectionnez Delete (Supprimer).
-
Saisissez le nom du rôle dans le champ de saisie de texte et choisissez Delete (Supprimer).
Pour supprimer le compartiment S3
-
Ouvrez la console Amazon S3
. -
Sélectionnez le compartiment que vous avez créé.
-
Sélectionnez Delete (Supprimer).
-
Saisissez le nom du compartiment dans le champ de saisie de texte.
-
Choisissez Supprimer le compartiment.
Étapes suivantes
DansDidacticiel : Utilisation d'un déclencheur Amazon S3 pour créer des images miniatures, le déclencheur Amazon S3 invoque une fonction qui crée une image miniature pour chaque fichier image chargé dans un compartiment. Ce didacticiel nécessite un niveau modéré de connaissance du AWS domaine Lambda. Il montre comment créer des ressources à l'aide de AWS Command Line Interface (AWS CLI) et comment créer un package de déploiement d'archives de fichiers .zip pour la fonction et ses dépendances.