Ant*_*odr 4 amazon-web-services amazon-ecs aws-ecr
我有2个AWS账户:-具有ECR回购的账户A。-具有运行Fargate的ECS群集的帐户b。
我在具有对账户B的信任关系的账户A中创建了“跨账户”角色,并且我已经将“ AmazonEC2ContainerRegistryPowerUser”策略附加到了该角色。
通过在存储库策略中添加帐户B的ID和“跨帐户”角色,可以访问帐户A中的ECR存储库。
我将策略附加到Fargate的“ TaskExecutionRole”上,使Fargate可以承担“跨帐户”角色。
当尝试通过引用帐户A中的图像在帐户B中部署Fargate任务时,出现500错误。
Sam*_*arp 10
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"
]
}
]
}
Run Code Online (Sandbox Code Playgroud)
然后,将帐户B中的TaskExecutionRole设置为具有以下策略:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ecr:GetAuthorizationToken",
"ecr:BatchCheckLayerAvailability",
"ecr:GetDownloadUrlForLayer",
"ecr:BatchGetImage"
],
"Resource": "*"
}
]
}
Run Code Online (Sandbox Code Playgroud)
或者,您可以AmazonECSTaskExecutionRolePolicy对TaskExecutionRole 使用托管策略,而不用定义自己的策略。
| 归档时间: |
|
| 查看次数: |
1694 次 |
| 最近记录: |