当文件中明确指定了 executionRoleArn 时,为什么我会收到有关未指定 executionRoleArn 的错误?

Lor*_*rac 7 amazon-web-services amazon-ecs amazon-elastic-beanstalk

当尝试通过 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": [
       ....
      ]
}
Run Code Online (Sandbox Code Playgroud)

这是我在使用时遇到的确切错误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
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

Lor*_*rac 1

目前,AWS 不支持 EBS 和 ECS 以及ecsTaskExecutionRole. 解决方法是在登录时加载 bash 脚本,该脚本从 KMS 获取环境变量