Amazon ECS コンテナエージェントの設定 - Amazon Elastic Container Service

Amazon ECS コンテナエージェントの設定

Amazon ECSコンテナエージェントでは、多数の設定オプションがサポートされており、そのほとんどは環境変数を通じて設定する必要があります。次の環境変数を使用できます。すべてオプションです。

コンテナインスタンスが Amazon ECS に最適化されたAMIの Linux バリアントを使用して起動された場合は、これらの環境変数を /etc/ecs/ecs.config ファイルに設定してからエージェントを再び開始できます。起動時に Amazon EC2 ユーザーデータを使用して、コンテナインスタンスにこれらの設定変数を作成することもできます。詳細については、「Amazon EC2 ユーザーデータを使用してコンテナインスタンスをブートストラップする」を参照してください。

コンテナインスタンスが Amazon ECS に最適化された AMI の Windows バリアントを使用して起動された場合は、PowerShell SetEnvironmentVariable コマンドを使用して、これらの環境変数を設定してからエージェントを再び開始できます。詳細については、「Windows インスタンス用 Amazon EC2 ユーザーガイド」の「起動時に Linux インスタンスでコマンドを実行する」と「Amazon EC2 ユーザーデータを使用して Windows コンテナインスタンスをブートストラップする」を参照してください。

Amazon ECS コンテナエージェントを手動で開始する場合 (Amazon ECSに最適化されていない AMI の場合)、これらの環境変数は、エージェントの起動に使用する docker run コマンドで使用できます。これらの変数は構文 --env=VARIABLE_NAME=VARIABLE_VALUE で使用します。プライベートリポジトリの認証情報など、機密性の高い情報の場合は、エージェントの環境変数をファイルに保存し、--env-file path_to_env_file オプションを使用して、それらすべてを一度に渡す必要があります。以下のコマンドを使用して変数を追加できます。

sudo systemctl stop ecs sudo vi /etc/ecs/ecs.config # And add the environment variables with VARIABLE_NAME=VARIABLE_VALUE format. sudo systemctl start ecs

使用できるパラメータ

使用可能な Amazon ECS コンテナエージェントの設定パラメータについては、GitHub の「Amazon ECS コンテナエージェント」を参照してください。

Amazon S3 にコンテナインスタンスの設定を保存する

Amazon ECS コンテナエージェントの設定は、前のセクションで説明した環境変数で制御されます。Amazon ECS に最適化されたAMIの Linux バリアントは、コンテナエージェントの起動時に /etc/ecs/ecs.config でこれらの変数を検索し、見つかった変数に応じてエージェントを設定します。ECS_CLUSTER など、問題のない特定の環境変数は、Amazon EC2 ユーザーデータを経由して起動時にコンテナインスタンスに渡され、そのままこのファイルに書き込まれます。ただし、AWS 認証情報や ECS_ENGINE_AUTH_DATA 変数など機密性の高い情報は、ユーザーデータでインスタンスに渡したり、.bash_history ファイルに表示される可能性のある方法で /etc/ecs/ecs.config に書き込んだりしないでください。

設定情報を Amazon S3 のプライベートバケットに保存し、コンテナインスタンスの IAM ロールに読み取り専用アクセス権限を付与するのが、コンテナインスタンスの起動時に設定を許可する安全で便利な方法です。ecs.config ファイルのコピーはプライベートバケットに保存できます。その後、AWS CLI Amazon EC2 ユーザーデータを使用してをインストールし、インスタンスの起動時に設定情報を /etc/ecs/ecs.config にコピーできます。

Amazon S3 の読み取り専用アクセス権限をコンテナインスタンスのロールに許可するには
  1. IAM コンソール (https://console.aws.amazon.com/iam/) を開きます。

  2. ナビゲーションペインで [ロール] を選択し、コンテナインスタンスに使用する IAM ロール を選択します。このロールのタイトルは多くの場合、ecsInstanceRole です。詳細については、「Amazon ECS コンテナインスタンスの IAM ロール」を参照してください。

  3. [Managed Policies] の下で、[Attach Policy] を選択します。

  4. ポリシーの結果を絞り込むには、[ポリシーのアタッチ] ページの [フィルター] フィールドに S3 と入力します。

  5. [AmazonS3ReadOnlyAccess] ポリシーの左にあるチェックボックスをオンにし、[Attach Policy] を選択します。

ecs.config Amazon S3 のファイルを保存するには
  1. 次の形式を使用して、有効な Amazon ECS エージェントの設定変数を含む ecs.config ファイルを作成します。この例では、プライベートレジストリ認証を設定しています。詳細については、「タスクのプライベートレジストリの認証」を参照してください。

    ECS_ENGINE_AUTH_TYPE=dockercfg ECS_ENGINE_AUTH_DATA={"https://index.docker.io/v1/":{"auth":"zq212MzEXAMPLE7o6T25Dk0i","email":"email@example.com"}}
    注記

    利用可能な Amazon ECS エージェントの設定変数の完全なリストについては、GitHub の「Amazon ECS コンテナエージェント」を参照してください。

  2. 設定ファイルを保存するには、Amazon S3 内にプライベートバケットを作成します。詳細については、Amazon Simple Storage Service ユーザーガイド「バケットの作成」を参照してください。

  3. ecs.config ファイルを S3 バケットにアップロードします。詳細については、Amazon Simple Storage Service ユーザーガイドバケットへのオブジェクトの追加を参照してください。

起動時に ecs.config ファイルを Amazon S3 からロードするには
  1. このセクションの上記の手順を完了して、読み取り専用 Amazon S3 アクセス権限をコンテナインスタンスに許可し、 ecs.config ファイルをプライベート S3 バケットに保存します。

  2. Amazon ECS Linux コンテナインスタンスの起動」のステップに従って、新しいコンテナインスタンスを起動します。「ステップ 7」の手順に従って、AWS CLI をインストールする以下のスクリプト例を使用し、設定ファイルを /etc/ecs/ecs.config にコピーします。

    #!/bin/bash yum install -y aws-cli aws s3 cp s3://your_bucket_name/ecs.config /etc/ecs/ecs.config