gpt4 book ai didi

amazon-web-services - AWS ECS Fargate 从跨账户 ECR 存储库拉取镜像

转载 作者:行者123 更新时间:2023-12-04 08:07:20 25 4
gpt4 key购买 nike

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

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

我通过向存储库策略添加账户 B 的 ID 和“跨账户”角色来授予对账户 A 中 ECR 存储库的访问权限。

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

尝试在账户 B 中部署 Fargate 任务并引用账户 A 中的图像时,出现 500 错误。

最佳答案

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

要启用对 ECR 中图像的跨账户访问,请在账户 A 的存储库中为账户 B 添加访问权限(通过设置 repository policy ),然后在账户 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": "*"
}
]
}

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

关于amazon-web-services - AWS ECS Fargate 从跨账户 ECR 存储库拉取镜像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52914713/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com