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 オプションを使用して、それらすべてを一度に渡す必要があります。

使用できるパラメータ

使用可能な Amazon ECS コンテナエージェント構成パラメータは次のとおりです。エージェントが内部的に使用する文書化されていない変数があります。これらの変数は表示可能ですが、顧客用には適していません。詳細については、GitHub の「Amazon ECS コンテナエージェント」を参照してください。

ECS_CLUSTER

値の例: MyCluster

Linux のデフォルト値: default

Windows のデフォルト値: default

このエージェントが確認するクラスター。この値を定義しない場合、default クラスターが想定されます。default クラスターが存在しない場合は、Amazon ECS コンテナエージェントによってその作成が試みられます。default 以外のクラスターを指定した場合、そのクラスターが存在しないと、登録は失敗します。

ECS_RESERVED_PORTS

値の例: [22, 80, 5000, 8080]

Linux のデフォルト値: [22, 2375, 2376, 51678, 51679, 51680]

Windows のデフォルト値: [53, 135, 139, 445, 2375, 2376, 3389, 5985, 51678, 51679]

このコンテナインスタンスのスケジューリングに使用できないとマークするポート配列。

ECS_RESERVED_PORTS_UDP

値の例: [53, 123]

Linux のデフォルト値: []

Windows のデフォルト値: []

このコンテナインスタンスのスケジューリングに使用できないとマークする UDP 配列。

ECS_ENGINE_AUTH_TYPE

値の例: dockercfg | docker

Linux のデフォルト値: Null

Windows のデフォルト値: Null

プライベートレジストリの認証で必須です。これは、ECS_ENGINE_AUTH_DATA の認証データのタイプです。詳細については、「認証形式」を参照してください。

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"}}

Linux のデフォルト値: Null

Windows のデフォルト値: Null

プライベートレジストリの認証で必須です。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 メールアドレスなど) である必要があります。詳細については、「認証形式」を参照してください。

AWS_DEFAULT_REGION

値の例: us-east-1

Linux のデフォルト値:Amazon EC2 インスタンスメタデータから取得されます。

Windows のデフォルト値: Amazon EC2 インスタンスメタデータから取得されます。

API リクエストで使用されるリージョン。正しいバックエンドホストを推測するためにも使用します。

AWS_ACCESS_KEY_ID

値の例: AKIAIOSFODNN7EXAMPLE

Linux のデフォルト値:Amazon EC2 インスタンスメタデータから取得されます。

Windows のデフォルト値: Amazon EC2 インスタンスメタデータから取得されます。

エージェントがすべてのコールで使用するアクセスキー

AWS_SECRET_ACCESS_KEY

値の例: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY

Linux のデフォルト値:Amazon EC2 インスタンスメタデータから取得されます。

Windows のデフォルト値: Amazon EC2 インスタンスメタデータから取得されます。

エージェントがすべてのコールで使用するシークレットキー

AWS_SESSION_TOKEN

Linux のデフォルト値:Amazon EC2 インスタンスメタデータから取得されます。

Windows のデフォルト値: Amazon EC2 インスタンスメタデータから取得されます。

一時的な認証情報を使用したセッショントークン

DOCKER_HOST

値の例: unix:///var/run/docker.sock

Linux のデフォルト値: unix:///var/run/docker.sock

Windows のデフォルト値: npipe:////./pipe/docker_engine

Docker デーモンへの接続を作成するために使用されます。Docker クライアントで使用される環境変数と同じように動作します。

ECS_LOGFILE

値の例: /ecs-agent.log

Linux のデフォルト値: Null

Windows のデフォルト値: Null

エージェントログを書き込む場所。Amazon ECS-最適化 AMIを使用する際のデフォルトの方法である,ecs-init 経由でエージェントを実行している場合、コンテナ内のパスは、/logになり、ecs-initはホスト上の /var/log/ecs/ にマウントします。

ECS_LOGLEVEL

値の例:criterrorwarninfodebug

Linux のデフォルト値: info

Windows のデフォルト値: info

ログに記録する詳細レベル。

ECS_LOGLEVEL_ON_INSTANCE

値の例:nonecriterrorwarninfodebug

Linux のデフォルト値:noneに明確に空でない値が設定されている場合はECS_LOG_DRIVER、それ以外の場合はECS_LOGLEVELと同じ値

Windows のデフォルト値:noneに明確に空ではない値が設定されている場合はECS_LOG_DRIVER、それ以外の場合はECS_LOGLEVELと同じ値

ECS_LOGLEVELをオーバーライドして、ロギングドライバーに記録されるレベルとは別に、オンインスタンスのログファイルに記録される必要のある詳細レベルを設定するために使用できます。ロギングドライバが明確に設定されている場合、インスタンス上のログはデフォルトでオフになりますが、この変数を使用してオンに戻すことができます。

ECS_LOG_DRIVER

値の例: awslogsfluentdgelfjson-filejournaldlogentriessyslogsplunk

Linux のデフォルト値: json-file

Windows のデフォルト値: 該当しません

エージェントコンテナで使用されるロギングドライバを決定します。

ECS_CHECKPOINT

値の例: true | false

Linux のデフォルト値: ECS_DATADIR に、空ではない値が明示的に設定されている場合、ECS_CHECKPOINTtrue に設定されます。それ以外の場合は false に設定されます。

Windows のデフォルト値: ECS_DATADIR に、空ではない値が明示的に設定されている場合、ECS_CHECKPOINTtrue に設定されます。それ以外の場合は false に設定されます。

ECS_DATADIR で指定された場所にチェックポイント状態を保存するかどうか。

ECS_DATADIR

値の例: /data

Linux のデフォルト値: /data/

Windows のデフォルト値: C:\ProgramData\Amazon\ECS\data

Amazon ECS コンテナエージェントを実行しているコンテナの永続的データディレクトリの名前。ディレクトリは、クラスターおよびエージェントの状態に関する情報を保存するために使用されます。

ECS_UPDATES_ENABLED

値の例: true | false

Linux のデフォルト値: false

Windows のデフォルト値: false

Amazon ECS エージェントの更新がリクエストされた場合に終了するかどうかになります。

ECS_DISABLE_METRICS

値の例: true | false

Linux のデフォルト値: false

Windows のデフォルト値: true

Amazon ECS の CloudWatch メトリックスを無効にするかどうか。この値が true に設定されている場合は、 CloudWatch メトリクスは収集されません。

ECS_POLL_METRICS

値の例: true | false

Linux のデフォルト値: false (以下の説明を参照)

Windows のデフォルト値: false (以下の説明を参照)

タスクの CloudWatch メトリクスを収集するときにポーリングするかストリーミングするか。

1.40.0 より前のバージョンのエージェントでは、デフォルト値は false でした。1.40.0 から 1.42.0 までのエージェントバージョンでは、デフォルト値は true でした。エージェントバージョン 1.43.0 以降では、デフォルト値は false です。

重要

ECS_POLL_METRICS を falseに設定すると、Amazon EC2インスタンスが複数のコンテナをホストしている場合、エージェント、dockerd、containerd による CPU 使用率が高くなります。

ECS_POLLING_METRICS_WAIT_DURATION

値の例: 30s

Linux のデフォルト値: 15s

Windows のデフォルト値: 15s

タスクの新しい CloudWatch メトリクスをポーリングするまでの待機時間。ECS_POLL_METRICStrue の場合にのみ使用されます。

ECS_RESERVED_MEMORY

値の例: 32

Linux のデフォルト値: 0

Windows のデフォルト値: 0

Amazon ECS に報告されるインスタンスのメモリ容量の削減分 (MiB 単位)。Amazon ECS は、コンテナインスタンスにタスクを配置するときにこのパラメータを使用します。これはインスタンスのメモリ使用量を予約するものではありません。詳しくは、「コンテナインスタンスメモリ管理」を参照してください。

ECS_AVAILABLE_LOGGING_DRIVERS

値の例: ["awslogs","fluentd","gelf","json-file","journald","splunk","logentries","syslog"]

Linux のデフォルト値: ["json-file","none"]

Windows のデフォルト値: ["json-file","none"]

注記

ECS init を使用している場合は、デフォルト値は ["json-file","syslog","awslogs","none"] です。

コンテナインスタンスで使用できるロギングドライバー。Amazon ECS コンテナインスタンスで実行する コンテナエージェントは、 ECS_AVAILABLE_LOGGING_DRIVERS 環境変数を使用して、そのインスタンスで使用できるロギングドライバーを登録する必要があります。その後、そのインスタンスに配置されたコンテナがタスクでこれらのドライバーのログ設定オプションを使用できるようになります。awslogs ログドライバーの使用方法については、「awslogs ログドライバーを使用する」を参照してください。ご使用の Docker バージョンで使用できるさまざまなロギングドライバーおよびその設定方法の詳細については、Docker ドキュメントの Configure logging drivers を参照してください。

ECS_DISABLE_PRIVILEGED

値の例: true | false

Linux のデフォルト値: false

Windows のデフォルト値: false

コンテナインスタンスで、特権を持つコンテナの起動がオフ状態になっているかどうか。この値を true に設定すると、特権を持つコンテナは許可されません。

ECS_SELINUX_CAPABLE

値の例: true | false

Linux のデフォルト値: false

Windows のデフォルト値: false

SELinux がコンテナインスタンスで使用できるかどうか。

ECS_APPARMOR_CAPABLE

値の例: true | false

Linux のデフォルト値: false

Windows のデフォルト値: false

AppArmor がコンテナインスタンスで使用できるかどうか。

ECS_ENGINE_TASK_CLEANUP_WAIT_DURATION

値の例: 1h (有効な時間単位は「ns」、「us」 (または「µs」)、「ms」、「s」、「m」、および「h」です。)

Linux のデフォルト値: 3h

Windows のデフォルト値: 3h

タスクが停止してから Docker コンテナが削除されるまでの待機時間。これは Docker コンテナのデータを削除するため、この値の設定が小さすぎると、削除される前に停止したコンテナを調べたりログを確認したりできない場合があることに注意してください。最小の期間は 1s です。1 秒より短い値は無視されます。

ECS_ENGINE_TASK_CLEANUP_WAIT_DURATION_JITTER

値の例: 1h (有効な時間単位は「ns」、「us」 (または「µs」)、「ms」、「s」、「m」、および「h」です。)

Linux のデフォルト値: Blank

Windows のデフォルト値: 3h

タスクエンジンのクリーンアップ待機のためのジッター時間。これを指定した場合、各タスクの実際のクリーンアップ待機時間は、ECS_ENGINE_TASK_CLEANUP_WAIT_DURATION で指定した時間に、0 とジッター時間の間のランダムな値を加えたものになります。

ECS_CONTAINER_STOP_TIMEOUT

値の例: 10m (有効な時間単位は「ns」、「us」 (または「µs」)、「ms」、「s」、「m」、および「h」です。)

Linux のデフォルト値: 30s

Windows のデフォルト値: 30s

タスクが停止してから、コンテナが正常に自己終了しない場合に強制終了されるまでの待機時間。

ECS_CONTAINER_START_TIMEOUT

値の例: 10m (有効な時間単位は「ns」、「us」 (または「µs」)、「ms」、「s」、「m」、および「h」です。)

Linux のデフォルト値: 3m

Windows のデフォルト値: 8m

コンテナの起動の再試行を止めるまでの待機時間。

ECS_CONTAINER_CREATE_TIMEOUT

値の例: 10m (有効な時間単位は「ns」、「us」 (または「µs」)、「ms」、「s」、「m」、および「h」です。)

Linux のデフォルト値: 4m

Windows のデフォルト値: 4m

コンテナの作成を取りやめるまでの待機時間。

HTTP_PROXY

値の例: 10.0.0.131:3128

Linux のデフォルト値: Null

Windows のデフォルト値: Null

Amazon ECSエージェントがインターネットへの接続に使用する HTTP プロキシのホスト名 (または IP アドレス) とポート番号。たとえば、コンテナインスタンスに Amazon VPC インターネットゲートウェイ、または NAT ゲートウェイ/インスタンスを介した外部ネットワークアクセスがない場合は、このプロキシが使用されます。この変数を設定する場合は、NO_PROXY 変数も設定して、プロキシから Amazon EC2 インスタンスのメタデータおよび Docker デーモンのトラフィックをフィルタリングする必要があります。詳細については、「HTTP プロキシ設定」を参照してください。

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

Linux のデフォルト値: Null

Windows のデフォルト値: Null

指定された HTTP_PROXY に転送しない HTTP トラフィック。プロキシから Amazon EC2 インスタンスのメタデータおよび Docker デーモントラフィックをフィルタリングするには、 169.254.169.254,/var/run/docker.sock を指定する必要があります。詳細については、「HTTP プロキシ設定」を参照してください。

ECS_ENABLE_TASK_IAM_ROLE

値の例: true | false

Linux のデフォルト値: false

Windows のデフォルト値: false

注記

ecs init を使用している場合は、デフォルト値は true です。

タスクのIAMロールを、 bridge または default、またはネットワークモードのタスクコンテナのコンテナインスタンスで有効にする必要があるかどうか。詳細については、「タスク IAM ロール」を参照してください。

ECS_ENABLE_TASK_IAM_ROLE_NETWORK_HOST

値の例: true | false

Linux のデフォルト値: false

Windows のデフォルト値: false

注記

ecs init を使用している場合は、デフォルト値は true です。

host ネットワークモードを使用しているタスクコンテナのコンテナインスタンスで、タスク用の IAM ロールを有効にするかどうか。この変数はエージェントバージョン 1.12.0 以降でのみサポートされています。詳細については、「タスク IAM ロール」を参照してください。

ECS_DISABLE_IMAGE_CLEANUP

値の例: true

Linux のデフォルト値: false

Windows のデフォルト値: false

Amazon ECSエージェントで自動イメージクリーンアップを無効にするかどうか。詳細については、「自動化タスクとイメージのクリーンアップ」を参照してください。

ECS_IMAGE_CLEANUP_INTERVAL

値の例: 30m

Linux のデフォルト値: 30m

Windows のデフォルト値: 30m

自動化されたイメージクリーンアップサイクルの間隔。10 分未満に設定すると、値は無視されます。

ECS_IMAGE_MINIMUM_CLEANUP_AGE

値の例: 30m

Linux のデフォルト値: 1h

Windows のデフォルト値: 1h

イメージが取得されてから自動イメージクリーンアップの対象になるまでの時間の最小間隔。

NON_ECS_IMAGE_MINIMUM_CLEANUP_AGE

値の例: 30m

Linux のデフォルト値: 1h

Windows のデフォルト値: 1h

Amazon ECS 以外のイメージが作成されてから自動イメージクリーンアップの対象になるまでの時間の最小間隔。

ECS_NUM_IMAGES_DELETE_PER_CYCLE

値の例: 5

Linux のデフォルト値: 5

Windows のデフォルト値: 5

1 つの自動イメージクリーンアップのサイクルで削除するイメージの最大数。1 未満に設定すると、値は無視されます。

ECS_IMAGE_PULL_BEHAVIOR

値の例: default | always | once | prefer-cached

Linux のデフォルト値: default

Windows のデフォルト値: default

コンテナインスタンスでイメージをプルするプロセスをカスタマイズするために使用される動作。オプションの動作について次に説明します。

  • default を指定した場合、リモートでイメージがプルされます。イメージのプルに失敗した場合、コンテナはそのインスタンスにキャッシュされたイメージを使用します。

  • always を指定した場合、常にリモートでイメージがプルされます。イメージのプルに失敗した場合、そのタスクは失敗します。このオプションを選択すると、最新バージョンのイメージが常にプルされます。キャッシュされたイメージはすべて無視され、イメージの自動クリーンアッププロセスが適用されます。

  • once を指定した場合、同じコンテナインスタンスの以前のタスクによりイメージがプルされていないか、自動クリーンアッププロセスによってキャッシュされたイメージが削除された場合にのみ、イメージがリモートでプルされます。それ以外の場合は、インスタンスにキャッシュされたイメージが使用されます。これにより、不要なイメージのプルがなくなります。

  • prefer-cached を指定した場合、キャッシュされたイメージがない場合に、リモートでイメージがプルされます。それ以外の場合は、インスタンスにキャッシュされたイメージが使用されます。キャッシュされたイメージが削除されないように、そのコンテナの自動イメージクリーンアップは無効です。

ECS_IMAGE_PULL_INACTIVITY_TIMEOUT

値の例: 1m

Linux のデフォルト値: 1m

Windows のデフォルト値: 3m

Docker のプルを完了してからコンテナを抽出するまでの待機時間。大きい Windows コンテナのチューニングに便利です。

ECS_INSTANCE_ATTRIBUTES

値の例: {"custom_attribute": "custom_attribute_value"}

Linux のデフォルト値: Null

Windows のデフォルト値: Null

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

注記

追加された属性は、登録済みのコンテナインスタンスには適用されません。登録済みのコンテナインスタンスにカスタム属性を追加する場合は、「クラシックコンソールを使用して属性を追加する」を参照してください。

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

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

ECS_ENABLE_TASK_ENI

値の例: true | false

Linux のデフォルト値: false

Windows のデフォルト値: false

タスクのタスクネットワーキングの、独自のネットワークインターフェイスを使用した起動を有効にするかどうか。

ECS_ENABLE_HIGH_DENSITY_ENI

値の例: true | false

Linux のデフォルト値: false

Windows のデフォルト値: 該当しません

タスクネットワーキングを使用する場合に、高密度を有効にするかどうか。

ECS_CNI_PLUGINS_PATH

値の例: /ecs/cni

Linux のデフォルト値: /amazon-ecs-cni-plugins

Windows のデフォルト値: 該当しません

cni バイナリファイルが存在するパス。

ECS_AWSVPC_BLOCK_IMDS

値の例: true | false

Linux のデフォルト値: false

Windows のデフォルト値: false

awsvpc ネットワークモードを使用して起動されるタスクのインスタンスメタデータへのアクセスをブロックするかどうか。

ECS_AWSVPC_ADDITIONAL_LOCAL_ROUTES

値の例: ["10.0.15.0/24"]

Linux のデフォルト値: []

Windows のデフォルト値: []

awsvpc ネットワークモードでは、これらのプレフィックスへのトラフィックは、タスク Elastic Network Interface ではなく、ホストブリッジ経由でルーティングされます。

ECS_ENABLE_CONTAINER_METADATA

値の例: true | false

Linux のデフォルト値: false

Windows のデフォルト値: false

true の場合、コンテナのメタデータを記述するファイルをエージェントが作成します。このファイルは、コンテナ環境変数 $ECS_CONTAINER_METADATA_FILE を使って配置および使用できます。

ECS_FSX_WINDOWS_FILE_SERVER_SUPPORTED

値の例: true | false

Linux のデフォルト値: false

Windows のデフォルト値: true

FSx for Windows File Server ボリュームタイプが、対象のコンテナインスタンスでサポートされているかどうか。この変数は、エージェントバージョン 1.47.0 以降でのみサポートされています。

ECS_HOST_DATA_DIR

値の例: /var/lib/ecs

Linux のデフォルト値: /var/lib/ecs

Windows のデフォルト値: 該当しません

ECS_DATADIR のマウント元となるホスト上のソースディレクトリ。Amazon ECS エージェントがコンテナとして実行されている場合に、このディレクトリを使用してコンテナメタデータファイルのソースマウントパスを判定できます。Amazon ECS エージェントがコンテナとして実行されないため、Windows ではこの値を使用しません。

ECS_ENABLE_RUNTIME_STATS

値の例: true | false

Linux のデフォルト値: false

Windows のデフォルト値: false

エージェントの pprof がオンになっているかどうかを確認します。これがオンの場合、さまざまなプロファイルへの、エージェントのイントロスペクションポート (例えば、curl http://localhost:51678/debug/pprof/heap > heap.pprof) を介したアクセスが可能になります。さらに、エージェントのランタイムでの統計情報が /var/log/ecs/runtime-stats.log ファイルに記録されます。

ECS_ENABLE_TASK_CPU_MEM_LIMIT

値の例: true | false

Linux のデフォルト値: true

Windows のデフォルト値: false

タスクレベルの CPU とメモリ制限を有効にするかどうか。

ECS_CGROUP_PATH

値の例: /sys/fs/cgroup

Linux のデフォルト値: /sys/fs/cgroup

Windows のデフォルト値: 該当しません

Amazon ECS エージェントで期待されている cgroup のルートパス。これは、エージェントマウントからアクセスできるパスです。

ECS_ENABLE_CPU_UNBOUNDED_WINDOWS_WORKAROUND

値の例: true | false

Linux のデフォルト値: 該当しません

Windows のデフォルト値: false

true の場合、Amazon ECS では、Windows のバインドされていない CPU (CPU=0) タスクを、バインドされた CPU のタスクと一緒に実行できます。

ECS_TASK_METADATA_RPS_LIMIT

値の例: 100,150

Linux のデフォルト値: 40,60

Windows のデフォルト値: 40,60

タスクメタデータエンドポイントとエージェント API エンドポイントへの合計トラフィックの定常状態とバーストスロットル制限をカンマ区切りの整数値で指定します。

ECS_SHARED_VOLUME_MATCH_FULL_CONFIG

値の例: true | false

Linux のデフォルト値: false

Windows のデフォルト値: false

タスク定義で dockerVolumeConfiguration が指定されていて、autoprovision フラグを使用する場合、 Amazon ECS コンテナエージェントは、Docker ボリュームの詳細を既存の Docker ボリュームの詳細と比較します。ECS_SHARED_VOLUME_MATCH_FULL_CONFIGtrue の場合、コンテナエージェントは、ボリュームの完全な設定 (namedriverOpts、および labels) を比較して、ボリュームが同一であることを確認します。false の場合、コンテナエージェントはボリューム name で確認した Docker のデフォルトの動作のみを使用します。ボリュームがコンテナインスタンス間で共有される場合、これを false に設定する必要があります。詳細については、「Docker ボリューム」を参照してください。

ECS_CONTAINER_INSTANCE_PROPAGATE_TAGS_FROM

値の例: ec2_instance

Linux のデフォルト値: なし

Windows のデフォルト値: なし

ec2_instance を指定した場合、コンテナインスタンスで定義された既存のタグが Amazon ECS に登録されます。タグは、ListTagsForResource オペレーションを使用して見つけることができます。コンテナインスタンスに関連付けられた IAM ロール で、 ec2:DescribeTags アクションが許可されている必要があります。詳細については、「Amazon EC2 コンテナインスタンスへのタグの追加」を参照してください。

ECS_CONTAINER_INSTANCE_TAGS

値の例: {"tag_key": "tag_val"}

Linux のデフォルト値: {}

Windows のデフォルト値: {}

リソースを分類して組織化できるようにコンテナインスタンスに適用されたメタデータ。各タグはカスタム定義キーとオプションの値で構成されます。タグキーには最大 128 文字を含めることができます。タグの値に使用できるのは 256 文字までです。

コンテナインスタンスタグが ECS_CONTAINER_INSTANCE_PROPAGATE_TAGS_FROM パラメータを使用して伝播される場合、ECS_CONTAINER_INSTANCE_TAGS を使用して指定されたタグでそれらのタグが上書きされます。詳細については、「Amazon EC2 コンテナインスタンスへのタグの追加」を参照してください。

ECS_ENABLE_UNTRACKED_IMAGE_CLEANUP

値の例: true | false

Linux のデフォルト値: false

Windows のデフォルト値: false

Amazon ECS タスクに含まれないコンテナとイメージの削除を Amazon ECS エージェントに許可するかどうか。

ECS_EXCLUDE_UNTRACKED_IMAGE

値の例: {"alpine":"latest"}

Linux のデフォルト値: {}

Windows のデフォルト値: {}

ECS_ENABLE_UNTRACKED_IMAGE_CLEANUPtrue の場合に、Amazon ECS エージェントによって削除されてはならないイメージ (imageName:tag) のカンマ区切りリスト。

ECS_DISABLE_DOCKER_HEALTH_CHECK

値の例: true | false

Linux のデフォルト値: false

Windows のデフォルト値: false

Amazon ECS エージェントに対して Docker コンテナヘルスチェックを無効にするかどうか。

ECS_NVIDIA_RUNTIME

値の例: nvidia

Linux のデフォルト値: nvidia

Windows のデフォルト値: n/a

NVIDIA GPU デバイスをコンテナに渡すために使用されるランタイム。GPU リソース要件がすでに指定されている場合は、このパラメータをタスク定義の環境変数として指定しないでください。詳細については、「Amazon ECS での GPU の使用」を参照してください。

ECS_ENABLE_SPOT_INSTANCE_DRAINING

値の例: true

Linux のデフォルト値: false

Windows のデフォルト値: false

コンテナインスタンスに対してスポットインスタンスのドレインを有効にするかどうか。true の場合、コンテナインスタンスがスポット中断通知を受け取ると、エージェントはインスタンスのステータスを DRAINING に設定します。これにより、正常にシャットダウンされ、サービスの一部であるインスタンスで実行されているすべてのタスクが置き換えられます。スポットインスタンスを使用する場合は、この値を true に設定することをお勧めします。このパラメータは、コンテナエージェントを起動する前に設定する必要があります。詳細については、「スポットインスタンスのドレイン」を参照してください。

ECS_ENABLE_GPU_SUPPORT

値の例: true

Linux のデフォルト値: false

Windows のデフォルト値: n/a

GPU をサポートするコンテナインスタンスを使用するかどうか。このパラメータは、エージェントに対して指定されます。また、GPU のタスク定義も設定する必要があります。詳細については、「Amazon ECS での GPU の使用」を参照してください。

ECS_LOG_ROLLOVER_TYPE

値の例: sizehourly

Linux のデフォルト値: hourly

Windows のデフォルト値: hourly

コンテナエージェントのログファイルを 1 時間ごとに更新するか、サイズに基づいて更新するかを決定します。デフォルトでは、エージェントのログファイルは 1 時間ごとに更新されます。

ECS_LOG_OUTPUT_FORMAT

値の例: logfmtjson

Linux のデフォルト値: logfmt

Windows のデフォルト値: logfmt

ログ出力形式を決定します。json 形式を使用すると、ログの各行は構造化された JSON マップになります。

ECS_LOG_MAX_FILE_SIZE_MB

値の例: 10

Linux のデフォルト値: 10

Windows のデフォルト値: 10

ECS_LOG_ROLLOVER_TYPE 変数を size に設定すると、この変数は、更新前のログファイルの最大サイズ (MB 単位) を決定します。ロールオーバータイプを hourly に設定すると、この変数は無視されます。

ECS_LOG_MAX_ROLL_COUNT

値の例: 24

Linux のデフォルト値: 24

Windows のデフォルト値: 24

更新済みログファイルを保持する数を決定します。この制限に達すると、より古いログファイルは削除されます。

ECS_ENABLE_AWSLOGS_EXECUTIONROLE_OVERRIDE

値の例: true

Linux のデフォルト値: 以下の説明を参照

Windows のデフォルト値: false

awslogs ログドライバーを有効にしてタスク実行 IAM ロールを使用して認証するかどうか。タスク実行 IAM ロールも指定されているタスクで awslogs ログドライバーを使用するには、このパラメータを true にしなければなりません。バージョン 1.16.0-1 以降の ecs-init パッケージで Amazon ECS に最適化された AMI を使用する場合、デフォルト値の true が使用されます。古いバージョンの ecs-init パッケージを使用する場合は、デフォルト値の false が使用されます。

ECS_PULL_DEPENDENT_CONTAINERS_UPFRONT

値の例: true | false

Linux のデフォルト値: false

Windows のデフォルト値: false

dependsOn 条件が満たされる前に、依存関係を持つコンテナのイメージをプルするかどうか。

ECS_EXCLUDE_IPV6_PORTBINDING

値の例: true | false

Linux のデフォルト値: true

Windows のデフォルト値: true

default ネットワークモードを使用する際に、エージェントがIPv6ポートバインディングを除外するかどうか。この vlaue が true の場合、IPv6 ポートバインディングはフィルタリングされ、タスク IPv6 ポートバインディングは [DescribeTasks] レスポンスでは返されません。バインドは、タスクメタデータエンドポイントに含まれています。

これ文は、エージェントバージョン 1.55.3 以降で使用できます。

ECS_SKIP_LOCALHOST_TRAFFIC_FILTER

値の例: true | false

Linux のデフォルト値: false

Windows のデフォルト値: false

デフォルトでは、ecs-init サービスは、非ローカルパケットが既存の転送接続または DNAT の一部でない場合に iptable ルールを追加して localhost にドロップさせることができ、停止時にルールを削除します。もし ECS_SKIP_LOCALHOST_TRAFFIC_FILTER が true に設定されている場合、このルールは追加または削除されません。

ECS_ALLOW_OFFHOST_INTROSPECTION_ACCESS

値の例: true | false

Linux のデフォルト値: false

Windows のデフォルト値: false

デフォルトでは、ecs-init サービスは、オフホスト (または awsvpc ネットワークモードのコンテナ) からのエージェントイントロスペクションポートへのアクセスをブロックする iptable ルールを追加し、停止時にそのルールを削除します。もし ECS_ALLOW_OFFHOST_INTROSPECTION_ACCESS が true に設定されている場合、このルールは追加または削除されません。

ECS_OFFHOST_INTROSPECTION_INTERFACE_NAME

値の例: eth0

Linux のデフォルト値: eth0

Windows のデフォルト値: eth0

オフホストエージェントのイントロスペクションポートアクセスをブロックするために使用されるプライマリネットワークインターフェイス名。デフォルトでは、この値は eth0 です。

ECS_WARM_POOLS_CHECK

値の例: true | false

Linux のデフォルト値: false

Windows のデフォルト値: false

オートスケーリンググループがあり、それに関連付けたウォームプールが必要な場合にのみ、この変数を true に設定します。

true の場合、Amazon ECS エージェントはインスタンスのメタデータをポーリングして、インスタンスを Amazon ECS クラスターに含む準備ができているか判断します。アプリケーションのスケールアウトが必要な場合、Auto Scaling グループは必要な数の初期化済みインスタンスをウォームプールからクラスターにすばやく移動します。

この変数は、エージェントバージョン 1.59.0 以降で使用できます。

CREDENTIALS_FETCHER_HOST

値の例: unix:///var/credentials-fetcher/socket/credentials_fetcher.sock

Linux のデフォルト値: unix:///var/credentials-fetcher/socket/credentials_fetcher.sock

Windows のデフォルト値: 該当しません

オートスケーリンググループがあり、それに関連付けたウォームプールが必要な場合にのみ、この変数を true に設定します。

Linux で gMSA をサポートするための、credentials-fetcher デーモンに対する接続を作成する際に使用されます。ほとんどのユーザーは、デフォルト設定のままで充分です。この値を変更する必要があるのは、カスタムの credentials-fetcher ソケットパス (例: CF_UNIX_DOMAIN_SOCKET_DIR) を使用する場合だけです。

CREDENTIALS_FETCHER_SECRET_NAME_FOR_DOMAINLESS_GMSA

値の例: secretmanager-secretname

Linux のデフォルト値: secretmanager-secretname

Windows のデフォルト値: 該当しません

オートスケーリンググループがあり、それに関連付けたウォームプールが必要な場合にのみ、この変数を true に設定します。

Linux credentials-fetcher デーモンの gMSA 用の、スケーリングオプションをサポートするために使用されます。ドメインに参加していないインスタンスで gMSA を設定する場合は、gMSA アカウントのプリンシパルを取得して Secrets Manager に保存するためのアクセス許可が付与された、Active Directory ユーザーを作成する必要があります。

ECS_DYNAMIC_HOST_PORT_RANGE

値の例: 100-200

Linux のデフォルト値: /proc/sys/net/ipv4/ip_local_port_range によって定義

Windows のデフォルト値: 49152-65535

これにより、エージェントがコンテナポート範囲のマッピングに使用するホストポートの割り当て元となる、動的ホストポート範囲が指定されます。

この変数は、エージェントバージョン 1.68.0 以降で使用できます。

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

    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 ファイルを 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