Je souhaite résoudre l'erreur qui fait que ma fonction Lambda rejette le rôle AWS Identity and Access Management (IAM) qui lui confère les privilèges nécessaires sur AWS CloudFormation.
Brève description
Parfois, la fonction AWS Lambda n'accepte pas le rôle IAM qui lui a été défini sur CloudFormation.
Résolution
Vérifier si l'ARN du rôle IAM correct est transmis à la fonction Lambda
Si l’Amazon Resource Name (ARN) du rôle IAM pour la fonction existe déjà dans le compte, assurez-vous que sa syntaxe est correcte. Par exemple :
Résoudre les problèmes liés au rôle IAM et à la stratégie associée
Vérifiez la stratégie IAM définie pour le rôle endossé par la fonction Lambda. Vérifiez que le rôle IAM dispose de toutes les autorisations nécessaires. Assurez-vous que la section Principal de la stratégie est correctement configurée, comme indiqué ci-dessous :
LambdaExecutionRole:
Type: AWS::IAM::Role
Properties:
AssumeRolePolicyDocument:
Version: '2012-10-17'
Statement:
- Effect: Allow
Principal:
Service:
- lambda.amazonaws.com
Action:
- sts:AssumeRole
Résoudre la dépendance entre le rôle IAM et la fonction Lambda
Si le rôle IAM et la fonction Lambda sont créés dans des piles différentes, créez d'abord le rôle. Si la fonction Lambda de la pile est lancée en premier, la pile peut échouer avec cette erreur.
Il est recommandé de créer le rôle IAM dans la même pile que la fonction Lambda. Utilisez des fonctions intrinsèques, telles que GetAtt et !Ref, pour transmettre le rôle IAM à la fonction Lambda.