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
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.
Meine endete wie unten.
{
"Version": "2012-10-17",
"Statement": [
{
<your other rules>
},
{
"Effect": "Allow",
"Principal": {
"Service": "lambda.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
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).
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.
Für mich war das Problem, dass ich den falschen Standard-Umgebungsschlüssel für die Region festgelegt hatte.
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"]} ""
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}"
}
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 }}"