使用 ecs-cli 时出现 IAM 错误
Posted
技术标签:
【中文标题】使用 ecs-cli 时出现 IAM 错误【英文标题】:IAM Error while using ecs-cli 【发布时间】:2017-03-26 00:48:54 【问题描述】:我正在尝试使用 compose 文件为 ECS 创建一个新任务,但即使我的用户具有所需的权限,我也会收到 AccessDeniedException。
$ ecs-cli compose --project-name test create
WARN[0000] Skipping unsupported YAML option for service... option name=build service name=builder
WARN[0000] Skipping unsupported YAML option for service... option name=restart service name=db
WARN[0000] Skipping unsupported YAML option for service... option name=restart service name=dbadmin
WARN[0000] Skipping unsupported YAML option for service... option name=restart service name=app
ERRO[0001] Error registering task definition error=AccessDeniedException: User: arn:aws:iam::XXXXXXX:user/foo is not authorized to perform: ecs:RegisterTaskDefinition on resource: *
status code: 400, request id: 41e6b69a-a839-11e6-84b0-e9bc2ec3f81b family=ecscompose-test
ERRO[0001] Create task definition failed error=AccessDeniedException: User: arn:aws:iam::XXXXXXX:user/foo is not authorized to perform: ecs:RegisterTaskDefinition on resource: *
status code: 400, request id: 41e6b69a-a839-11e6-84b0-e9bc2ec3f81b
FATA[0001] AccessDeniedException: User: arn:aws:iam::XXXXXXX:user/foo is not authorized to perform: ecs:RegisterTaskDefinition on resource: *
status code: 400, request id: 41e6b69a-a839-11e6-84b0-e9bc2ec3f81b
用户已附加此政策:
"Version": "2012-10-17",
"Statement": [
"Effect": "Allow",
"Action": [
"ecs:RegisterTaskDefinition",
"ecs:ListTaskDefinitions",
"ecs:DescribeTaskDefinition"
],
"Resource": [
"*"
]
]
我还尝试附加 AmazonEC2ContainerServiceFullAccess(具有 ecs:*),但没有成功。
【问题讨论】:
您是否尝试过完全的超级用户权限?如果这仍然不起作用,许可的事情可能是一个红鲱鱼。 我在该用户上尝试了 AmazonEC2ContainerServiceFullAccess 正确,但它可能取决于其他一些权限,并且没有正确传递错误。它至少会排除权限问题。 【参考方案1】:发现问题,我使用的用户有使用 MFA(MultiFactor Auth)的策略,ecs-cli 不支持。
【讨论】:
哦...我的...上帝...感谢 AWS =/ 但真诚地感谢您,agusluc!如果我没有阅读这篇文章,会浪费很多时间!【参考方案2】:我相信这篇文章对为什么会发生上述错误有一些答案,但认为不是解决方法。
Trouble deploying docker on AWS with ecs-cli
“据我了解,ecs-cli 对完整的 Docker Compose 文件语法的支持非常有限”
每位用户 Dolan Antenucci
注意警告 "WARN[0000] 跳过服务的不受支持的 YAML 选项..."
【讨论】:
尝试了一个没有抛出任何WARN的简化.yml文件,结果是一样的,AccessDeniedException【参考方案3】:ECS 不支持大部分撰写设置。但是,它应该只打印警告并忽略它们,这会产生意想不到的结果,但不应该引发权限问题。
当您看到 400 AccessDeniedExceptions 以“user_arn not authorized to perform service:action on service_resource”的形式出现时,这绝对是 IAM 问题。但是,您列出的 IAM 策略看起来是正确的。我的想法是您不知何故没有使用正确的用户凭据,或者 IAM 策略未正确应用于用户。
【讨论】:
我仔细检查了所有内容,我为 ecs-cli 工具设置的凭据适用于我的个人用户,并且该用户具有上面列出的策略。我尝试创建一对新的访问密钥/秘密密钥,但问题仍然存在。我以上是关于使用 ecs-cli 时出现 IAM 错误的主要内容,如果未能解决你的问题,请参考以下文章
使用 Boto 创建 IAM 策略时出现 MalformedPolicyDocumentException
Terraform 错误 EntityAlreadyExists:名称为 iam_for_lambda 的角色已存在
需要功能:[CAPABILITY_IAM] Cloudformation AWS 控制台
使用 Cloudformation 创建 KMS 密钥时出现消息“没有 IAM 权限来处理 AWS::KMS::Key 资源上的标签”