Comment configurer les notifications d'événement Amazon S3 pour appeler une fonction Lambda qui se trouve sur un autre compte AWS ?

Lecture de 4 minute(s)
0

Je souhaite que mon compartiment Amazon Simple Storage Service (Amazon S3) appelle une fonction AWS Lambda sur un autre compte AWS.

Brève description

Pour que votre compartiment Amazon S3 appelle une fonction Lambda dans un autre compte AWS, procédez comme suit :

1.    Mettez à jour la stratégie d'autorisations basée sur les ressources de votre fonction Lambda pour accorder l'autorisation d'appel à Amazon S3.

2.    Créez une notification d'événement Amazon S3 qui appelle 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 des fonctions, veuillez consulter la rubrique Comment migrer une fonction Lambda vers un autre compte AWS ou une autre région à l'aide de la console Lambda ?

Solution

Remarque : vous devez disposer des informations suivantes pour effectuer cette procédure :

Remarque : en cas d'erreurs lors de l'exécution de commandes depuis l'interface de la ligne de commande AWS (AWS CLI), vérifiez que vous utilisez la version la plus récente de l'AWS CLI.

Mise à jour de la stratégie d'autorisations basée sur les ressources de votre fonction Lambda pour accorder l'autorisation d'appel à Amazon S3

Console de gestion AWS

1.    Ouvrez la page Functions (fonctions) sur la console Lambda à l'aide du compte AWS dans lequel se trouve votre fonction Lambda.

2.    Sélectionnez le nom de la fonction Lambda que vous souhaitez appeler avec Amazon S3.

3.    Dans l'onglet Configuration, choisissez Permissions (Autorisations).

4.    Dans le volet Resource-based policy (Stratégie basée sur les ressources), sélectionnez Add permissions (Ajouter des autorisations).

5.    Dans le volet Policy statement (Déclaration de stratégie), sélectionnez AWS service (service AWS). La liste déroulante Service s'affiche.

6.    Dans la liste déroulante Service, sélectionnez S3. D'autres champs de texte s'affichent.

7.    Pour Source account (Compte source), saisissez l'ID de compte AWS du compte qui héberge votre compartiment S3.

8.    Pour Source ARN (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

9.    Pour Action, sélectionnez lambda:InvokeFunction dans la liste déroulante.

10.    Pour Statement ID (ID de déclaration), entrez un ID de déclaration unique pour différencier la déclaration que vous créez dans la stratégie.

11.    Choisissez Save (Enregistrer).

Pour plus d'informations, veuillez consulter la rubrique Using resource-based policies for AWS Lambda (Utilisation de stratégies basées sur les ressources pour AWS Lambda).

AWS CLI

Mettez à jour la stratégie d'autorisations basée sur les ressources de votre fonction Lambda pour accorder l'autorisation d'appel à Amazon S3 à l'aide de l'API add-permission similaire à ce qui suit :

aws lambda add-permission \
--function-name LambdaFunction_name \
--action lambda:InvokeFunction \
--principal s3.amazonaws.com \
--source-arn arn:aws:s3:::bucket_name \
--statement-id "unique_statement_ID"

Remarque : remplacez LambdaFunction_name, bucket_name et unique_statement_ID par vos variables.

Création d'une notification d'événement Amazon S3 qui appelle votre fonction Lambda

Console de gestion AWS

Suivez les instructions pour activer et configurer des notifications d'événement à l'aide de la console Amazon S3.

AWS CLI

Créez une notification d'événement Amazon S3 qui appelle votre fonction Lambda à l'aide de l'API put-bucket-notification-configuration similaire à ce qui suit :

Remarque : remplacez bucket_name par le nom de votre compartiment S3.

aws s3api put-bucket-notification-configuration \
--bucket bucket_name \
--notification-configuration file://notification.json

Créez et enregistrez le fichier notification.json similaire à ce qui suit :

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.

{
"LambdaFunctionConfigurations": [
    {
      "Id": "my-lambda-function-s3-event-configuration",
      "LambdaFunctionArn": "LambdaFunction_ARN",
      "Events": [ "s3:ObjectCreated:*" ],
      "Filter": {
        "Key": {
          "FilterRules": [
            {
              "Name": "prefix"|"suffix",
              "Value": "string"
            }
          ]
        }
      }
    }
  ]
}

Test de la fonction Lambda

Suivez les instructions pour tester la fonction Lambda à l'aide de la console Lambda.

Si votre fonction n'est pas appelée par la notification d'événement, suivez les instructions de la section Pourquoi ma notification d'évènement Amazon S3 n'appelle-t-elle pas ma fonction Lambda ?


Informations connexes

Comment autoriser le rôle d'exécution Lambda à accéder mon compartiment Amazon S3 ?

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a un an