Share Your AWS re:Post Experience - Quick 3 Question Survey
Help us improve AWS re:Post! We're interested in understanding how you use re:Post and its impact on your AWS journey. Please take a moment to complete our brief 3-question survey.
Comment puis-je configurer une notification d'événement Amazon S3 pour invoquer une fonction Lambda qui se trouve dans un autre compte AWS ?
Je souhaite que mon compartiment Amazon Simple Storage Service (Amazon S3) invoque une fonction AWS Lambda dans un autre compte AWS.
Résolution
Pour configurer votre compartiment Amazon S3 de manière qu'il invoque une fonction Lambda dans un autre compte AWS, procédez comme suit :
- Mettez à jour la stratégie d'autorisations basée sur les ressources de votre fonction Lambda pour accorder l'autorisation d'invocation à Amazon S3.
- Créez une notification d'événement Amazon S3 qui invoque votre fonction Lambda.
Important : La fonction Lambda doit se trouver dans la même région AWS que votre compartiment S3.
Pour plus d'informations sur la migration de fonctions, consultez la section Comment migrer une fonction Lambda vers un autre compte AWS ou une autre région à l'aide de la console Lambda ?
Mettre à jour la stratégie d'autorisations basée sur les ressources de votre fonction Lambda pour accorder l'autorisation d'invocation à Amazon S3
Console de gestion AWS
Pour mettre à jour la stratégie d'autorisations basée sur les ressources de votre fonction Lambda afin d'accorder l'autorisation d'invocation à Amazon S3, procédez comme suit :
- Ouvrez la page Fonctions de la console Lambda avec le compte AWS dans lequel se trouve votre fonction Lambda.
- Choisissez le nom de la fonction Lambda que vous souhaitez voir invoquer par Amazon S3.
- Dans l'onglet Configuration, sélectionnez Autorisations.
- Dans la section Stratégie basée sur les ressources, sélectionnez Ajouter des autorisations.
- Dans le volet Document de stratégie, sélectionnez Service AWS. La liste déroulante Service s'affiche.
- Dans la liste déroulante Service, sélectionnez S3 pour afficher d'autres champs.
- Pour ID d’instruction, saisissez un ID d’instruction unique pour différencier l’instruction que vous créez dans le cadre de la stratégie.
- Dans le champ Compte source, saisissez l’ID de compte AWS du compte qui héberge votre compartiment S3.
- Pour ARN source, saisissez l'ARN de votre compartiment S3. Utilisez le format suivant :
Remarque : Remplacez bucket_name par le nom de votre compartiment S3.arn:aws:s3:::bucket_name
- Dans Action, sélectionnez Lambda:InvokeFunction dans la liste déroulante.
- Sélectionnez Enregistrer.
Pour plus d'informations, consultez la section Utilisation de stratégies basées sur les ressources dans Lambda.
AWS CLI
Remarque : Si des erreurs surviennent lorsque vous exécutez des commandes de l’interface de la ligne de commande AWS (AWS CLI), consultez la section Résoudre les erreurs liées à l’AWS CLI. Vérifiez également que vous utilisez bien la version la plus récente de l’AWS CLI.
Mettez à jour la stratégie d'autorisations basée sur les ressources de votre fonction Lambda pour accorder l'autorisation d'invocation à Amazon S3 avec l'API add-permission similaire à l’API suivante :
aws lambda add-permission \--function-name LambdaFunction_name \ --action lambda:InvokeFunction \ --principal s3.amazonaws.com \ --source-arn arn:aws:s3:::bucket_name \ --source-account account-id \ --statement-id "unique_statement_ID"
Remarque : Remplacez LambdaFunction_name, bucket_name et unique_statement_ID par vos variables.
Créer une notification d'événement Amazon S3 qui invoque votre fonction Lambda
Console de gestion AWS
Suivez les instructions pour activer et configurer les notifications d'événements à l'aide de la console Amazon S3.
AWS CLI
Pour créer une notification d'événement Amazon S3 qui invoque votre fonction Lambda, utilisez la commande put-bucket-notification-configuration.
Important : Avant d'utiliser la commande put-bucket-notification, vérifiez qu'aucune autre notification d'événement n'est configurée sur votre compartiment S3. La commande put-bucket-notification-configuration effectue une opération de remplacement sur toute configuration de notification existante au lieu d'un ajout.
Pour vérifier si votre compartiment contient déjà des notifications d'événements, exécutez la commande suivante :
aws s3api get-bucket-notification-configuration --bucket bucket_name
Si la commande précédente renvoie un objet JSON vide ou aucune réponse, cela signifie que vous n'avez aucune configuration de notification d'événement existante. Créez et enregistrez un nouveau fichier appelé notification.json avec la configuration suivante :
{ "LambdaFunctionConfigurations": [ { "Id": "my-lambda-function-s3-event-configuration", "LambdaFunctionArn": "LambdaFunction_ARN", "Events": [ "s3:ObjectCreated:" ], "Filter": { "Key": { "FilterRules": [ { "Name": "prefix"|"suffix", "Value": "string" } ] } } } ] }
Remarque : Remplacez LambdaFunction_ARN par l'ARN de votre fonction Lambda. Remplacez le préfixe et le suffixe par vos variables pour la règle de filtrage.
Si la configuration get-bucket-notification-configuration renvoie une configuration JSON de notification d'événement existante, enregistrez la configuration JSON existante dans un fichier appelé notification.json. Ajoutez votre nouvelle configuration de notification Lambda à une clé LambdaFunctionConfigurations existante ou créez une nouvelle clé à la syntaxe JSON illustrée dans l'exemple suivant. Ajoutez la clé au fichier notification.json :
{ ... # Non Lambda event configurations like SNS, SQS etc. , "LambdaFunctionConfigurations": [ { "Id": "my-lambda-function-s3-event-configuration", "LambdaFunctionArn": "LambdaFunction_ARN", "Events": [ "s3:ObjectCreated:" ], "Filter": { "Key": { "FilterRules": [ { "Name": "prefix"|"suffix", "Value": "string" } ] } } }, {...}, #Other pre-existing Lambda Function configurations ] }
Après avoir créé le fichier notification.json, exécutez la commande suivante pour mettre à jour la configuration de votre notification d'événement S3 :
aws s3api put-bucket-notification-configuration \ --bucket bucket_name \ --notification-configuration file://notification.json
Remarque : Remplacez bucket_name par le nom de votre compartiment S3.
Tester la fonction Lambda
Pour tester la fonction Lambda à l'aide de la console Lambda, consultez la section Tester votre fonction Lambda avec un événement fictif. Si votre fonction n'est pas invoquée par la notification d'événement, consultez la section Pourquoi ma notification d'événement Amazon S3 n'invoque-t-elle pas ma fonction Lambda ?
Informations connexes
Comment puis-je autoriser ma fonction Lambda à accéder à mon compartiment Amazon S3 ?

Contenus pertinents
- demandé il y a un anlg...
- demandé il y a 8 moislg...
- demandé il y a 7 moislg...
- demandé il y a 9 moislg...
- demandé il y a 11 jourslg...
- AWS OFFICIELA mis à jour il y a un an
- AWS OFFICIELA mis à jour il y a 2 ans
- AWS OFFICIELA mis à jour il y a 3 ans