Amazon ECS EC2 コンテナインスタンス
Amazon ECS エージェントは、クラスターに登録されているすべてのコンテナインスタンスで実行されるプロセスです。これにより、コンテナインスタンスと Amazon ECS の間の通信が容易になります。
注記
Linux コンテナインスタンスでは、エージェントコンテナは /lib、/lib64、/proc などの最上位ディレクトリをマウントします。これは、Amazon EBS ボリューム、awsvpc ネットワークモード、Amazon ECS Service Connect、FireLens – Amazon ECS といった、ECS の様々な機能を利用するために必要です。
Amazon ECSコンテナエージェントの各バージョンは、異なる機能セットをサポートし、以前のバージョンのバグ修正を提供します。可能であれば、最新バージョンの Amazon ECSコンテナエージェントを使用することを常にお勧めします。コンテナエージェントを最新バージョンに更新するには、「Amazon ECS コンテナエージェントをアップデートする」を参照してください。
Amazon ECS コンテナエージェントには amazon-ecs-pause イメージが含まれています。Amazon ECS は、awsvpc ネットワークモードを使用するタスクにこのイメージを使用します。
どの機能と拡張が各エージェントリリースに含まれているか確認するには、https://github.com/aws/amazon-ecs-agent/releases
重要
信頼できるメトリクスの最小 Docker バージョンは、Amazon ECS 最適化 AMI 20220607 以降に含まれる Docker バージョン v20.10.13 以降です。
バージョン 1.20.0 以降のAmazon ECSエージェントでは、18.01.0 より前のバージョンの Docker のサポートが廃止されました。
ライフサイクル
Amazon ECS コンテナエージェントが Amazon EC2 インスタンスをクラスターに登録すると、Amazon EC2 インスタンスのステータスは、ACTIVE として、エージェントの接続ステータスは、TRUE としてレポートされます。このコンテナインスタンスはタスクの実行リクエストを受けることができます。
コンテナインスタンスを (終了ではなく) 停止した場合、ステータスは ACTIVE のままになりますが、エージェント接続ステータスは数分以内に FALSE になります。コンテナインスタンスで実行されていたタスクはすべて停止します。コンテナインスタンスを再び開始すると、コンテナエージェントは、Amazon ECS サービスと再接続し、インスタンスでタスクを再実行できるようになります。
コンテナインスタンスのステータスを DRAINING に変更すると、新しいタスクはそのコンテナインスタンスに配置されません。そのコンテナインスタンスで実行されているサービスタスクは、可能な場合は削除され、システム更新を実行できるようになります。詳細については、「Amazon ECS コンテナインスタンスをドレインする」を参照してください。
コンテナインスタンスを登録解除または終了した場合、コンテナインスタンスのステータスは直ちに INACTIVE に変わり、コンテナインスタンスを一覧表示しても、そのコンテナインスタンスはレポートされなくなります。ただし、終了後 1 時間は、コンテナインスタンスの内容を表示できます。1 時間後、インスタンスの内容は表示できなくなります。
インスタンスを手動でドレインさせるか、Auto Scaling グループのライフサイクルフックを構築して、インスタンスの状態を DRAINING にさせます。Auto Scaling ライフサイクルフックの詳細については、「Amazon EC2 Auto Scaling ライフサイクルフック」を参照してください。
Docker サポート
Amazon ECS は、Amazon Linux で公開された Docker の直近の 2 つの主要バージョンをサポートしています。現在、これには Docker 20.10.x と Docker 25.x が含まれます。
Amazon ECS に必要な最低限の Docker バージョンは、GitHub の Amazon ECS エージェント仕様ファイル
Amazon ECS に最適化された AMI を使用する場合、Docker は Amazon ECS コンテナエージェントで動作するように事前にインストールおよび設定されています。AMI には、Amazon ECS でテストおよびサポートされている Docker バージョンが含まれています。
注記
Amazon ECS は複数の Docker バージョンをサポートしていますが、最高の互換性とサポートを確保するために、Amazon ECS 最適化 AMI に付属する Docker バージョンを使用することをお勧めします。
Amazon ECS に最適化された AMI
Amazon ECS に最適化された AMI の詳細については、「Amazon ECS に最適化された Linux AMI」を参照してください。
追加情報
次のページでは、変更に関する追加情報を説明します。
-
GitHub の Amazon ECS Agent の変更ログ
-
Docker ドキュメントの「Docker Engine リリースノート
」 -
NVIDIA ドキュメントの「NVIDIA ドライバードキュメント
」
Amazon ECS コンテナエージェントのログ設定パラメータ
Amazon ECS コンテナエージェントは、コンテナインスタンスのログを保存します。
コンテナエージェントバージョン 1.36.0 以降の場合、デフォルトでは、ログは Linux インスタンスの /var/log/ecs/ecs-agent.log および Windows インスタンスの C:\ProgramData\Amazon\ECS\log\ecs-agent.log にあります。
コンテナエージェントバージョン 1.35.0 以前の場合、デフォルトでは、ログは Linux インスタンスの /var/log/ecs/ecs-agent.log. および Windows インスタンスの timestampC:\ProgramData\Amazon\ECS\log\ecs-agent.log. にあります。timestamp
デフォルトでは、エージェントログは 1 時間ごとにローテーションされ、最大 24 個のログが保存されます。
以下のコンテナエージェントの設定変数は、エージェントのデフォルトのログ記録動作を変更するために使用できます。使用可能なすべての設定パラメータの詳細については、Amazon ECS コンテナエージェントの設定 または GitHub の「Amazon ECS Agent README
コンテナエージェントバージョン 1.36.0 以降では、logfmt 形式を使用した場合のログファイルは以下の例のようになります。
level=info time=2019-12-12T23:43:29Z msg="Loading configuration" module=agent.go
level=info time=2019-12-12T23:43:29Z msg="Image excluded from cleanup: amazon/amazon-ecs-agent:latest" module=parse.go
level=info time=2019-12-12T23:43:29Z msg="Image excluded from cleanup: amazon/amazon-ecs-pause:0.1.0" module=parse.go
level=info time=2019-12-12T23:43:29Z msg="Amazon ECS agent Version: 1.36.0, Commit: ca640387" module=agent.go
level=info time=2019-12-12T23:43:29Z msg="Creating root ecs cgroup: /ecs" module=init_linux.go
level=info time=2019-12-12T23:43:29Z msg="Creating cgroup /ecs" module=cgroup_controller_linux.go
level=info time=2019-12-12T23:43:29Z msg="Loading state!" module=statemanager.go
level=info time=2019-12-12T23:43:29Z msg="Event stream ContainerChange start listening..." module=eventstream.go
level=info time=2019-12-12T23:43:29Z msg="Restored cluster 'auto-robc'" module=agent.go
level=info time=2019-12-12T23:43:29Z msg="Restored from checkpoint file. I am running as 'arn:aws:ecs:us-west-2:0123456789:container-instance/auto-robc/3330a8a91d15464ea30662d5840164cd' in cluster 'auto-robc'" module=agent.go
JSON 形式を使用した場合のログファイルは以下の例のようになります。
{"time": "2019-11-07T22:52:02Z", "level": "info", "msg": "Starting Amazon Elastic Container Service Agent", "module": "engine.go"}