【发布时间】:2022-06-23 15:58:46
【问题描述】:
我正在尝试从另一个账户 A 的 ECR 图像在账户 B 中创建一个 lambda 函数,但我遇到了 Lambda 没有访问 ECR 图像的权限错误。 p>
我在this 之后创建了以下 ECR 策略:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "CrossAccountPermission",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::BBBBBBBBBBBB:root"
},
"Action": [
"ecr:BatchGetImage",
"ecr:GetDownloadUrlForLayer"
]
},
{
"Effect": "Allow",
"Principal": {
"Service": "lambda.amazonaws.com"
},
"Action": [
"ecr:BatchGetImage",
"ecr:GetDownloadUrlForLayer"
],
"Condition": {
"StringLike": {
"aws:sourceArn:": "arn:aws:lambda:eu-west-1:BBBBBBBBBBBB:function:*"
}
}
}
]
}
我正在使用 aws sso 代入角色来执行 lambda 创建,我不知道这是否有影响。
账户 B 和 A 不在同一个 AWS 组织单位中。
我测试的东西:
- 如果我从针对 lambda 服务的语句中删除条件,错误就会消失,但显然这不是永久解决方案。
- 在账户 B 中使用相同的 ECR 映像运行 ECS 任务可以正常工作。
- 我尝试按照 SAM 教程 here 进行操作,但遇到了同样的问题。
我要检查的东西不多了,我真的很想避免复制帐户 B 中的 ECR 图像。
您知道为什么示例策略似乎不起作用吗?
如何从来自 lambda 服务的所有内容中缩小政策范围?我计划使用aws:PrincipalOrgPaths 来允许多个组织单位,但这似乎不适用于 lambda 主体。
【问题讨论】:
-
一切对我来说都是正确的。您确定 Lambda 函数部署在
eu-west-1中吗? -
是的,我使用的是
eu-west-1,尽管我也使用"aws:sourceArn:":而不是"aws:sourceArn":...很抱歉让您浪费了一些时间... -
仍在寻找允许使用
PrincipalOrgPaths进行过滤的方法 -
没问题,很高兴你发现了它。这些小错别字可能很难看出来。
标签: amazon-web-services aws-lambda amazon-ecr