環境変数の指定
環境変数は、次の方法でコンテナに渡すことができます。
-
environment
コンテナ定義パラメータを個別に使用します。これは、docker runの --env
オプションにマッピングされます。このオプションは、Fargate 起動タイプと EC2 起動タイプの両方を使用するタスクで使用できます。 -
一括で
environmentFiles
コンテナ定義パラメータを使用して、環境変数を含む 1 つ以上のファイルを一覧表示します。ファイルは、Amazon S3 でホストされている必要があります。これは、docker runの --env-file
オプションにマッピングされます。このオプションは、EC2 起動タイプを使用するタスクでのみ使用できます。
ファイルで環境変数を指定すると、環境変数を個別に指定するのではなく、環境変数を一括挿入することができます。コンテナ定義内で、環境変数ファイルを含む Amazon S3
バケットのリストを使用して environmentFiles
オブジェクトを指定します。ファイルには、ファイル拡張子 .env
を使用する必要があります。さらに、タスク定義ごとに最大 10 個のファイル制限があります。
以下は、個々の環境変数の指定方法を示すタスク定義のスニペットです。
{ "family": "", "containerDefinitions": [ { "name": "", "image": "", ... "environment": [ { "name": "
variable
", "value": "value
" } ], ... } ], ... }
以下は、環境変数ファイルの指定方法を示すタスク定義のスニペットを示します。
{ "family": "", "containerDefinitions": [ { "name": "", "image": "", ... "environmentFiles": [ { "value": "arn:aws:s3:::
s3_bucket_name
/envfile_object_name.env
", "type": "s3" } ], ... } ], ... }
環境変数ファイルの指定に関する考慮事項
コンテナ定義で環境変数ファイルを指定する際には、以下の点を考慮する必要があります。
-
この機能を使用するには、Amazon ECS コンテナインスタンスにバージョン 1.39.0 以降のコンテナエージェントが必要です。エージェントのバージョンの確認と最新バージョンへの更新については、「Amazon ECS コンテナエージェントの更新」を参照してください。
-
ファイルには、ファイル拡張子
.env
と UTF-8 エンコーディングを使用する必要があります。 -
環境ファイルの各行には、
VARIABLE=VALUE
形式で環境変数が含まれている必要があります。スペースまたは引用符は、値の一部として含まれます。#
で始まる行はコメントとして扱われ、無視されます。環境変数ファイルの構文の詳細については、「Declare default environment variables in file」を参照してください。 以下は、使用する必要がある JSON 構文の例です。
#This is a comment and will be ignored VARIABLE=VALUE ENVIRONMENT=PRODUCTION
-
コンテナ定義に
environment
パラメータを使用して環境変数が指定されている場合は、環境ファイルに含まれる変数よりも優先されます。 -
同じ変数を含む複数の環境ファイルが指定されている場合、それらのファイルは上から下に処理されます。一意の変数名を使用することをお勧めします。
-
環境ファイルがコンテナのオーバーライドとして指定されている場合、そのファイルが使用され、コンテナ定義で指定された他の環境ファイルは無視されます。
必要な IAM アクセス許可
この機能を使用するには、Amazon ECS タスクの実行ロールが必要です。これにより、コンテナエージェントは Amazon S3 から環境変数ファイルをプルできます。詳細については、「Amazon ECS タスク実行 IAM ロール」を参照してください。
作成した Amazon S3 オブジェクトへのアクセスを許可するには、以下のアクセス許可をインラインポリシーとしてタスクの実行ロールに手動で追加します。Resource
パラメータを使用して、環境変数ファイルを含む Amazon S3 バケットへのアクセス許可の範囲を指定します。詳細については、「IAM ポリシーの追加と削除」を参照してください。
-
s3:GetObject
-
s3:GetBucketLocation
アクセス許可を追加するインラインポリシーの例を以下に示します。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "
s3:GetObject
" ], "Resource": [ "arn:aws:s3:::examplebucket
/folder_name
/env_file_name
" ] }, { "Effect": "Allow", "Action": [ "s3:GetBucketLocation" ], "Resource": [ "arn:aws:s3:::examplebucket
" ] } ] }