web-dev-qa-db-ja.com

AWS ECSタスクを実行して環境変数を上書きする方法

CLI経由で環境変数を上書きするには、 AWS ECSコマンドラインリファレンス に従って--overrides (structure)を使用できます。

コマンドラインで名前と値のペア(構造または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 ...

ドキュメントは明確ではありません。私はググったが助けられなかった。

19
sith

--overridesオプション に記載されているJSONドキュメントを提供する必要があります。

{
  "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 (..)
20
wkl