AWS Builder Center: Learn, Build and Connect with builders in the AWS community
AWS Builder Center is the official home for builders on AWS. Share and read what others are working on, follow people who inspire you, explore training and workshops, and find tools to support what you're building.
如何解決 Lambda 函式容器映像的「Lambda does not have permission to access the ECR image」錯誤?
我嘗試使用容器映像建立 AWS Lambda 函式。但是,我收到類似下列內容的 Amazon Elastic Container Registry (Amazon ECR) 權限錯誤: 「Lambda does not have permission to access the ECR image.Check the ECR permissions」
簡短說明
若要從容器映像建立 Lambda 函式,您必須設定允許存取的 AWS Identity and Access Management (IAM) 政策。建立函式與 Amazon ECR 儲存庫的 IAM 使用者或角色都必須具有允許存取的權限。
**注意:**在建立 Lambda 函式之前,請先建立 Lambda 容器映像。然後,將映像上傳至 Amazon ECR 儲存庫。
解決方法
依照步驟在 Amazon ECR 中設定私有儲存庫政策陳述式。然後,新增政策陳述式,以便從相同 AWS 帳戶或跨帳戶中的 Amazon ECR 映像 URI 建立 Lambda 函式。
注意:最佳實務是使用 IAM 政策授予最低權限。
在相同帳戶中新增政策陳述式
在以下政策中,Amazon ECR 儲存庫權限必須允許 Lambda 服務存取 ecr:BatchGetImage 和 ecr:GetDownloadUrlForLayer API 動作。
Amazon ECR 儲存庫政策範例:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "LambdaECRImageRetrievalPolicy", "Effect": "Allow", "Principal": { "Service": "lambda.amazonaws.com" }, "Action": [ "ecr:BatchGetImage", "ecr:GetDownloadUrlForLayer" ] } ] }
**重要:**如果 Amazon ECR 儲存庫不包含前述權限,Lambda 會自動新增這些權限。只有在呼叫 Lambda 的主體具有 ecr:getRepositoryPolicy 和 ecr:setRepositoryPolicy 權限時,Lambda 才能新增權限。如需更多資訊,請參閱 Amazon ECR 儲存庫政策。
在跨帳戶中新增政策陳述式
建立或更新 Lambda 函式的使用者或角色,必須對 ECR 儲存庫具有 ecr:BatchGetImage 和 ecr:GetDownloadUrlForLayer 權限。
在以下政策中,Lambda 函式建立於帳戶 111111111111,而 Amazon ECR 儲存庫位於帳戶 222222222222。
允許使用者或角色存取跨帳戶 Amazon ECR 儲存庫的 IAM 政策範例:
{ "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" } ] }
**注意:**將 arn:aws:ecr:us-east-1:222222222222:repository/your-repository 替換為您 ECR 儲存庫資源的 Amazon Resource Name (ARN)。
在以下範例中,CrossAccountPermission 陳述式允許帳戶 111111111111 建立和更新使用 Amazon ECR 儲存庫映像的 Lambda 函式。
允許 Lambda 函式擷取容器映像的 Amazon ECR 儲存庫跨帳戶政策範例:
{ "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:*" } } } ] }
**注意:**將 arn:aws:ecr:us-east-1:222222222222:repository/your-repository 替換為您的 Lambda 函式 ARN。
如需更多資訊,請參閱 Amazon ECR 跨帳戶權限。
相關資訊
相關內容
已提問 2 年前
已提問 3 年前
已提問 1 年前
AWS 官方已更新 4 年前
