如何解决带有容器镜像的 Lambda 函数的“Lambda 无权访问 ECR 镜像...”错误?
我试图使用容器镜像创建 AWS Lambda 函数,但收到了 Amazon Elastic Container Registry (Amazon ECR) 权限错误。
简短描述
若要从容器镜像创建 Lambda 函数,创建函数和 Amazon ECR 存储库的用户或角色必须具有允许访问的策略。
**注意:**在创建 Lambda 函数之前,请先创建 Lambda 容器镜像。然后,将镜像上传到 Amazon ECR 存储库。
有关详细信息,请参阅将 Lambda 函数部署为容器镜像。
解决方法
请按照以下步骤设置私有存储库策略语句。
**注意:**最佳做法是只为执行任务所需的权限授予最低权限。有关详细信息,请参阅应用最低权限许可。
1.通过同一 AWS 账户的 Amazon ECR 镜像 URI 创建 Lambda 函数
在以下示例中,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" ] } ] }
2.通过跨账户的 Amazon ECR 镜像 URI 创建 Lambda 函数
在以下示例中,在 AWS 账户 111111111111 和 Amazon ECR 存储库中创建的 Lambda 函数位于 AWS 账户 222222222222 中。
创建或更新了 Lambda 函数的用户或角色必须对 ECR 存储库拥有 ecr:BatchGetImage 和 ecr:GetDownloadUrlForLayer 权限。
{ "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" } ] }
在以下示例中,CrossAccountPermission 语句允许 AWS 账户 111111111111 创建和更新使用 Amazon ECR 存储库中的镜像的 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:function:*" } } } ] }
如果长时间未调用某函数,Lambda 最终会将该函数的状态设置为非活动状态。
**注意:**LambdaECRImageCrossAccountRetrievalPolicy 语句是必需的,这样 Lambda 才能检索 AWS 账户 111111111111 的容器镜像。
有关详细信息,请参阅 Amazon ECR 跨账户权限。
相关信息
相关内容
- AWS 官方已更新 1 年前
- AWS 官方已更新 2 年前
- AWS 官方已更新 2 年前
- AWS 官方已更新 1 年前