簡體   English   中英

基於相同的任務定義但使用不同的環境變量運行多個ECS任務

[英]Running multiple ECS tasks based on same task definition but with different environment variables

我有一個處理大量數據的任務,因此數據被分批到很多部分。 我已經為這種類型的工作編寫了任務定義,但現在我只知道如何通過為每個env注冊多個任務定義來手動設置它們。

示例每個任務都有自己的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

將所有任務arns的一些.manifest文件放入群集中會更好。

有沒有辦法以更優雅的方式運行具有不同env參數的多個類似ECS任務,然后創建大量不同的taskdefs文件?

感謝您的任何幫助和建議

使用--overrides標志運行任務時,可以覆蓋環境變量。 我經常用這個; 您可以覆蓋現有的環境變量(在任務定義中定義),也可以只添加一個新變量。 --overrides只接受JSON(沒有簡寫語法); 在你的情況下,它看起來像:

{
  "containerOverrides": [
    {
      "name": "containerNameFromTaskDefinition",
      "environment": [
        {
          "name": "BATCH_ID",
          "value": "sampleBatchId"
        }
      ]
    }
  ]
}

和命令:

aws ecs run-task --cluster $cluster --task-definition process_data_1 --overrides {"containerOverrides":[...]} 

您可以使用--overrides來覆蓋更多的東西: https--overrides

我可能在這里誤解了這個問題,但你可以把變量放在你的cli輸入.json中,並在運行任務之前使用sed交換批處理ID嗎? 當我需要換掉env變種時,我已經為應用程序部署做了這個。

首先,將要替換的變量放在taskdef模板文件中(如%BATCH_ID%)

然后做這樣的事情:(注意:Bash腳本是我的頭頂,可能需要修復)

sed 's/%BATCH_ID%/$BATCH_ID' generic_taskdef.json > process_data_$BATCH_ID.json 
aws ecs register-task-definition --cli-input-json file://process_data_$BATCH_ID.json
aws ecs run-task --cluster $cluster --task-definition process_data_$BATCH_ID

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM