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

「翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。」

環境変数の指定

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

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

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

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

  • AWS Fargate 上の Amazon ECS タスクでは、この機能を使用するには、タスクでプラットフォームバージョン 1.4.0 以降を使用する必要があります。詳細については、「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" ] } ] }