Comment puis-je accorder à mon rôle d'exécution Lambda l'accès à mon compartiment Amazon S3 ?

Date de la dernière mise à jour : 20/07/2021

Je souhaite que ma fonction AWS Lambda puisse voir accès à mon compartiment Amazon Simple Storage Service (Amazon S3). Comment dois-je procéder ?

Brève description

Pour donner à votre fonction Lambda l'accès à un compartiment Amazon S3 du même compte AWS, procédez comme suit :

1.    Créez un rôle AWS Identity and Access Management (IAM) pour la fonction Lambda qui accorde également l'accès au compartiment S3.

2.    Configurer le rôle IAM en tant que rôle d'exécution de la fonction Lambda

3.    Vérifiez que la politique de compartiment S3 ne refuse pas explicitement l'accès à votre fonction Lambda ou à son rôle d'exécution.

Important : si votre compartiment S3 et le rôle IAM de la fonction se trouvent dans des comptes différents, vous devez également accorder les autorisations requises sur la politique de compartiment S3. Pour plus d'informations, consultez Comment puis-je fournir un accès entre comptes à des objets stockés dans des compartiments Amazon S3 ?

Résolution

Créer un rôle IAM pour la fonction Lambda qui accorde également l'accès au compartiment S3

1.    Suivez les étapes de la section Création d'un rôle d'exécution dans la console IAM.

2.    Dans la liste des rôles IAM, sélectionnez le rôle que vous venez de créer.

3.    Dans la vue Autorisations, sélectionnez Ajouter une stratégie en ligne.

4.    Choisissez l'onglet JSON.

5.    Saisissez une politique IAM basée sur les ressources qui accorde l'accès à votre compartiment S3. Pour plus d'informations, consultez Utilisation des politiques basées sur les ressources pour AWS Lambda.

Exemple de politique IAM qui accorde l'accès à un compartiment S3 spécifique

Important : remplacez « arn:aws:s3:::AWSDOC-EXAMPLE-BUCKET/* » par l'Amazon Resource Name (ARN) de votre compartiment S3.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "ExampleStmt",
      "Action": [
        "s3:GetObject"
      ],
      "Effect": "Allow",
      "Resource": [
        "arn:aws:s3:::AWSDOC-EXAMPLE-BUCKET/*"
      ]
    }
  ]
}

6.    Sélectionnez Examiner une stratégie.

7.    Pour Nom, saisissez un nom pour votre stratégie.

8.    Choisissez Créer une politique.

Configurer le rôle IAM en tant que rôle d'exécution de la fonction Lambda

1.    Ouvrez la console Lambda.

2.    Sélectionnez votre fonction Lambda.

3.    Sous Rôle d'exécution, pour Rôle existant, sélectionnez le rôle IAM que vous avez créé.

4.    Choisissez Enregistrer.

Vérifier que la politique de compartiment S3 ne refuse pas explicitement l'accès à votre fonction Lambda ou à son rôle d'exécution

Pour consulter ou modifier votre politique de compartiment S3, suivez les instructions de la section Ajout d'une politique de compartiment à l'aide de la console Amazon S3.

Important : si votre compartiment S3 et le rôle IAM de la fonction se trouvent dans des comptes différents, vous devez également accorder explicitement les autorisations requises sur la politique de compartiment S3. Pour plus d'informations, consultez Comment puis-je fournir un accès entre comptes à des objets qui se trouvent dans des compartiments Amazon S3 ?

Exemple de politique de compartiment IAM S3 qui accorde un accès entre comptes à un rôle d'exécution Lambda à un compartiment S3

Important : remplacez « arn:aws:s3:::AWSDOC-EXAMPLE-BUCKET/* » par l'ARN de votre compartiment S3. Remplacez « arn:aws:iam::123456789012:role/ExampleLambdaRoleFor123456789012 » par l'ARN de votre rôle d'exécution Lambda.

{
  "Id": "ExamplePolicy",
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "ExampleStmt",
      "Action": [
        "s3:GetObject"
      ],
      "Effect": "Allow",
      "Resource": [
        "arn:aws:s3:::AWSDOC-EXAMPLE-BUCKET/*"
      ],
      "Principal": {
        "AWS": [
          "arn:aws:iam::123456789012:role/ExampleLambdaRoleFor123456789012"
        ]
      }
    }
  ]
}

Cet article vous a-t-il été utile ?


Besoin d'aide pour une question technique ou de facturation ?