Amazon ECS コンテナエージェントをインストールする
コンテナインスタンスが Amazon ECSに最適化されたAMIを使用して起動されていない場合は、次のいずれかの手順を使用して、Amazon ECSコンテナエージェントを手動でインストールできます。Amazon ECS コンテナエージェントは Amazon ECS 対応 AMI に含まれており、インストールする必要はありません。
-
Amazon Linux 2 インスタンスの場合は、
amazon-linux-extras
コマンドを使用してエージェントをインストールできます。詳細については、「Amazon Linux 2 EC2 インスタンスへの Amazon ECS コンテナエージェントのインストール」を参照してください。 -
Amazon Linux AMIインスタンスの場合は、Amazon YUM リポジトリを使用してエージェントをインストールできます。詳細については、「Amazon Linux AMI EC2 インスタンスへの Amazon ECS コンテナエージェントのインストール」を参照してください。
-
非 Amazon Linux インスタンスの場合、リージョン S3 バケットのいずれかまたは Amazon Elastic Container Registry Public からエージェントをダウンロードできます。リージョンの S3 バケットのいずれかからダウンロードする場合は、必要に応じて PGP 署名を使用してコンテナエージェントファイルの有効性を検証できます。詳細については、「非 Amazon Linux EC2 インスタンスに Amazon ECS コンテナエージェントをインストールする」を参照してください。
注記
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 2 EC2 インスタンスへの Amazon ECS コンテナエージェントのインストール
amazon-linux-extras
コマンドを使用して Amazon ECS コンテナエージェントを Amazon Linux 2 EC2 インスタンスにインストールするには、次のステップを実行します。
Amazon Linux 2 EC2 インスタンスに Amazon ECS コンテナエージェントをインストールするには
-
Amazon ECS へのアクセスを許可する IAM ロールを使用して Amazon Linux 2 EC2 インスタンスを起動します。詳細については、「Amazon ECS コンテナインスタンスの IAM ロール」を参照してください。
-
インスタンスに接続します。
-
docker
Amazon Linux の追加リポジトリを無効にします。ecs
Amazon Linux の追加リポジトリは、専用の Docker バージョンに同梱されています。したがって、将来的に競合が生じることを回避するため、docker
extra は無効にする必要があります。これにより、特定バージョンのコンテナエージェントとともに Amazon ECSを使用するための Docker のバージョンを常に使用していることを確認します。[ec2-user ~]$
sudo amazon-linux-extras disable docker
-
ecs
Amazon Linux の追加リポジトリをインストールして有効にします。[ec2-user ~]$
sudo amazon-linux-extras install -y ecs; sudo systemctl enable --now ecs
-
(オプション) エージェント詳細分析 API を使用して、エージェントが実行されていることを確認し、新しいコンテナインスタンスの情報の一部を表示できます。詳細については、「Amazon ECS コンテナエージェントの詳細分析」を参照してください。
[ec2-user ~]$
curl -s http://localhost:51678/v1/metadata | python -mjson.tool
注記
レスポンスがない場合は、インスタンスを起動する際に Amazon ECS コンテナインスタンスの IAM ロールを関連付けたことを確認します。詳細については、「Amazon ECS コンテナインスタンスの IAM ロール」を参照してください。
Amazon Linux AMI EC2 インスタンスへの Amazon ECS コンテナエージェントのインストール
AmazonYUMリポジトリを使用してAmazon ECS コンテナエージェントをAmazonLinux AMI EC2インスタンスにインストールするには、次のステップを使用します。
Amazon Linux AMI EC2 インスタンスに Amazon ECS コンテナエージェントをインストールするには
-
Amazon ECSへのアクセスを許可する &IAM; ロールを使用して Amazon Linux AMI EC2 インスタンスを起動します。詳細については、「Amazon ECS コンテナインスタンスの IAM ロール」を参照してください。
-
インスタンスに接続します。
-
ecs-init
パッケージをインストールします。ecs-init
の詳細については、GitHub でソースコードを参照してください。 [ec2-user ~]$
sudo yum install -y ecs-init
-
Docker デーモンを開始します。
[ec2-user ~]$
sudo service docker start
出力:
Starting cgconfig service: [ OK ] Starting docker: [ OK ]
-
ecs-init
アップスタートジョブを開始します。[ec2-user ~]$
sudo service ecs start
出力:
ecs start/running, process
2804
-
(オプション) エージェント詳細分析 API を使用して、エージェントが実行されていることを確認し、新しいコンテナインスタンスの情報の一部を表示できます。詳細については、「Amazon ECS コンテナエージェントの詳細分析」を参照してください。
[ec2-user ~]$
curl -s http://localhost:51678/v1/metadata | python -mjson.tool
非 Amazon Linux EC2 インスタンスに Amazon ECS コンテナエージェントをインストールする
非 Amazon Linux EC2 インスタンスに Amazon ECS コンテナエージェントをインストールするには、リージョンの 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
-
(オプション) インスタンスを
default
クラスター以外のクラスターに登録するには、/etc/ecs/ecs.config
ファイルを編集して以下の内容を追加します。次の例はMyCluster
クラスターを指定します。ECS_CLUSTER=
MyCluster
これらや他のエージェントランタイムオプションの詳細については、「Amazon ECS コンテナエージェントの設定」を参照してください。
注記
オプションで、エージェント環境変数を Amazon S3 に保存できます (これらの環境変数は、Amazon EC2 ユーザーデータを使用して、起動時にコンテナインスタンスにダウンロードできます)。これは、プライベートリポジトリの認証情報のような機密情報の場合に推奨されます。詳細については、Amazon S3 にコンテナインスタンスの設定を保存する および タスクのプライベートレジストリの認証 を参照してください。
-
ecs
サービスを開始します。ubuntu:~$
sudo systemctl start ecs
ホストネットワークモードで Amazon ECS エージェントを実行する
Amazon ECSコンテナエージェントを実行している場合、ecs-init
は host
ネットワークモードでコンテナエージェントのコンテナを作成します。これは、コンテナエージェントのコンテナでサポートされている唯一のネットワークモードです。
これにより、コンテナエージェントにより開始されたコンテナの Amazon EC2 インスタンスのメタデータサービスエンドポイント (http://169.254.169.254
) へのアクセスをブロックできます。これにより、コンテナはコンテナインスタンスプロファイルから IAM ロール認証情報にアクセスできなくなります。また、タスクでは IAM タスクロールの認証情報のみが使用されます。詳細については、「タスク IAM ロール」を参照してください。
また、コンテナエージェントが docker0
ブリッジ上の接続とネットワークトラフィックで競合しないようにもできます。