web-dev-qa-db-fra.com

Le rôle défini pour la fonction ne peut pas être assumé par Lambda

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

23
user3045354

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.

  1. Allez dans 'IAM> Roles> YourRoleName'
    • (Remarque: si votre rôle n'est pas répertorié, vous devez le créer.)
  2. Sélectionnez l'onglet "Relations de confiance"
  3. Sélectionnez "Modifier la relation de confiance".

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"
    }
  ]
}
41
Emile

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).

23
FOR

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. 

13
alexanderbird

Pour moi, le problème était que j'avais défini la mauvaise clé d'environnement de région par défaut.

1
jsta

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 }}"
0
balaganAtomi