Amazon ECS コンテナエージェントをインストールする
Amazon ECS クラスターに Amazon EC2 インスタンスを登録する必要があり、そのインスタンスが Amazon ECS に最適化された AMI に基づく AMI を使用していない場合は、次の手順を使用して Amazon ECS コンテナエージェントを手動でインストールできます。これを行うには、リージョンの Amazon S3 バケットのいずれかから、または Amazon Elastic Container Registry Public からエージェントをダウンロードできます。リージョンの Amazon S3 バケットのいずれかからダウンロードする場合は、必要に応じて、PGP 署名を使用してコンテナエージェントファイルの有効性を検証できます。
注記
Amazon ECS と Docker サービスの両方の systemd
ユニットには、両方のサービスを開始する前に cloud-init
が終了するのを待つディレクティブがあります。Amazon EC2ユーザーデータの実行が終了するまで、cloud-init
プロセスは終了したと見なされません。したがって、Amazon EC2 ユーザーデータを介して Amazon ECS または Docker を起動すると、デッドロックが発生する可能性があります。Amazon EC2 ユーザーデータを使用してコンテナエージェントを起動するには、systemctl enable --now --no-block ecs.service
を使用できます。
非 Amazon Linux EC2 インスタンスに Amazon ECS コンテナエージェントをインストールする
Amazon EC2 インスタンスに Amazon ECS コンテナエージェントをインストールするには、リージョンの Amazon S3 バケットのいずれかからエージェントをダウンロードしてインストールできます。
注記
Amazon Linux AMI 以外を使用する場合、Amazon ECS エージェントがタスクレベルのリソース制限をサポートするためには、Amazon EC2 インスタンスは cgroup
ドライバーの cgroupfs
サポートが必要です。詳細については、GitHub で Amazon ECS エージェントについて
各システムアーキテクチャの最新 Amazon ECS コンテナエージェントファイルは、リージョン別に参考として以下に示します。
非 Amazon Linux AMI を使用した Amazon EC2 インスタンスに Amazon ECS コンテナエージェントをインストールするには
-
Amazon ECSへのアクセスを許可する IAM; ロールを使用して Amazon EC2インスタンスを起動します。詳細については、「Amazon ECS コンテナインスタンスの IAM ロール」を参照してください。
-
インスタンスに接続します。
-
最新バージョンの Docker をインスタンスにインストールします。
-
Docker のバージョンをチェックして、システムがバージョンの最小要件を満たしていることを確認します。
注記
信頼できるメトリクスの最小 Docker バージョンは、Amazon ECS 最適化 AMI
20220607
以降に含まれる Docker バージョンv20.10.13
以降です。バージョン
1.20.0
以降のAmazon ECSエージェントでは、1.9.0
より前のバージョンの Docker のサポートが廃止されました。docker --version
-
オペレーティングシステムとシステムアーキテクチャ用の適切な Amazon ECS エージェントファイルをダウンロードし、インストールします。
deb
アーキテクチャの場合:ubuntu:~$
curl -O https://s3.
us-west-2
.amazonaws.com/amazon-ecs-agent-us-west-2
/amazon-ecs-init-latest.amd64.deb
ubuntu:~$
sudo dpkg -i amazon-ecs-init-latest.
amd64.deb
rpm
アーキテクチャの場合:fedora:~$
curl -O https://s3.
us-west-2
.amazonaws.com/amazon-ecs-agent-us-west-2
/amazon-ecs-init-latest.x86_64.rpm
fedora:~$
sudo yum localinstall -y amazon-ecs-init-latest.
x86_64.rpm
-
/lib/systemd/system/ecs.service
ファイルを編集し、[Unit]
セクションの最後に次の行を追加します。After=cloud-final.service
-
(オプション) インスタンスを
default
クラスター以外のクラスターに登録するには、/etc/ecs/ecs.config
ファイルを編集して以下の内容を追加します。次の例はMyCluster
クラスターを指定します。ECS_CLUSTER=
MyCluster
これらや他のエージェントランタイムオプションの詳細については、「Amazon ECS コンテナエージェントの設定」を参照してください。
注記
オプションで、エージェント環境変数を Amazon S3 に保存できます (これらの環境変数は、Amazon EC2 ユーザーデータを使用して、起動時にコンテナインスタンスにダウンロードできます)。これは、プライベートリポジトリの認証情報のような機密情報の場合に推奨されます。詳細については、Amazon S3 に Amazon ECS コンテナインスタンスの設定を保存するおよびAmazon ECS での AWS 以外のコンテナイメージの使用を参照してください。
-
ecs
サービスを開始します。ubuntu:~$
sudo systemctl start ecs
ホストネットワークモードで Amazon ECS エージェントを実行する
Amazon ECSコンテナエージェントを実行している場合、ecs-init
は host
ネットワークモードでコンテナエージェントのコンテナを作成します。これは、コンテナエージェントのコンテナでサポートされている唯一のネットワークモードです。
これにより、コンテナエージェントにより開始されたコンテナの Amazon EC2 インスタンスのメタデータサービスエンドポイント (http://169.254.169.254
) へのアクセスをブロックできます。これにより、コンテナはコンテナインスタンスプロファイルから IAM ロール認証情報にアクセスできなくなります。また、タスクでは IAM タスクロールの認証情報のみが使用されます。詳細については、「Amazon ECS タスクの IAM ロール」を参照してください。
また、コンテナエージェントが docker0
ブリッジ上の接続とネットワークトラフィックで競合しないようにもできます。