環境変数の指定 - Amazon Elastic Container Service

環境変数の指定

重要

機密データは、AWS Secrets Manager secrets または AWS Systems Manager Parameter Store のパラメータに保存することをお勧めします。詳細については、「機密データの指定」を参照してください。

タスク定義で指定された環境変数は、許可されたすべての IAM ユーザーとロールが、タスク定義の DescribeTaskDefinition アクションを読み取ることができます。

環境変数ファイルは Amazon S3 のオブジェクトのため、Amazon S3 のセキュリティに関するすべての考慮事項が適用されます。以下のセクション 必要な IAM 許可 を参照してください。

環境変数は、次の方法でコンテナに渡すことができます。

  • environment コンテナ定義パラメータを個別に使用します。これは、docker run--env オプションにマッピングされます。

  • 一括で environmentFiles コンテナ定義パラメータを使用して、環境変数を含む 1 つ以上のファイルを一覧表示します。ファイルは、Amazon S3 でホストされている必要があります。これは、docker run--env-file オプションにマッピングされます。

ファイルで環境変数を指定すると、環境変数を個別に指定するのではなく、環境変数を一括挿入することができます。コンテナ定義内で、環境変数ファイルを含む environmentFiles バケットのリストを使用して Amazon S3 オブジェクトを指定します。ファイルには、ファイル拡張子 .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 EC2 上の Amazon ECS タスクでは、コンテナインスタンスにバージョン 1.39.0 以降のコンテナエージェントが必要です。エージェントのバージョンの確認と最新バージョンへの更新については、「Amazon ECS コンテナエージェントをアップデートする」を参照してください。

  • AWS Fargate 上のAmazon ECS タスクでは、この機能を使用するには、タスクでプラットフォームバージョン 1.4.0 以降 (Linux) を使用する必要があります。詳細については、「AWS Fargate プラットフォームのバージョン」を参照してください。

    変数がオペレーティングシステムプラットフォームでサポートされていることを確認します。詳細については、「コンテナ定義」および「その他のタスク定義パラメータ」を参照してください。

  • ファイルには、ファイル拡張子 .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" ] } ] }