基于相同的任务定义但使用不同的环境变量运行多个 ECS 任务

Iva*_*nik 6 amazon-ec2 amazon-web-services amazon-ecs

我有一个处理大量数据的任务,因此数据被分成很多部分。我已经为此类工作编写了任务定义,但现在我只知道如何通过为每个环境注册多个任务定义来手动设置它们。

每个任务都有自己的 env BATCH_ID 的示例

  aws ecs register-task-definition --cli-input-json file://taskdef1.json  
  aws ecs run-task --cluster $cluster --task-definition process_data_1

  aws ecs register-task-definition --cli-input-json file://taskdef2.json  
  aws ecs run-task --cluster $cluster --task-definition process_data_2
Run Code Online (Sandbox Code Playgroud)

如果为集群放置所有任务 arns 的一些.manifest文件,那就更好了。

有没有办法以更优雅的方式运行多个具有不同环境参数的类似 ECS 任务,然后创建大量不同的 taskdefs 文件?

感谢您的帮助和建议

Zde*_*k F 5

当您使用标志运行任务时,您可以覆盖环境变量--overrides。我经常用这个; 您可以覆盖现有环境变量(在任务定义中定义)或简单地添加一个新环境变量。 --overrides仅接受 JSON(无简写语法);在你的情况下,它看起来像:

{
  "containerOverrides": [
    {
      "name": "containerNameFromTaskDefinition",
      "environment": [
        {
          "name": "BATCH_ID",
          "value": "sampleBatchId"
        }
      ]
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

和命令:

aws ecs run-task --cluster $cluster --task-definition process_data_1 --overrides {"containerOverrides":[...]} 
Run Code Online (Sandbox Code Playgroud)

--overrides当然,您可以用来覆盖更多内容: https://docs.aws.amazon.com/cli/latest/reference/ecs/run-task.html