Wie behebe ich den Fehler „Lambda does not have permission to access the ECR image“ bei einem Lambda-Funktionscontainer-Image?
Ich habe versucht, eine AWS-Lambda-Funktion mit einem Container-Image zu erstellen. Ich habe jedoch einen Amazon Elastic Container Registry (Amazon ECR)-Berechtigungsfehler erhalten, der dem folgenden ähnelt: „Lambda does not have permission to access the ECR image. Check the ECR permissions“
Kurzbeschreibung
Um eine Lambda-Funktion aus einem Container-Image zu erstellen, musst du AWS Identity and Access Management (IAM)-Richtlinien konfigurieren, die den Zugriff zulassen. Der/die IAM-Benutzer:in oder die IAM-Rolle, der/die die Funktion und das Amazon-ECR-Repository erstellt, muss über Zugriffsberechtigungen verfügen.
Hinweis: Bevor du die Lambda-Funktion erstellst, erstelle zunächst ein Lambda-Container-Image. Lade das Image anschließend in ein Amazon-ECR-Repository hoch.
Lösung
Befolge die Schritte, um eine private Repository-Richtlinienanweisung in Amazon ECR festzulegen. Füge dann eine Richtlinienanweisung hinzu, um eine Lambda-Funktion aus dem Amazon-ECR-Image-URI in demselben AWS-Konto oder kontoübergreifend zu erstellen.
Hinweis: Es hat sich bewährt, mithilfe von IAM-Richtlinien ](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege)die geringste Berechtigung[ zu erteilen.
Eine Richtlinienanweisung in demselben Konto hinzufügen
In der folgenden Richtlinie müssen die Amazon-ECR-Repository-Berechtigungen den API-Aktionen ecr:BatchGetImage und ecr:GetDownloadUrlForLayer den Zugriff auf den Lambda-Service erlauben.
Beispiel für eine Amazon-ECR-Repository-Richtlinie:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "LambdaECRImageRetrievalPolicy", "Effect": "Allow", "Principal": { "Service": "lambda.amazonaws.com" }, "Action": [ "ecr:BatchGetImage", "ecr:GetDownloadUrlForLayer" ] } ] }
Wichtig: Wenn das Amazon-ECR-Repository die vorherigen Berechtigungen nicht enthält, fügt Lambda sie automatisch hinzu. Lambda kann nur Berechtigungen hinzufügen, wenn der Prinzipal, der Lambda aufruft, über die Berechtigungen ecr:getRepositoryPolicy und ecr:setRepositoryPolicy verfügt. Weitere Informationen findest du unter Amazon-ECR-Repository-Richtlinien.
Eine Richtlinienanweisung kontoübergreifend hinzufügen
Der/die Benutzer:in oder die Rolle, der/die die Lambda-Funktion erstellt oder aktualisiert, muss über die Berechtigungen ecr:BatchGetImage und ecr:GetDownloadUrlForLayer für das ECR-Repository verfügen.
In der folgenden Richtlinie wurden die Lambda-Funktionen im Konto 111111111111 erstellt, und das Amazon-ECR-Repository befindet sich im Konto 222222222222.
Beispiel für eine IAM-Richtlinie, die dem/der Benutzer:in oder der Rolle den Zugriff auf das kontoübergreifende Amazon-ECR-Repository gewährt:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "ECRRepositoryAccessPermissions", "Effect": "Allow", "Action": [ "ecr:GetDownloadUrlForLayer", "ecr:BatchGetImage" ], "Resource": "arn:aws:ecr:us-east-1:222222222222:repository/your-repository" } ] }
Hinweis: Ersetze arn:aws:ecr:us-east-1:222222222222:repository/your-repository durch den Amazon-Ressourcennamen (ARN) der ECR-Repository-Ressource.
Im folgenden Beispiel ermöglicht die CrossAccountPermission-Anweisung dem Konto 111111111111, Lambda-Funktionen zu erstellen und zu aktualisieren, die Images aus dem Amazon-ECR-Repository verwenden.
Ein Beispiel für eine kontoübergreifende Amazon-ECR-Repository-Richtlinie ermöglicht es der Lambda-Funktion, das Container-Image abzurufen:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "CrossAccountPermission", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111111111111:root" }, "Action": [ "ecr:BatchGetImage", "ecr:GetDownloadUrlForLayer" ] }, { "Sid": "LambdaECRImageCrossAccountRetrievalPolicy", "Effect": "Allow", "Principal": { "Service": "lambda.amazonaws.com" }, "Action": [ "ecr:BatchGetImage", "ecr:GetDownloadUrlForLayer" ], "Condition": { "StringLike": { "aws:sourceARN": "arn:aws:lambda:us-east-1:111111111111:your-function:*" } } } ] }
Hinweis: Ersetze arn:aws:ecr:us-east-1:222222222222:repository/your-repository durch deinen LAMBDA-Funktions-ARN.
Weitere Informationen findest du unter Kontoübergreifende Amazon-ECR-Berechtigungen.
Ähnliche Informationen
Einführung des kontoübergreifenden Amazon-ECR-Zugriffs für AWS Lambda
- Themen
- ServerlessCompute
- Tags
- AWS Lambda
- Sprache
- Deutsch
Ähnliche Videos

