Je souhaite que ma fonction AWS Lambda accède à mon compartiment Amazon Simple Storage Service (Amazon S3).
Brève description
Voici comment accorder à votre fonction Lambda l’accès à un compartiment Amazon S3 dans le même compte AWS :
- Créez un rôle de gestion des identités et des accès AWS (AWS IAM) pour la fonction Lambda, qui accorde également l’accès au compartiment S3.
- Configurez le rôle IAM en tant que rôle d’exécution des fonctions Lambda.
- 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, accordez les autorisations requises selon la politique du compartiment S3. Pour en savoir plus, consultez Comment puis-je fournir un accès intercompte à des objets se trouvant dans des compartiments Amazon S3 ?
Solution
Création d’un rôle IAM pour la fonction Lambda qui accorde également l’accès au compartiment S3
Voici comment créer un rôle IAM pour la fonction Lambda qui donne également accès au compartiment S3 :
-
Création d’un rôle d’exécution dans la console IAM.
-
Dans la liste des rôles IAM, choisissez le rôle que vous avez créé.
-
Pour que la politique de confiance permette à Lambda d’assumer le rôle d’exécution, ajoutez lambda.amazonaws.com en tant que service fiable. Cliquez sur l’onglet Relations de confiance, puis choisissez Modifier la politique de confiance.
-
Remplacez les variables de la politique par les variables suivantes :
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "lambda.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
-
Choisissez Mettre à jour la politique.
-
Dans l’onglet Autorisations, choisissez Ajouter une politique intégrée.
-
Choisissez l’onglet JSON.
-
Entrez une politique IAM basée sur les ressources qui accorde l’accès à votre compartiment S3. Pour plus d’informations, consultez la section Utilisation de politiques basées sur les ressources pour Lambda. L’exemple de politique IAM suivant accorde l’accès à un compartiment Amazon S3 spécifique avec des autorisations Get. Pour accéder aux objets contenus dans le compartiment Amazon S3, indiquez le bon chemin ou utilisez un caractère générique (« * »). Pour plus d’informations, consultez Writing IAM Policies: how to grant access to an Amazon S3 bucket.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "ExampleStmt",
"Action": [
"s3:GetObject"
],
"Effect": "Allow",
"Resource": [
"arn:aws:s3:::EXAMPLE-BUCKET/*"
]
}
]
}
**Remarque :**Remplacez « arn:aws:s3:::EXAMPLE-BUCKET » par l’ARN de votre compartiment S3. Si l’objet est chiffré à l’aide d’une clé AWS Key Management Service (AWS KMS), vous devez fournir des autorisations supplémentaires. Pour en savoir plus, consultez Mon compartiment Amazon S3 est chiffré par défaut à l’aide d’une clé AWS KMS personnalisée. Comment autoriser les utilisateurs à effectuer des téléchargements depuis et vers le compartiment ?
-
Choisissez Examiner une politique.
-
Dans le champ Nom, saisissez le nom de votre politique.
-
Choisissez Créer une politique.
Configuration du rôle IAM en tant que rôle d’exécution des fonctions Lambda
Voici comment configurer le rôle IAM en tant que rôle d’exécution des fonctions Lambda :
- Ouvrez la console Lambda.
- Choisissez votre fonction Lambda.
- Sous Rôle d’exécution, pour Rôle existant, sélectionnez le rôle IAM que vous avez créé.
- 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.
L’exemple de politique IAM suivant accorde à un rôle d’exécution Lambda un accès intercompte à un compartiment S3 :
{
"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"
]
}
}
]
}
Remarque : Remplacez ** « arn:aws:s3:::EXAMPLE-BUCKET »** par l’ARN de votre compartiment S3 et « arn:aws:iam::123456789012:role/ExampleLambdaRoleFor123456789012 » par l’ARN de votre rôle d’exécution Lambda.
Informations complémentaires
Générateur de politiques AWS