我正在尝试在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个数据卷和相关安装点的任务定义。
答案 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版本,则一切正常