当文件中明确指定 executionRoleArn 时,为啥我会收到关于未指定的错误?

Posted

技术标签:

【中文标题】当文件中明确指定 executionRoleArn 时,为啥我会收到关于未指定的错误?【英文标题】: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

【问题讨论】:

那么……你解决了吗? 【参考方案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

以上是关于当文件中明确指定 executionRoleArn 时,为啥我会收到关于未指定的错误?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 boto3 中设置 executionRoleArn 的值?

当收到“列名不明确”错误时,您在 Google BigQuery 中使用啥格式来指定 table.column?

当明确给出 s3 路径时,模式合并不起作用

即使在使用 PySpark 读取 .ORC 文件时明确指定,也缺少标题

如何在不明确指定主键的情况下使用 Dapper Extensions 将对象插入 PostGreSql?

非文本文件 读取