AWS ECS Fargate从交叉账户ECR回购中提取图像

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (21)

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

我在帐户A中创建了一个“交叉帐户”角色,并且与帐户B建立了信任关系,我也将“AmazonEC2ContainerRegistryPowerUser”政策附加到此角色。

我通过将帐户B的id和“跨帐户”角色添加到存储库策略来访问帐户A中的ECR存储库。

我将一个策略附加到fargate“TaskExecutionRole”,允许fargate承担“跨账户”角色。

当尝试在帐户B中部署Fargate任务并引用帐户A中的图像时,我收到500错误。

提问于
用户回答回答于

Fargate不会自动承担跨账户角色。幸运的是,您不需要在另一个帐户中担任角色,以便从该帐户的ECR存储库中提取图像。

要在ECR中启用对图像的跨帐户访问,请在帐户A的存储库中添加帐户B的访问权限(通过设置存储库策略),然后在帐户B中指定具有从ECR提取权限的TaskExecutionRole(“ecr:GetDownloadUrlForLayer” ,“ecr:BatchGetImage”,“ecr:BatchCheckLayerAvailability”)。

例如,在帐户A中的存储库上设置存储库策略,如下所示:

{
  "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设置为具有如下策略:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ecr:GetAuthorizationToken",
        "ecr:BatchCheckLayerAvailability",
        "ecr:GetDownloadUrlForLayer",
        "ecr:BatchGetImage"
      ],
      "Resource": "*"
    }
  ]
}

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

所属标签

可能回答问题的人

  • 天使的炫翼

    17 粉丝531 提问9 回答
  • 优惠活动秘书

    0 粉丝2 提问8 回答
  • 最爱开车啦

    8 粉丝503 提问6 回答
  • 富有想象力的人

    3 粉丝0 提问5 回答

扫码关注云+社区

领取腾讯云代金券