首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >AWS ECS Fargate从跨账户ECR存储库拉取镜像

AWS ECS Fargate从跨账户ECR存储库拉取镜像
EN

Stack Overflow用户
提问于 2018-10-21 19:15:43
回答 1查看 5.7K关注 0票数 15

我有2个AWS账户:-有ECR回购的账户A。-拥有运行Fargate的ECS集群的帐户b。

我已经在帐户A中创建了一个与帐户B具有信任关系的“跨帐户”角色,并将"AmazonEC2ContainerRegistryPowerUser“策略附加到此角色。

通过将帐户B的id和“跨帐户”角色添加到存储库策略,我授予了对帐户A中的ECR存储库的访问权限。

我给法尔盖特"TaskExecutionRole“附加了一个策略,允许法尔盖特承担”跨账户“的角色。

当尝试在帐户B中部署一个引用帐户A中的镜像的Fargate任务时,我得到了一个500错误。

EN

回答 1

Stack Overflow用户

发布于 2018-10-23 01:33:38

Fargate不会自动承担跨帐户角色。幸运的是,您不需要承担其他帐户中的角色,即可从该帐户的ECR存储库中提取图像。

如果需要跨账号访问ECR中的镜像,需要在账号A的仓库中添加账号B的访问权限(通过设置repository policy),然后在账号B中指定有权限拉取的TaskExecutionRole (" ECR :GetDownloadUrlForLayer","ecr:BatchGetImage","ecr:BatchCheckLayerAvailability")。

例如,在账号A中的仓库上设置仓库策略,如下所示:

代码语言:javascript
复制
{
  "Version": "2008-10-17",
  "Statement": [
    {
      "Sid": "AllowCrossAccountPull",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::ACCOUNT_B_ID:root"
      },
      "Action": [
        "ecr:GetDownloadUrlForLayer",
        "ecr:BatchCheckLayerAvailability",
        "ecr:BatchGetImage"
      ]
    }
  ]
}

然后,在账号B中设置您的TaskExecutionRole,策略如下:

代码语言:javascript
复制
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ecr:GetAuthorizationToken",
        "ecr:BatchCheckLayerAvailability",
        "ecr:GetDownloadUrlForLayer",
        "ecr:BatchGetImage"
      ],
      "Resource": "*"
    }
  ]
}

或者,您可以为您的TaskExecutionRole使用托管策略AmazonECSTaskExecutionRolePolicy,而不是定义自己的策略。

票数 26
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52914713

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档