AWS ECS任务定义:卷[0]中的未知参数:“ dockerVolumeConfiguration”,必须为以下之一:名称,主机

时间:2019-08-29 07:50:21

标签: amazon-ecs

我正在尝试在ECS上运行Wazuh / Wazuh泊坞窗容器。我能够使用Terraform注册任务定义并启动容器。但是,在使用AWS CLI命令注册tak定义时,我遇到“卷”(数据卷)问题。

命令:aws ecs --region eu-west-1 register-task-definition --family hids --cli-input-json file://task-definition.json

错误: ParamValidationError:参数验证失败: 卷[0]中的未知参数:“ dockerVolumeConfiguration”,必须为以下之一:名称,主机 2019-08-29 07:31:59,195-MainThread-awscli.clidriver-调试-使用rc 255退出

{
"containerDefinitions": [
  {
    "portMappings": [
      {
        "hostPort": 514,
        "containerPort": 514,
        "protocol": "udp"

      },
     {
        "hostPort": 1514,
        "containerPort": 1514,
        "protocol": "udp"

      },
      {
        "hostPort": 1515,
        "containerPort": 1515,
        "protocol": "tcp"

      },
      {
        "hostPort": 1516,
        "containerPort": 1516,
        "protocol": "tcp"

      },
      {
        "hostPort": 55000,
        "containerPort": 55000,
        "protocol": "tcp"

      }
    ],
    "image": "wazuh/wazuh",
    "essential": true,
    "name": "chids",
    "cpu": 1600,
    "memory": 1600,
    "mountPoints": [
        {
          "containerPath": "/var/ossec/data",
          "sourceVolume": "ossec-data"

        },
        {
          "containerPath": "/etc/filebeat",
          "sourceVolume": "filebeat_etc"

        },
        {
          "containerPath": "/var/lib/filebeat",
          "sourceVolume": "filebeat_lib"

        },
        {
          "containerPath": "/etc/postfix",
          "sourceVolume": "postfix"
        }
      ]

  }
],
"volumes": [
  {
      "name": "ossec-data",
      "dockerVolumeConfiguration": {
      "scope": "shared",
      "driver": "local",
      "autoprovision": true
    }
  },
  {
    "name": "filebeat_etc",
    "dockerVolumeConfiguration": {
    "scope": "shared",
    "driver": "local",
    "autoprovision": true
    }
  },
  {
    "name": "filebeat_lib",
    "dockerVolumeConfiguration": {
    "scope": "shared",
    "driver": "local",
    "autoprovision": true
    }
  },
  {
    "name": "postfix",
    "dockerVolumeConfiguration": {
    "scope": "shared",
    "driver": "local",
    "autoprovision": true
  }
}
]   
}

我尝试通过添加“ host”参数(但是它仅支持Bind Mounts)。但是出现了同样的错误。

    "volumes": [
  {
      "name": "ossec-data",
      "host": {
      "sourcePath": "/var/ossec/data"
    },
      "dockerVolumeConfiguration": {
      "scope": "shared",
      "driver": "local",
      "autoprovision": true
    }
  }
]

ECS应该注册具有4个数据卷和相关安装点的任务定义。

2 个答案:

答案 0 :(得分:1)

解决了这个问题。 从“卷”配置中删除了“ dockerVolumeConfiguration”参数,它起作用了。

"volumes": [
{
    "name": "ossec-data",
    "host": {
      "sourcePath": "/ecs/ossec-data"
    }

},
{
  "name": "filebeat_etc",
  "host": {
      "sourcePath": "/ecs/filebeat_etc"
    }

},
{
  "name": "filebeat_lib",
  "host": {
      "sourcePath": "/ecs/filebeat_lib"
    }

},
{
  "name": "postfix",
  "host": {
      "sourcePath": "/ecs/postfix"
    }

}   ]

答案 1 :(得分:0)

可以检查您的awscli版本吗?

aws --version

根据所有文档,您的第一个任务定义应该可以正常工作,我在本地进行了测试,没有任何问题。 可能是您使用的aws cli版本较旧,当时语法不同或参数也不同。

您可以尝试将AWS CLI更新到最新版本,然后重试吗?

-

我发现了一些其他信息:

检查aws ecs cli命令后,他们在v1.80

中将docker卷配置添加为cli的一部分。

主要的aws-cli会定期发布更新以更新命令,但它们并未提供有关每个命令的特定版本已更改的大量信息: https://github.com/aws/aws-cli/blob/develop/CHANGELOG.rst

如果更新aws-cli版本,则一切正常