如何解决有没有办法在我的组织或不同账户之间共享我的 ECR 存储库?
我希望无需在启用了跨帐户策略的帐户中单独推送即可实现此目的。有没有办法只在我的其他帐户的 lambda 函数中提及图像 uri 路径,以便它从原始帐户中获取我的 docker 图像。
我的图像已经存在于其中一个帐户中,我们称之为 ACC A。现在我想在 ACC B 中使用相同的 repo,而不必在 ACC B 中再次推送该图像。
解决方法
跨帐户方法
首先在您的 ecr:GetAuthorizationToken
Lambda IAM 角色中添加 Account B
权限以对 ECR 存储库进行身份验证。
{
"Version": "2008-10-17","Statement": [
{
"Effect": "Allow","Action": [
"ecr:GetAuthorizationToken"
],"Resource": "*"
}
]
}
然后,在 Account A
中,在您的 ECR repository (in Permissions)
中添加类似于以下内容的策略。以下策略允许 AWS 账户 111111111111
从/向您的 ECR 存储库推送和拉取映像。将 111111111111
替换为您的账户 B AWS 帐号
{
"Version": "2008-10-17","Statement": [
{
"Sid": "AllowCrossAccountPush","Effect": "Allow","Principal": {
"AWS": "arn:aws:iam::111111111111:root"
},"Action": [
"ecr:BatchCheckLayerAvailability,"ecr:BatchGetImage,"ecr:CompleteLayerUpload,"ecr:GetDownloadUrlForLayer","ecr:InitiateLayerUpload","ecr:BatchCheckLayerAvailability","ecr:PutImage","ecr:UploadLayerPart"
]
}
]
}
,
This blog post 引导您完成设置(它侧重于 ECS 作为图像的消费服务,但相同的概念适用于 Lambda)
,我关注了另一个答案中的博文,发现就像添加一样简单
{
"Version": "2008-10-17","Statement": [
{
"Sid": "share_dev","Principal": "*","Action": "ecr:DescribeImages","Condition": {
"ForAnyValue:StringLike": {
"aws:PrincipalOrgPaths": [
"o-<org-id>/r-<root-ou-id>/ou-<sub-ou-id>/*"
]
}
}
}
]
}
在你仓库的权限集中。
现在,sub-ou-id
组织中的任何帐户/角色都可以描述图像。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。