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
-
値の例:
crit
、error
、warn
、info
、debug
Linux のデフォルト値:
info
Windows のデフォルト値:
info
ログに記録する詳細レベル。
ECS_LOGLEVEL_ON_INSTANCE
-
値の例:
none
、crit
、error
、warn
、info
、debug
Linux のデフォルト値:
none
に明確に空でない値が設定されている場合はECS_LOG_DRIVER
、それ以外の場合はECS_LOGLEVEL
と同じ値Windows のデフォルト値:
none
に明確に空ではない値が設定されている場合はECS_LOG_DRIVER
、それ以外の場合はECS_LOGLEVEL
と同じ値ECS_LOGLEVEL
をオーバーライドして、ロギングドライバーに記録されるレベルとは別に、オンインスタンスのログファイルに記録される必要のある詳細レベルを設定するために使用できます。ロギングドライバが明確に設定されている場合、インスタンス上のログはデフォルトでオフになりますが、この変数を使用してオンに戻すことができます。 ECS_LOG_DRIVER
-
値の例:
awslogs
、fluentd
、gelf
、json-file
、journald
、logentries
、syslog
、splunk
Linux のデフォルト値:
json-file
Windows のデフォルト値: 該当しません
エージェントコンテナで使用されるロギングドライバを決定します。
ECS_CHECKPOINT
-
値の例:
true
|false
Linux のデフォルト値:
ECS_DATADIR
に、空ではない値が明示的に設定されている場合、ECS_CHECKPOINT
はtrue
に設定されます。それ以外の場合はfalse
に設定されます。Windows のデフォルト値:
ECS_DATADIR
に、空ではない値が明示的に設定されている場合、ECS_CHECKPOINT
はtrue
に設定されます。それ以外の場合は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_METRICS
がtrue
の場合にのみ使用されます。 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_CONFIG
がtrue
の場合、コンテナエージェントは、ボリュームの完全な設定 (name
、driverOpts
、および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_CLEANUP
がtrue
の場合に、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
-
値の例:
size
、hourly
Linux のデフォルト値:
hourly
Windows のデフォルト値:
hourly
コンテナエージェントのログファイルを 1 時間ごとに更新するか、サイズに基づいて更新するかを決定します。デフォルトでは、エージェントのログファイルは 1 時間ごとに更新されます。
ECS_LOG_OUTPUT_FORMAT
-
値の例:
logfmt
、json
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 の読み取り専用アクセス権限をコンテナインスタンスのロールに許可するには
IAM コンソール (https://console.aws.amazon.com/iam/
) を開きます。 -
ナビゲーションペインで [ロール] を選択し、コンテナインスタンスに使用する IAM ロール を選択します。このロールのタイトルは多くの場合、
ecsInstanceRole
です。詳細については、「Amazon ECS コンテナインスタンスの IAM ロール」を参照してください。 -
[Managed Policies] の下で、[Attach Policy] を選択します。
-
ポリシーの結果を絞り込むには、[ポリシーのアタッチ] ページの [フィルター] フィールドに
S3
と入力します。 -
[AmazonS3ReadOnlyAccess] ポリシーの左にあるチェックボックスをオンにし、[Attach Policy] を選択します。
ecs.config
Amazon S3 のファイルを保存するには
-
以下の形式を使用して、有効な環境変数と「
ecs.config
」からの値を持つ Amazon ECS コンテナエージェントの設定 ファイルを作成します。この例では、プライベートレジストリ認証を設定しています。詳細については、「タスクのプライベートレジストリの認証」を参照してください。ECS_ENGINE_AUTH_TYPE=dockercfg ECS_ENGINE_AUTH_DATA={"https://index.docker.io/v1/":{"auth":"
zq212MzEXAMPLE7o6T25Dk0i
","email":"email@example.com
"}} -
設定ファイルを保存するには、Amazon S3 内にプライベートバケットを作成します。詳細については、Amazon Simple Storage Service ユーザーガイドの「バケットの作成」を参照してください。
-
ecs.config
ファイルを S3 バケットにアップロードします。詳細については、Amazon Simple Storage Service ユーザーガイドのバケットへのオブジェクトの追加を参照してください。
起動時に ecs.config
ファイルを Amazon S3 からロードするには
-
このセクションの上記の手順を完了して、読み取り専用 Amazon S3 アクセス権限をコンテナインスタンスに許可し、
ecs.config
ファイルをプライベート S3 バケットに保存します。 -
「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