it-swarm.com.de

Die für die Funktion definierte Rolle kann von Lambda nicht übernommen werden

Ich erhalte den Fehler "Die für die Funktion definierte Rolle kann nicht von Lambda übernommen werden", wenn ich versuche, eine Lambda-Funktion mit dem Befehl create-function zu erstellen.

aws Lambda Create-Funktion
--region us-west-2
- Funktionsname HelloPython
--Zip-Datei fileb: //hello_python.Zip
--role arn: aws: iam :: meine-acc-konto-id: rolle/default
--handler hello_python.my_handler
--runtime python2.7
- Zeitüberschreitung 15
--Speichergröße 512

23
user3045354

Ich habe den Fehler "Die für die Funktion definierte Rolle kann nicht von Lambda übernommen werden" erhalten, da ich die Konfigurationsdatei "Trust Relationship" nicht aktualisiert habe. Die Timeout-Probleme wie in der verknüpften Antwort in den Kommentaren sind nicht aufgetreten.

Die Kommentare in den obigen Antworten haben gezeigt, dass Sie Folgendes hinzufügen müssen.

  1. Gehen Sie zu "IAM> Rollen> IhrRollenname"
    • (Hinweis: Wenn Ihre Rolle nicht aufgeführt ist, müssen Sie sie erstellen.)
  2. Wählen Sie die Registerkarte "Vertrauensbeziehungen"
  3. Wählen Sie "Vertrauensbeziehung bearbeiten" aus.

Meine endete wie unten. 

{
  "Version": "2012-10-17",
  "Statement": [
    {
      <your other rules>
    },
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "lambda.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}
41
Emile

Ich stoße auch auf diesen Fehler. Ich habe (noch) keine endgültige Antwort erhalten, aber ich dachte, ich würde ein paar Hinweise weitergeben, die Ihnen und/oder jemandem helfen könnten, der dieses Problem trifft.

A) Wenn Sie den Rollen-ARN erstellen, indem Sie Ihre Konto-ID und Ihren Rollennamen zusammenstellen, denke ich, dass die Konto-ID ohne Bindestriche sein muss

B) Wenn Sie die Rolle gerade erstellt und möglicherweise Richtlinien hinzugefügt haben, scheint es ein (kleines) Zeitfenster zu geben, in dem die Rolle diesen Fehler auslöst. Wenn ich zwischen der letzten Operation der Rolle und dem Aufruf der Funktion "create" fünf oder sechs Sekunden lang geschlafen habe, konnte ich das Problem umgehen (aber das Timing kann natürlich variabel sein. Dies ist im besten Fall eine Problemumgehung).

23
FOR

Für mich bestand das Problem darin, dass ich einen unvollständigen Namen für die Rolle hatte. ich setze

--role arn:aws:iam::000000000000:role/MyRoleName

wann es hätte sein sollen

--role arn:aws:iam::000000000000:role/service-role/MyRoleName

(natürlich ist meine AWS-ID nicht wirklich 000000000000)

Ich habe das beim Laufen entdeckt 

aws iam get-role --role-name MyRoleName

und die "Arn"-Eigenschaft in der Ergebnismenge betrachten. 

13
alexanderbird

Für mich war das Problem, dass ich den falschen Standard-Umgebungsschlüssel für die Region festgelegt hatte.

1
jsta

Die meisten Benutzer erhalten diesen Fehler, weil sie beim Erstellen der Lambda-Funktion in CloudFormation die falsche Rollen-ARN angegeben haben.

Stellen Sie sicher, dass die Rolle zuerst mit "DependsOn" abgeschlossen wird, und verwenden Sie die intrinsische Funktion "" {"Fn :: GetAtt": ["your-role-logical-name", "Arn"]} ""

0
Vignesh

Ich bin mit terraform auf diesen Fehler gestoßen und musste eine Richtlinie zum Übernehmen von Rollen hinzufügen und auf die Rolle anwenden, die Lambda übernimmt.

data "aws_iam_policy_document" "lambda_assume_role_policy" {

  statement {
    actions = ["sts:AssumeRole"]

    principals {
      type        = "Service"
      identifiers = [
        "lambda.amazonaws.com"
      ]
    }
  }

resource "aws_iam_role" "lambda_rotation_role" {
  name               = "lambda-rotation-role"
  assume_role_policy = "${data.aws_iam_policy_document.lambda_assume_role_policy.json}"
}
0
Michael

Hatte dasselbe Problem, obwohl meine IAM-Rolle die richtige Richtlinie und Vertrauensbeziehung hatte. Lambda-Erstellung funktionierte gut, wenn über CLI das Problem bestand, als das Lambda-Modul verwendet wurde, nachdem nur die IAM-Rolle erstellt wurde.

Ich habe auch versucht, für einige Sekunden zu "pausieren", aber es hat nicht geholfen.

Endete das Hinzufügen von Wiederholungsversuchen und Verzögerungen, bis der registerdLambda.code definiert wurde. Normalerweise funktioniert es nach 1-2 Versuchen.

beispiel:

 - 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