Comment autoriser ma fonction Lambda à accéder à mon compartiment Amazon S3 ?

Lecture de 4 minute(s)
0

Je souhaite que ma fonction AWS Lambda puisse accéder à mon compartiment Amazon Simple Storage Service (Amazon S3).

Brève description

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

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

2.    Configurez le rôle IAM en tant que rôle d'exécution des fonctions 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 des fonctions se trouvent dans des comptes différents, vous devez également accorder les autorisations requises selon la politique du compartiment S3. Pour plus d'informations, consultez l'article Comment puis-je fournir un accès intercompte à des objets se trouvant dans des compartiments Amazon S3 ?

Résolution

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

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

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

3.    La politique de confiance doit permettre à Lambda d'assumer le rôle d'exécution en ajoutant lambda.amazonaws.com en tant que service fiable. Cliquez sur l'onglet Relations de confiance, choisissez Modifier la politique de confiance et remplacez la politique par ce qui suit :

{
  "Version": "2012-10-17",
  "Statement": [
    {
     "Effect": "Allow",
     "Principal": {
     "Service": "lambda.amazonaws.com"
    },
  "Action": "sts:AssumeRole"
  }
 ]
}

4. Choisissez** Mettre à jour la politique**.

5.    Dans l'onglet Autorisations, choisissez Ajouter une politique intégrée.

6.    Choisissez l'onglet JSON.

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

L'exemple de politique IAM suivant accorde l'accès à un compartiment Amazon S3 spécifique avec des autorisations Obtenir. Pour accéder aux objets contenus dans le compartiment Amazon S3, assurez-vous de spécifier le chemin correct ou utilisez un caractère générique (« * »). Pour plus d'informations, consultez la section Rédaction de politiques IAM : Comment accorder l'accès à un compartiment Amazon S3 pour plus d'informations.

Important : Remplacez « arn:aws:s3:::EXAMPLE-BUCKET » par l’Amazon Resource Name (ARN) de vos compartiments S3.

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

6.    Choisissez** Réviser la politique**.

7.    Dans le champ Nom, saisissez le nom de votre politique.

8.    Choisissez Créer une politique.

Configurer le rôle IAM en tant que rôle d'exécution des fonctions Lambda

1.    Ouvrez la console Lambda.

2.    Choisissez 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érifiez 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 Ajouter une politique de compartiment à l'aide de la console Amazon S3.

**Important :**Si votre compartiment S3 et le rôle IAM des fonctions se trouvent dans des comptes différents, vous devez également accorder explicitement les autorisations requises dans la politique du compartiment S3. Pour en savoir plus, consultez l'article Comment fournir un accès intercompte à des objets se trouvant dans des compartiments Amazon S3 ?

L'exemple de politique de compartiment IAM S3 suivant accorde à un rôle d'exécution Lambda un accès intercompte à un compartiment S3.

**Important :**Remplacez « arn:aws:s3:::EXAMPLE-BUCKET/* » par l'ARN de vos compartiments S3. Remplacez « arn:aws:iam::123456789012:role/ExampleLambdaRoleFor123456789012 » par l'ARN de vos rôles d'exécution Lambda.

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

Informations connexes

Générateur de politiques AWS

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