Amazon ECS コンテナエージェントをインストールする - Amazon Elastic Container Service

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 ECS init deb ファイル Amazon ECS init rpm ファイル
us-east-2 米国東部(オハイオ)

Amazon ECS init amd64 (amd64)

Amazon ECS init arm64 (arm64)

Amazon ECS init x86_64 (x86_64)

Amazon ECS init aarch64 (aarch64)

us-east-1 米国東部 (バージニア北部)

Amazon ECS init amd64 (amd64)

Amazon ECS init arm64 (arm64)

Amazon ECS init x86_64 (x86_64)

Amazon ECS init aarch64 (aarch64)

us-west-1 米国西部(北カリフォルニア)

Amazon ECS init amd64 (amd64)

Amazon ECS init arm64 (arm64)

Amazon ECS init x86_64 (x86_64)

Amazon ECS init aarch64 (aarch64)

us-west-2 米国西部(オレゴン)

Amazon ECS init amd64 (amd64)

Amazon ECS init arm64 (arm64)

Amazon ECS init x86_64 (x86_64)

Amazon ECS init aarch64 (aarch64)

ap-east-1 アジアパシフィック (香港)

Amazon ECS init amd64 (amd64)

Amazon ECS init arm64 (arm64)

Amazon ECS init x86_64 (x86_64)

Amazon ECS init aarch64 (aarch64)

ap-northeast-1 アジアパシフィック (東京)

Amazon ECS init amd64 (amd64)

Amazon ECS init arm64 (arm64)

Amazon ECS init x86_64 (x86_64)

Amazon ECS init aarch64 (aarch64)

ap-northeast-2 アジアパシフィック (ソウル)

Amazon ECS init amd64 (amd64)

Amazon ECS init arm64 (arm64)

Amazon ECS init x86_64 (x86_64)

Amazon ECS init aarch64 (aarch64)

ap-south-1 アジアパシフィック(ムンバイ)

Amazon ECS init amd64 (amd64)

Amazon ECS init arm64 (arm64)

Amazon ECS init x86_64 (x86_64)

Amazon ECS init aarch64 (aarch64)

ap-southeast-1 アジアパシフィック (シンガポール)

Amazon ECS init amd64 (amd64)

Amazon ECS init arm64 (arm64)

Amazon ECS init x86_64 (x86_64)

Amazon ECS init aarch64 (aarch64)

ap-southeast-2 アジアパシフィック (シドニー)

Amazon ECS init amd64 (amd64)

Amazon ECS init arm64 (arm64)

Amazon ECS init x86_64 (x86_64)

Amazon ECS init aarch64 (aarch64)

ca-central-1 カナダ (中部)

Amazon ECS init amd64 (amd64)

Amazon ECS init arm64 (arm64)

Amazon ECS init x86_64 (x86_64)

Amazon ECS init aarch64 (aarch64)

eu-central-1 欧州 (フランクフルト)

Amazon ECS init amd64 (amd64)

Amazon ECS init arm64 (arm64)

Amazon ECS init x86_64 (x86_64)

Amazon ECS init aarch64 (aarch64)

eu-west-1 欧州 (アイルランド)

Amazon ECS init amd64 (amd64)

Amazon ECS init arm64 (arm64)

Amazon ECS init x86_64 (x86_64)

Amazon ECS init aarch64 (aarch64)

eu-west-2 欧州 (ロンドン)

Amazon ECS init amd64 (amd64)

Amazon ECS init arm64 (arm64)

Amazon ECS init x86_64 (x86_64)

Amazon ECS init aarch64 (aarch64)

eu-west-3 欧州 (パリ)

Amazon ECS init amd64 (amd64)

Amazon ECS init arm64 (arm64)

Amazon ECS init x86_64 (x86_64)

Amazon ECS init aarch64 (aarch64)

sa-east-1 南米(サンパウロ)

Amazon ECS init amd64 (amd64)

Amazon ECS init arm64 (arm64)

Amazon ECS init x86_64

Amazon ECS init aarch64 (aarch64)

us-gov-east-1 AWS GovCloud (米国東部)

Amazon ECS init amd64 (amd64)

Amazon ECS init arm64 (arm64)

Amazon ECS init x86_64 (x86_64)

Amazon ECS init aarch64 (aarch64)

us-gov-west-1 AWS GovCloud (米国西部)

Amazon ECS init amd64 (amd64)

Amazon ECS init arm64 (arm64)

Amazon ECS init x86_64 (x86_64)

Amazon ECS init aarch64 (aarch64)

非 Amazon Linux AMI を使用した Amazon EC2 インスタンスに Amazon ECS コンテナエージェントをインストールするには
  1. Amazon ECSへのアクセスを許可する IAM; ロールを使用して Amazon EC2インスタンスを起動します。詳細については、「Amazon ECS コンテナインスタンスの IAM ロール」を参照してください。

  2. インスタンスに接続します。

  3. 最新バージョンの Docker をインスタンスにインストールします。

  4. Docker のバージョンをチェックして、システムがバージョンの最小要件を満たしていることを確認します。

    注記

    信頼できるメトリクスの最小 Docker バージョンは、Amazon ECS 最適化 AMI 20220607 以降に含まれる Docker バージョン v20.10.13 以降です。

    バージョン 1.20.0 以降のAmazon ECSエージェントでは、1.9.0 より前のバージョンの Docker のサポートが廃止されました。

    docker --version
  5. オペレーティングシステムとシステムアーキテクチャ用の適切な 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
  6. /lib/systemd/system/ecs.service ファイルを編集し、[Unit] セクションの最後に次の行を追加します。

    After=cloud-final.service
  7. (オプション) インスタンスを default クラスター以外のクラスターに登録するには、/etc/ecs/ecs.config ファイルを編集して以下の内容を追加します。次の例は MyCluster クラスターを指定します。

    ECS_CLUSTER=MyCluster

    これらや他のエージェントランタイムオプションの詳細については、「Amazon ECS コンテナエージェントの設定」を参照してください。

    注記

    オプションで、エージェント環境変数を Amazon S3 に保存できます (これらの環境変数は、Amazon EC2 ユーザーデータを使用して、起動時にコンテナインスタンスにダウンロードできます)。これは、プライベートリポジトリの認証情報のような機密情報の場合に推奨されます。詳細については、Amazon S3 に Amazon ECS コンテナインスタンスの設定を保存するおよびAmazon ECS での AWS 以外のコンテナイメージの使用を参照してください。

  8. ecs サービスを開始します。

    ubuntu:~$ sudo systemctl start ecs

ホストネットワークモードで Amazon ECS エージェントを実行する

Amazon ECSコンテナエージェントを実行している場合、ecs-inithost ネットワークモードでコンテナエージェントのコンテナを作成します。これは、コンテナエージェントのコンテナでサポートされている唯一のネットワークモードです。

これにより、コンテナエージェントにより開始されたコンテナの Amazon EC2 インスタンスのメタデータサービスエンドポイント (http://169.254.169.254) へのアクセスをブロックできます。これにより、コンテナはコンテナインスタンスプロファイルから IAM ロール認証情報にアクセスできなくなります。また、タスクでは IAM タスクロールの認証情報のみが使用されます。詳細については、「Amazon ECS タスクの IAM ロール」を参照してください。

また、コンテナエージェントが docker0 ブリッジ上の接続とネットワークトラフィックで競合しないようにもできます。