Help us improve the AWS re:Post Knowledge Center by sharing your feedback in a brief survey. Your input can influence how we create and update our content to better support your AWS journey.
Wie kann ich den Fehler “Lambda does not have permission to access the ECR image...” (Lambda hat keine Berechtigung, auf das ECR-Image zuzugreifen...) für eine Lambda-Funktion mit einem Container-Image beheben?
Ich habe versucht, eine AWS Lambda-Funktion mit einem Container-Image zu erstellen, aber ich habe einen Berechtigungsfehler für Amazon Elastic Container Registry (Amazon ECR) erhalten.
Kurze Beschreibung
Um eine Lambda-Funktion aus einem Container-Image zu erstellen, muss der Benutzer oder die Rolle, die die Funktion und das Amazon ECR-Repository erstellt, über Richtlinien verfügen, die den Zugriff ermöglichen.
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.
Weitere Informationen findest du unter Bereitstellen von Lambda-Funktionen als Container-Images.
Auflösung
Gehe wie folgt vor, um eine Policy-Erklärung für private Repositorys festzulegen.
Hinweis: Es hat sich bewährt, die geringste Berechtigung nur für die Berechtigungen zu gewähren, die für die Ausführung einer Aufgabe erforderlich sind. Weitere Informationen findest du unter Anwenden von Berechtigungen mit den geringsten Rechten.
1. Erstelle eine Lambda-Funktion aus der Amazon ECR-Image-URI im selben AWS-Konto
Im folgenden Beispiel müssen die Amazon ECR-Repository-Berechtigungen die API-Aktionen ecr:batchGetImage und ecr:getDownloadUrlForLayer für den Lambda-Service zulassen.
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" ] } ] }
2. Erstelle eine Lambda-Funktion aus der Amazon ECR-Image-URI in einem Cross-Konto
Im folgenden Beispiel befinden sich die Lambda-Funktionen, die im AWS-Konto 111111111111 erstellt wurden, und das Amazon ECR-Repository befindet sich im AWS-Konto 222222222222.
Der Benutzer oder die Rolle, der die Lambda-Funktion erstellt oder aktualisiert hat, muss über die Berechtigungen ecr:batchGetImage und ecr:getDownloadUrlForLayer für das ECR-Repository verfügen.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "ECR Repository Access Permissions", "Effect": "Allow", "Action": [ "ecr:GetDownloadUrlForLayer", "ecr:BatchGetImage" ], "Resource": "arn:aws:ecr:us-east-1:222222222222:repository/hello-repository" } ] }
Im folgenden Beispiel ermöglicht die CrossAccountPermission-Anweisung dem AWS-Konto 111111111111, Lambda-Funktionen zu erstellen und zu aktualisieren, die Images aus dem Amazon ECR-Repository verwenden.
Beispiel für eine kontenübergreifende Amazon-ECR-Repository-Richtlinie:
{ "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:function:*" } } } ] }
Lambda setzt den Status einer Funktion schließlich auf inaktiv, wenn sie über einen längeren Zeitraum nicht aufgerufen wird.
Hinweis: Die LambdaecrimageCrossAccountRetrievalPolicy-Anweisung ist erforderlich, damit Lambda das Container-Image für das AWS-Konto 111111111111 abrufen kann.
Weitere Informationen findest du unter Kontoübergreifende Amazon ECR-Berechtigungen.
Verwandte Informationen
Einführung des kontoübergreifenden Amazon ECR-Zugriffs für AWS Lambda
- Themen
- ServerlessCompute
- Tags
- AWS Lambda
- Sprache
- Deutsch
Ähnliche Videos


Relevanter Inhalt
AWS OFFICIALAktualisiert vor 9 Monaten