【问题标题】:Why do I get an error about executionRoleArn not being specified when it's clearly specified in the file?当文件中明确指定 executionRoleArn 时,为什么我会收到关于未指定的错误?
【发布时间】:2019-11-18 02:23:27
【问题描述】:

当尝试通过 beanstalk 使用包含机密的 dockerrun.aws.json 文件部署我的多 docker 应用程序时,我收到一个错误,我必须指定 executionRoleArn。当我查看文件时,它已定义。

我尝试将它移动到文件中的不同位置,也尝试定义 taskRoleArn,但没有任何效果。我找不到任何暗示它在 aws 文档中不受支持。我关注了这个页面:https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_execution_IAM_role.html

这是我部分编辑的 dockerrun.aws.json 文件。

{
    "AWSEBDockerrunVersion": 2,
    "executionRoleArn": "arn:aws:iam::ACCOUNT_ID:role/ecsTaskExecutionRole",
    "containerDefinitions": [{
        ...
        "secrets": [
            {
                "name" : "SOME_ENV",
                "valueFrom" : "arn:aws:ssm:REGION:ACCOUNT_ID:parameter/MY_SECRET" 
            },
        ...
        ],
        ...
     }],
     "volumes": [
       ....
      ]
}

这是我在使用 eb deploy 时遇到的确切错误:

ERROR   Service:AmazonECS, Code:ClientException, Message:When you 
are specifying container secrets, you must also specify a value 
for 'executionRoleArn'., 
Class:com.amazonaws.services.ecs.model.ClientException

【问题讨论】:

  • 那么……你解决了吗?

标签: amazon-web-services amazon-elastic-beanstalk amazon-ecs


【解决方案1】:

目前,AWS 不支持带有ecsTaskExecutionRole 的 ECS 的 EBS。解决方法是在登录时加载一个 bash 脚本,该脚本从 KMS 获取环境变量

【讨论】:

    【解决方案2】:

    以下是我可以告诉你的:

    • GitHub 上有帖子表明如果未定义任何机密,AWS API 会以您提供的错误消息进行响应。 [1]
    • secrets 密钥相对较新,因此您的 eb cli 版本可能不支持它

    能否请您检查一下您是否使用的是最新版本的 eb cli?

    参考文献

    [1]https://github.com/aws/aws-sdk-go/issues/2370#issuecomment-449780818

    【讨论】:

    • 实际上,如果你使用 EBS 和 ECS,你就不能使用 ecsTaskExecutionRole
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-30
    • 2017-06-05
    • 1970-01-01
    • 1970-01-01
    • 2012-03-27
    • 1970-01-01
    • 2013-11-05
    相关资源
    最近更新 更多