使用 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 的角色已存在

尝试运行 aws iam list-users 命令时出错

ecs-cli docker compose 版本

需要功能:[CAPABILITY_IAM] Cloudformation AWS 控制台

使用 Cloudformation 创建 KMS 密钥时出现消息“没有 IAM 权限来处理 AWS::KMS::Key 资源上的标签”