AWS Lambda从Visual Studio部署时报ECR权限不足错误该如何解决?
问题根因
你配置的AmazonElasticContainerRegistryPublicFullAccess托管策略仅覆盖ecr-public服务(公开ECR仓库)的操作权限,而部署Lambda容器镜像时Docker CLI登录ECR所需的ecr:GetAuthorizationToken属于私有ECR服务(ecr服务命名空间)的全局权限,二者是独立的权限体系,因此现有权限无法覆盖该操作。
最小权限配置方案
你需要为IAM角色新增如下自定义权限策略即可解决报错:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ecr:GetAuthorizationToken", "Resource": "*" }, { "Effect": "Allow", "Action": [ "ecr:BatchGetImage", "ecr:BatchCheckLayerAvailability", "ecr:CompleteLayerUpload", "ecr:InitiateLayerUpload", "ecr:PutImage", "ecr:UploadLayerPart" ], "Resource": "arn:aws:ecr:<你的AWS区域>:<你的12位账号ID>:repository/<你的ECR仓库名>" } ] }
配置说明
ecr:GetAuthorizationToken是ECR登录的必备全局权限,AWS官方规定该动作的资源必须指定为*,无更细粒度的限制方式- 第二段权限仅为你需要将构建好的Lambda容器镜像推送到账号内私有ECR时需要,你可以替换
Resource字段为你实际使用的ECR仓库ARN,实现最小权限管控 - 如果你仅使用公开ECR仓库存储镜像,不需要配置第二段权限,仅添加
ecr:GetAuthorizationToken权限即可
内容的提问来源于stack exchange,提问作者Jacek Kowalski
相关产品推荐
相关产品推荐

