【发布时间】:2020-09-11 06:55:08
【问题描述】:
我正在使用亚马逊提供 ECSInstance 角色运行 ECS 实例,其 JSON 中的策略如下所示:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ec2:DescribeTags",
"ecs:CreateCluster",
"ecs:DeregisterContainerInstance",
"ecs:DiscoverPollEndpoint",
"ecs:Poll",
"ecs:RegisterContainerInstance",
"ecs:StartTelemetrySession",
"ecs:UpdateContainerInstancesState",
"ecs:Submit*",
"ecr:GetAuthorizationToken",
"ecr:BatchCheckLayerAvailability",
"ecr:GetDownloadUrlForLayer",
"ecr:BatchGetImage",
"logs:CreateLogStream",
"logs:PutLogEvents"
],
"Resource": "*"
}
]
}
我可以看到 ECR 特定的访问权限,其中包括 Submit* 和 "ecr:BatchGetImage" 等,使用它们我应该能够简单地提取 ECR 中的任何图像,但是当我尝试这样做时,它给了我以下错误:
调用时发生错误 (AccessDeniedException) DescribeRepositories 操作: 用户: arn:aws:sts::755671380468:假定角色/ecsInstanceRole/i-0e3a77458fe98d842 无权执行:ecr:DescribeRepositories 资源: arn:aws:ecr:ap-south-1:755671380468:repository/*
现在,由于错误消息表明它没有 ecr:DescribeRepositories 并且当我尝试添加内联策略并搜索 ecr 它没有给出任何结果,所以我该如何添加这个或一些我现有角色的其他策略,以便我的 ECS 实例能够下载图像并将其推送到 ECR?
【问题讨论】:
-
“尝试添加内联策略并搜索 ecr 没有给出任何结果”是什么意思?您可以手动添加该行。
-
您能解释一下您是如何以及在何处添加内联策略的吗?它的json格式是什么?
-
@Marcin,我没有添加内联策略,因为我找不到正确的策略,你能建议什么应该是正确的内联策略,我会添加它。
-
我将发布一个示例作为答案,因为我无法在 cmets 中格式化代码。
-
@Marcin,谢谢,我只是在测试这个,会随时通知你
标签: amazon-web-services amazon-iam amazon-ecr