2016-12-29 86 views
3

要通過CLI覆蓋環境變量,我們可以根據AWS ECS Commandline Reference使用--overrides (structure)如何運行AWS ECS任務覆蓋環境變量

如何在命令行中傳遞名稱值對(結構或JSON)?

[ 
    { "name" : "NAME", "value" : "123" }, 
    { "name" : "DATE", "value" : "1234-12-12" }, 
    { "name" : "SCRIPT", "value" : "123456" } 
] 

我正在尋找一種方法來使用AWS ECS CLI覆蓋上述環境變量。 類似於:

aws ecs run-task --overrides <<just environment vars here>> --task-definition ... 

文檔不清楚。我google搜索,但沒有幫助。

回答

8

您必須提供一個JSON文檔,如--overrides option所述。

{ 
    "containerOverrides": [ 
    { 
     "name": "string", 
     "command": ["string", ...], 
     "environment": [ 
     { 
      "name": "string", 
      "value": "string" 
     } 
     ... 
     ] 
    } 
    ... 
    ], 
    "taskRoleArn": "string" 
} 

您必須指定容器來獲取環境覆蓋的name,並指定environment鍵 - 值對的列表。

您可以在參數中指定JSON文檔,也可以將文件路徑參數傳遞給任務。我將展示兩種方式。

在線傳遞JSON

你的命令看起來像這樣(填入值CONTAINER_NAME_FROM_TASK)。

aws ecs run-task --overrides '{ "containerOverrides": [ { "name": "CONTAINER_NAME_FROM_TASK", "environment": [ { "name": "NAME", "value": "123" }, { "name": "DATE", "value": "1234-12-12" }, { "name": "SCRIPT", "value": "123456" } ] } ] }' --task-definition (...) 

雖然看起來相當醜陋,並且會讓人討厭編輯。它也只適用於Unix-y系統,並且需要在Windows中引用轉義。

或者,您可以將文件路徑傳遞給AWS CLI,並讓它從文件加載重寫JSON。

傳遞一個文件路徑參數

創建一個文件,姑且稱之爲overrides.json,並把同樣的JSON到它:

{ 
    "containerOverrides": [{ 
     "name": "CONTAINER_NAME_FROM_TASK", 
     "environment": [{ 
      "name": "NAME", 
      "value": "123" 
     }, { 
      "name": "DATE", 
      "value": "1234-12-12" 
     }, { 
      "name": "SCRIPT", 
      "value": "123456" 
     }] 
    }] 
} 

然後,假設你的文件是在當前目錄

aws ecs run-task --overrides file://overrides.json --task-definition (..) 

如果你的文件其他地方的文件系統,你是一個的Linux/Unix-y座標系上:

aws ecs run-task --overrides file:///path/to/overrides.json --task-definition (..) 

如果你的文件其他地方的文件系統和你在做此Windows

aws ecs run-task --overrides file://DRIVE_LETTER:\path\to\overrides.json --task-definition (..)