メニュー
Amazon EC2 Container Service
開発者ガイド (API Version 2014-11-13)

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

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

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

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

使用できるパラメーター

環境キー 値の例 説明 デフォルト値
ECS_CLUSTER MyCluster このエージェントが確認するクラスター。この値を定義しない場合、default クラスターが想定されます。default クラスターが存在しない場合は、Amazon ECS コンテナエージェントによってその作成が試みられます。default 以外のクラスターを指定した場合、そのクラスターが存在しないと、登録は失敗します。 default
ECS_RESERVED_PORTS [22, 80, 5000, 8080] このコンテナインスタンスのスケジューリングに使用できないとマークするポート配列。 [22, 2375, 2376, 51678]
ECS_RESERVED_PORTS_UDP [53, 123] このコンテナインスタンスのスケジューリングに使用できないとマークする UDP 配列。 []
ECS_ENGINE_AUTH_TYPE dockercfg | docker プライベートレジストリの認証で必須です。これは、ECS_ENGINE_AUTH_DATA の認証データのタイプです。詳細については、「認証形式」を参照してください。 Null
ECS_ENGINE_AUTH_DATA

例 (ECS_ENGINE_AUTH_TYPE=dockercfg):

{"https://index.docker.io/v1/":{"auth":"zq212MzEXAMPLE7o6T25Dk0i","email":"email@example.com"}}

例 (ECS_ENGINE_AUTH_TYPE=docker):

{"https://index.docker.io/v1/":{"username":"my_name","password":"my_password","email":"email@example.com"}}

プライベートレジストリの認証で必須です。ECS_ENGINE_AUTH_TYPE=dockercfg の場合、ECS_ENGINE_AUTH_DATA 値は、docker login を実行して作成された Docker 設定ファイル (~/.dockercfg または ~/.docker/config.json) の内容にする必要があります。ECS_ENGINE_AUTH_TYPE=docker の場合は、ECS_ENGINE_AUTH_DATA 値は、認証を受けるレジストリサーバーの JSON 表現であり、またそのレジストリに必要な認証パラメーターである必要があります (アカウントのユーザー名、パスワード、E メールアドレスなど)。詳細については、「認証形式」を参照してください。 Null
AWS_DEFAULT_REGION us-east-1 API リクエストで使用されるリージョン。正しいバックエンドホストを推測するためにも使用します。 EC2 インスタンスのメタデータから取得されます。
AWS_ACCESS_KEY_ID AKIAIOSFODNN7EXAMPLE エージェントがすべてのコールで使用するアクセスキー EC2 インスタンスのメタデータから取得されます。
AWS_SECRET_ACCESS_KEY wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY エージェントがすべてのコールで使用するシークレットキー EC2 インスタンスのメタデータから取得されます。
DOCKER_HOST unix:///var/run/docker.sock Docker デーモンへの接続を作成するために使用されます。Docker クライアントで使用される環境変数と同じように動作します。 unix:///var/run/docker.sock
ECS_LOGLEVEL crit | error | warn | info | debug stdout でログ記録するレベル。 info
ECS_LOGFILE /ecs-agent.log 完全なデバッグ情報を出力するパス。空白の場合、ログは記録されません。この値が設定されている場合、デバッグレベルのログが (ECS_LOGLEVEL に関わらず) そのファイルに書き込まれます。 Null
ECS_CHECKPOINT true | false ECS_DATADIR で指定された場所にチェックポイント状態を保存するかどうか。 ECS_DATADIR に明示的に空ではない値が設定されている場合は、ECS_CHECKPOINTtrue に設定されます。それ以外の場合は false に設定されます。
ECS_DATADIR /data Amazon ECS コンテナエージェントを実行しているコンテナの永続データディレクトリの名前。ディレクトリは、クラスターおよびエージェントの状態に関する情報を保存するために使用されます。 Null
ECS_UPDATES_ENABLED true | false ECS エージェントの更新がリクエストされた場合に終了するかどうか。 false
ECS_UPDATE_DOWNLOAD_DIR /cache 更新 tarball をダウンロードしたときにそれを配置するコンテナ内のファイルシステムの場所。
ECS_DISABLE_METRICS true | false Amazon ECS の CloudWatch メトリクスを無効にするかどうか。この値が true に設定されている場合は、CloudWatch メトリクスは収集されません。 false
ECS_DOCKER_GRAPHPATH /var/lib/docker 起動されたコンテナの状態ファイルへのパスを作成するために使用されます。状態ファイルはコンテナの使用状況メトリクスを読み取るために使用されます。 /var/lib/docker
AWS_SESSION_TOKEN 一時的な認証情報を使用したセッショントークン EC2 インスタンスのメタデータから取得されます。
ECS_RESERVED_MEMORY 32 ECS で管理されない処理用に予約されたメモリ量 (MiB)。 0
ECS_AVAILABLE_LOGGING_DRIVERS ["json-file","awslogs"]

awslogs ログドライバーの使用方法については、「awslogs ログドライバーを使用する」を参照してください。

ご使用の Docker バージョンで使用できるさまざまなロギングドライバーおよびその設定方法の詳細については、Docker ドキュメントの Configure logging drivers を参照してください。

コンテナインスタンスで使用できるロギングドライバー。コンテナインスタンスで実行する Amazon ECS コンテナエージェントは、ECS_AVAILABLE_LOGGING_DRIVERS 環境変数を使用して、そのインスタンスで使用できるロギングドライバーを登録する必要があります。その後、そのインスタンスに配置されたコンテナがタスクでこれらのドライバーのログ設定オプションを使用できるようになります。 ["json-file","awslogs"]
ECS_DISABLE_PRIVILEGED true | false 特権を持つコンテナの起動がコンテナインスタンスで無効になっているかどうか。この値を true に設定すると、特権を持つコンテナは許可されません。 false
ECS_SELINUX_CAPABLE true | false SELinux がコンテナインスタンスで使用できるかどうか。 false
ECS_APPARMOR_CAPABLE true | false AppArmor がコンテナインスタンスで使用できるかどうか。 false
ECS_ENGINE_TASK_CLEANUP_WAIT_DURATION 1h (有効な時間単位は「ns」、「us」 (または「µs」)、「ms」「s」、「m」、および「h」です。) タスクが停止してから docker コンテナが削除されるまでの待機時間。これは docker コンテナのデータを削除するため、この値の設定が小さすぎると、削除される前に停止したコンテナを調べたりログを確認したりできない場合があることに注意してください。最小の期間は 1m です。1 分より短い値は無視されます。 3h
ECS_CONTAINER_STOP_TIMEOUT 10m (有効な時間単位は「ns」、「us」 (または「µs」)、「ms」「s」、「m」、および「h」です。) タスクが停止してから、コンテナが正常に自己終了しない場合に強制的に終了されるまでの待機時間。 30s
HTTP_PROXY 10.0.0.131:3128 ECS エージェントがインターネットに接続するために使用する HTTP プロキシのホスト名 (または IP アドレス) およびポート番号 (たとえば、コンテナインスタンスに Amazon VPC インターネットゲートウェイまたは NAT ゲートウェイまたはインスタンスを経由した外部ネットワークアクセスがない場合)。この変数を設定する場合は、NO_PROXY 変数も設定して、プロキシから EC2 インスタンスのメタデータおよび Docker デーモンのトラフィックをフィルタリングする必要があります。詳細については、「HTTP プロキシ設定」を参照してください。 Null
NO_PROXY
  • Linux: 169.254.169.254,169.254.170.2,/var/run/docker.sock

  • Windows: 169.254.169.254,169.254.170.2,\\.\pipe\docker_engine

指定された HTTP_PROXY に転送しない HTTP トラフィック。プロキシから EC2 インスタンスのメタデータおよび Docker デーモントラフィックをフィルタリングするには、169.254.169.254,/var/run/docker.sock を指定する必要があります。詳細については、「HTTP プロキシ設定」を参照してください。 Null
ECS_ENABLE_TASK_IAM_ROLE true | false bridge または default ネットワークモードを使用しているタスクコンテナのコンテナインスタンスで、タスク用の IAM ロールを有効にする必要があります。詳細については、「タスク用の IAM ロール」を参照してください。 false
ECS_ENABLE_TASK_IAM_ROLE_NETWORK_HOST true | false host ネットワークモードを使用しているタスクコンテナのコンテナインスタンスで、タスク用の IAM ロールを有効にする必要があります。この変数はエージェントバージョン 1.12.0 以降でのみサポートされています。詳細については、「タスク用の IAM ロール」を参照してください。 false
ECS_DISABLE_IMAGE_CLEANUP true Amazon ECS エージェントで自動イメージクリーンアップを無効にするかどうか。詳細については、「自動化タスクとイメージのクリーンアップ」を参照してください。 false
ECS_IMAGE_CLEANUP_INTERVAL 30m 自動化されたイメージクリーンアップサイクルの間隔。10 分未満に設定すると、値は無視されます。 30m
ECS_IMAGE_MINIMUM_CLEANUP_AGE 30m イメージが取得されてから自動イメージクリーンアップの対象になるまでの時間の最小間隔。 1h
ECS_NUM_IMAGES_DELETE_PER_CYCLE 5 1 つの自動イメージクリーンアップのサイクルで削除するイメージの最大数。1 未満に設定すると、値は無視されます。 5
ECS_INSTANCE_ATTRIBUTES {"custom attribute": "custom_attribute_value"}

カスタム属性の使用方法の詳細については、「属性」を参照してください。

コンテナインスタンスに適用する JSON 形式のカスタム属性のリスト。インスタンス登録でこの属性を使用すると、カスタム属性を追加し、AWS マネジメントコンソール経由でカスタム属性を追加する手動メソッドをスキップできます。

この変数に無効な JSON 値を使用すると、エージェントはコード 5 とともに終了し、エージェントログにメッセージが表示されます。JSON 値が有効でも属性の検証時に問題が検出される (値が長すぎる、無効な文字が含まれているなど) と、コンテナインスタンスの登録は実行されますが、エージェントはコード 5 とともに終了し、エージェントログにメッセージが書き込まれます。エージェントログを確認する方法については、「Amazon ECS コンテナエージェントログ」を参照してください。

Null

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

Amazon ECS コンテナエージェントの設定は、上記の環境変数によって制御されます。コンテナエージェントの開始時に Amazon ECS 最適化 AMI が /etc/ecs/ecs.config 内のこれらの変数を確認し、それに従ってエージェントを設定します。ECS_CLUSTER など、問題のない特定の環境変数は、Amazon EC2 ユーザーデータを経由して起動時にコンテナインスタンスに渡され、そのままこのファイルに書き込まれます。ただし、AWS 認証情報や ECS_ENGINE_AUTH_DATA 変数など機密性の高い情報は、ユーザーデータでインスタンスに渡したり、.bash_history ファイルに表示される可能性のある方法で /etc/ecs/ecs.config に書き込んではいけません。

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

Amazon S3 の読み取り専用アクセス権限をコンテナインスタンスのロールに許可するには

  1. https://console.aws.amazon.com/iam/ にある IAM コンソールを開きます。

  2. ナビゲーションペインで [Roles (ロール) ] を選択します。

  3. コンテナインスタンスに対して使用する IAM ロールを選択します (このロールには多くの場合、ecsInstanceRole というタイトルが付けられます)。詳細については、「Amazon ECS コンテナインスタンスの IAM ロール」を参照してください。

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

  5. [Attach Policy] ページで、ポリシーの結果を絞り込むために [Filter] フィールドに S3 と入力します。

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

ecs.config ファイルを Amazon S3 に保存するには

  1. 以下の形式を使用して、有効な環境変数と「ecs.config」からの値を持つ Amazon ECS コンテナエージェントの設定 ファイルを作成します。この例では、プライベートレジストリ認証を設定しています。詳細については、「プライベートレジストリの認証」を参照してください。

    Copy
    ECS_ENGINE_AUTH_TYPE=dockercfg ECS_ENGINE_AUTH_DATA={"https://index.docker.io/v1/":{"auth":"zq212MzEXAMPLE7o6T25Dk0i","email":"email@example.com"}}
  2. Amazon S3 内に、設定ファイルを保存するプライベートバケットを作成します。詳細については、Amazon Simple Storage Service 入門ガイド の「バケットの作成」を参照してください。

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

起動時に ecs.config ファイルを Amazon S3 からロードするには

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

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

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