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

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

コンテナインスタンスが Amazon ECSに最適化されたAMIを使用して起動されていない場合は、次のいずれかの手順を使用して、Amazon ECSコンテナエージェントを手動でインストールできます。Amazon ECS コンテナエージェントは Amazon ECS 対応 AMI に含まれており、インストールする必要はありません。

注記

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

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

  3. docker Amazon Linux の追加リポジトリを無効にします。ecs Amazon Linux の追加リポジトリは、専用の Docker バージョンに同梱されています。したがって、将来的に競合が生じることを回避するため、docker extra は無効にする必要があります。これにより、特定バージョンのコンテナエージェントとともに Amazon ECSを使用するための Docker のバージョンを常に使用していることを確認します。

    [ec2-user ~]$ sudo amazon-linux-extras disable docker
  4. ecs Amazon Linux の追加リポジトリをインストールして有効にします。

    [ec2-user ~]$ sudo amazon-linux-extras install -y ecs; sudo systemctl enable --now ecs
  5. (オプション) エージェント詳細分析 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 コンテナエージェントをインストールするには
  1. Amazon ECSへのアクセスを許可する &IAM; ロールを使用して Amazon Linux AMI EC2 インスタンスを起動します。詳細については、「Amazon ECS コンテナインスタンスの IAM ロール」を参照してください。

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

  3. ecs-init パッケージをインストールします。ecs-init の詳細については、GitHub でソースコードを参照してください。

    [ec2-user ~]$ sudo yum install -y ecs-init
  4. Docker デーモンを開始します。

    [ec2-user ~]$ sudo service docker start

    出力:

    Starting cgconfig service:                                 [  OK  ]
    Starting docker:	                                   [  OK  ]
  5. ecs-init アップスタートジョブを開始します。

    [ec2-user ~]$ sudo service ecs start

    出力:

    ecs start/running, process 2804
  6. (オプション) エージェント詳細分析 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 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. (オプション) インスタンスを default クラスター以外のクラスターに登録するには、/etc/ecs/ecs.config ファイルを編集して以下の内容を追加します。次の例は MyCluster クラスターを指定します。

    ECS_CLUSTER=MyCluster

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

    注記

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

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

    ubuntu:~$ sudo systemctl start ecs

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

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

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

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