微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

有没有办法在我的组织或不同账户之间共享我的 ECR 存储库?

如何解决有没有办法在我的组织或不同账户之间共享我的 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] 举报,一经查实,本站将立刻删除。