Je reçois le message d'erreur "Le rôle défini pour la fonction ne peut pas être assumé par Lambda" lorsque j'essaie de créer une fonction lambda avec la commande create-function.
aws lambda create-function
--region us-west-2
--fonction-nom HelloPython
--Zip-file fileb: //hello_python.Zip
--role arn: aws: iam :: mon-compte-compte-id: rôle/défaut
--handler hello_python.my_handler
--runtime python2.7
- timeout 15
--memory-size 512
J'ai reçu l'erreur "Le rôle défini pour la fonction ne peut pas être assumé par Lambda" car je n'avais pas mis à jour les fichiers de configuration des rôles "Trust Relationship". Je n'ai pas rencontré les problèmes de délai d'attente comme dans la réponse liée dans les commentaires.
Les commentaires dans les réponses ci-dessus ont souligné que vous devez ajouter ce qui suit.
Le mien a fini comme le dessous.
{
"Version": "2012-10-17",
"Statement": [
{
<your other rules>
},
{
"Effect": "Allow",
"Principal": {
"Service": "lambda.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
Je rencontre aussi cette erreur. Je n'ai pas encore eu de réponse définitive, mais je me suis dit que je pourrais vous transmettre quelques astuces qui pourraient vous aider, vous et/ou toute autre personne, à résoudre ce problème.
A) Si vous créez l'ARN de rôle en assemblant votre ID de compte et votre nom de rôle, je pense que l'ID de compte doit être sans tirets.
B) Si vous venez de créer le rôle et éventuellement d'y ajouter des stratégies, il semble exister une (petite) fenêtre de temps pendant laquelle le rôle déclenchera cette erreur. Dormir 5 ou 6 secondes entre la dernière opération sur le rôle et l’appel de création de fonction m’a permis de contourner le problème (mais bien sûr, le timing peut être variable, ce qui est au mieux une solution de rechange).
Pour moi, le problème était que j'avais un nom incomplet pour le rôle. Je mets
--role arn:aws:iam::000000000000:role/MyRoleName
quand cela aurait dû être
--role arn:aws:iam::000000000000:role/service-role/MyRoleName
(Bien sûr, mon identifiant aws n'est pas réellement 000000000000)
J'ai découvert cela en courant
aws iam get-role --role-name MyRoleName
et en regardant la propriété "Arn"
dans le jeu de résultats.
Pour moi, le problème était que j'avais défini la mauvaise clé d'environnement de région par défaut.
Avait le même problème bien que mon rôle IAM avait la bonne politique et la relation de confiance. La création Lambda a bien fonctionné lorsqu’elle a été effectuée par le biais de la CLI. Le problème était lors de l’utilisation du module lambda après la création du rôle IAM.
J'ai aussi essayé de "faire une pause" pendant quelques secondes mais cela n'a pas aidé.
Nous avons fini par ajouter de nouvelles tentatives et attendre jusqu'à ce que registerdLambda.code soit défini. Habituellement, cela fonctionne après 1-2 essais.
exemple:
- name: creating lambda function
lambda:
state: present
name: "{{ lambdaName }}"
Zip_file: "{{ lambdaZipFile }}"
runtime: "{{ lambdaRuntime }}"
role: "{{ lambdaRole }}"
description: "{{ lambdaDescription }}"
handler: "{{ lambdaHandler }}"
register: lambdaFunc
retries: 3
delay: 10
until: "{{ lambdaFunc.code is defined }}"