環境変数を Amazon ECS コンテナに渡す
重要
機密データは、AWS Secrets Manager secrets または AWS Systems Manager Parameter Store のパラメータに保存することをお勧めします。詳細については、「Amazon ECS コンテナに機密データを渡す」を参照してください。
環境変数ファイルは Amazon S3 のオブジェクトのため、Amazon S3 のセキュリティに関するすべての考慮事項が適用されます。
Fargate の Windows コンテナと Windows コンテナでは、environmentFiles
パラメータを使用できません。
環境変数ファイルを作成して Amazon S3 に保存し、環境変数をコンテナに渡すことができます。
ファイルに環境変数を指定することで、環境変数を一括で挿入できます。コンテナ定義内で、環境変数ファイルを含む environmentFiles
バケットのリストを使用して Amazon S3 オブジェクトを指定します。
Amazon ECS は環境変数にサイズ制限を適用しませんが、環境変数ファイルが大きいとディスク容量が一杯になってしまう可能性があります。環境変数ファイルを使用する各タスクは、ファイルのコピーをディスクにダウンロードします。Amazon ECS は、タスクのクリーンアップの一環としてファイルを削除します。
サポートされている環境変数については、「高度なコンテナ定義パラメータ - 環境」を参照してください。
コンテナ定義で環境変数ファイルを指定する際には、以下の点を考慮してください。
-
Amazon EC2 上の Amazon ECS タスクでこの機能を使用するには、コンテナインスタンスにバージョン
1.39.0
以降のコンテナエージェントが必要です。エージェントのバージョンの確認方法と最新バージョンへの更新方法については、「Amazon ECS コンテナエージェントをアップデートする」を参照してください。 -
AWS Fargate 上のAmazon ECS タスクでは、この機能を使用するには、タスクでプラットフォームバージョン
1.4.0
以降 (Linux) を使用する必要があります。詳細については、「Amazon ECS 向け Fargate プラットフォームバージョン」を参照してください。変数がオペレーティングシステムプラットフォームでサポートされていることを確認します。詳細については、コンテナ定義およびその他のタスク定義パラメータを参照してください。
-
ファイルには、ファイル拡張子
.env
と UTF-8 エンコーディングを使用する必要があります。 -
タスク実行ロールは、Amazon S3 の追加アクセス許可でこの機能を使用するのに必要です。これにより、コンテナエージェントは Amazon S3 から環境変数ファイルをプルできます。詳細については、「Amazon ECS タスク実行IAM ロール」を参照してください。
-
1 つのタスク定義につき 10 ファイルという制限があります。
-
環境ファイルの各行には、
VARIABLE=VALUE
形式で環境変数を含む必要があります。スペースまたは引用符は、Amazon ECS ファイルの値の一部として含まれます。#
で始まる行はコメントとして扱われ、無視されます。環境変数ファイルの構文の詳細については、Declare default environment variables in fileを参照してください。 次に、適切な構文を示します。
#This is a comment and will be ignored VARIABLE=VALUE ENVIRONMENT=PRODUCTION
-
コンテナ定義に
environment
パラメータを使用して環境変数が指定されている場合は、環境ファイルに含まれる変数よりも優先されます。 -
同じ変数を含む複数の環境ファイルが指定されている場合、それらのファイルは入力順に処理されます。これは、変数の最初の値が使用され、重複する変数の後続の値は無視されることを意味します。一意の変数名を使用することをお勧めします。
-
環境ファイルがコンテナをオーバーライドするように指定されている場合、そのファイルが適用されます。さらに、コンテナ定義で指定されているその他の環境ファイルは、すべて無視されます。
-
Fargate 起動タイプには次のルールが適用されます。
-
このファイルはネイティブの Docker env ファイルと同様に処理されます。
-
空白で Amazon S3 に保存されている環境変数を参照するコンテナ定義は、コンテナに表示されません。
-
シェルエスケープ処理はサポートされていません。
-
コンテナのエントリポイントが
VARIABLE
値を解釈します。
-
例
以下は、環境変数ファイルの指定方法を示すタスク定義のスニペットを示します。
{ "family": "", "containerDefinitions": [ { "name": "", "image": "", ... "environmentFiles": [ { "value": "arn:aws:s3:::
amzn-s3-demo-bucket
/envfile_object_name.env
", "type": "s3" } ], ... } ], ... }