Amazon ECS クラスターに外部インスタンスを登録する - Amazon Elastic Container Service

Amazon ECS クラスターに外部インスタンスを登録する

Amazon ECS クラスターに登録する外部インスタンスごとに、SSM Agent、Amazon ECS コンテナエージェント、および Docker がインストールされている必要があります。外部インスタンスを Amazon ECS クラスターに登録するには、最初に AWS Systems Manager マネージドインスタンスを登録する必要があります。インストールスクリプトは、Amazon ECS コンソールで数回クリックするだけで作成できます。インストールスクリプトには、Systems Manager のアクティベーションキーと、必要なエージェントと Docker をインストールするためのコマンドが含まれています。インストールと登録の手順を完了するには、オンプレミスのサーバーまたは VM でインストールスクリプトを実行する必要があります。

注記

Linux の外部インスタンスをクラスターに登録する前に、/etc/ecs/ecs.config ファイルを作成し、必要なコンテナエージェント設定パラメータを追加します。外部インスタンスをクラスターに登録した後は、これを行うことはできません。詳細については、「Amazon ECS コンテナエージェントの設定」を参照してください。

AWS Management Console
  1. コンソール (https://console.aws.amazon.com/ecs/v2) を開きます。

  2. ナビゲーションバーから、使用するリージョンを選択します。

  3. ナビゲーションペインで [Clusters] (クラスター) を選択します。

  4. リポジトリの [クラスター] ページで、外部インスタンスを登録するクラスターを選択します。

  5. [Cluster : name] (クラスター: 名前) のページで、[Infrastructure] (インフラストラクチャ) タブを選択します。

  6. [Register external instances] (外部インスタンスの登録) ページで、次のステップを完了します。

    1. [Activation key duration (in days)] (アクティベーションキーの期間 (日数)) を使用する場合、アクティベーションキーがアクティブなままになる日数を入力します。入力した日数が経過すると、外部インスタンスの登録時にキーが機能しなくなります。

    2. インスタンス数を使用する場合 アクティベーションキーを使用してクラスターに登録する外部インスタンスの数を入力します。

    3. インスタンスロールを使用する場合、外部インスタンスに関連付ける IAM ロールを選択します。ロールがまだ作成されていない場合は、新規ロールの作成を選択すると、Amazon ECS がユーザーに代わってロールを作成します。外部インスタンスに必要な IAM 許可の詳細については、「Amazon ECS Anywhere IAM ロール」を参照してください。

    4. 登録コマンドをコピーします。このコマンドは、クラスターに登録する各外部インスタンスで実行する必要があります。

      重要

      スクリプトの bash 部分は root として実行する必要があります。コマンドが root として実行されない場合、エラーが返されます。

    5. [閉じる] を選択します。

AWS CLI for Linux operating systems
  1. Systems Manager のアクティベーションペアを作成します。これは、Systems Manager が管理するインスタンスのアクティベーションに使用されます。出力には、ActivationIdおよびActivationCodeが含まれます。これらは、後のステップで使用します。作成した ECS Anywhere IAM ロールを指定していることを確認します。詳細については、「Amazon ECS Anywhere IAM ロール」を参照してください。

    aws ssm create-activation --iam-role ecsAnywhereRole | tee ssm-activation.json
  2. オンプレミスのサーバーまたは仮想マシン (VM) で、インストールスクリプトをダウンロードします。

    curl --proto "https" -o "/tmp/ecs-anywhere-install.sh" "https://amazon-ecs-agent.s3.amazonaws.com/ecs-anywhere-install-latest.sh"
  3. (オプション) オンプレミスサーバーまたは仮想マシン (VM) で、次の手順を使用して、スクリプト署名ファイルを使用してインストールスクリプトを確認します。

    1. GnuPG をダウンロードし、インストールします。GNUpg の詳細については、「GnuPG ウェブサイト」を参照してください。Linux システムの場合は、お使いの Linux ディストリビューションでパッケージマネージャーを使用して gpg をインストールします。

    2. Amazon ECS PGP パブリックキーを取得します。

      gpg --keyserver hkp://keys.gnupg.net:80 --recv BCE9D9A42D51784F
    3. インストールスクリプトの署名をダウンロードします。署名は、ASCII でデタッチ済みの PGP 署名で、拡張子が .asc のファイルに保存されています。

      curl --proto "https" -o "/tmp/ecs-anywhere-install.sh.asc" "https://amazon-ecs-agent.s3.amazonaws.com/ecs-anywhere-install-latest.sh.asc"
    4. キーを使用してインストールスクリプトファイルを確認します。

      gpg --verify /tmp/ecs-anywhere-install.sh.asc /tmp/ecs-anywhere-install.sh

      予想される出力は次のようになります。

      gpg: Signature made Tue 25 May 2021 07:16:29 PM UTC gpg: using RSA key 50DECCC4710E61AF gpg: Good signature from "Amazon ECS <ecs-security@amazon.com>" [unknown] gpg: WARNING: This key is not certified with a trusted signature! gpg: There is no indication that the signature belongs to the owner. Primary key fingerprint: F34C 3DDA E729 26B0 79BE AEC6 BCE9 D9A4 2D51 784F Subkey fingerprint: D64B B6F9 0CF3 77E9 B5FB 346F 50DE CCC4 710E 61AF
  4. オンプレミスのサーバーまたは仮想マシン (VM) で、インストールスクリプトを実行します。クラスター名、リージョン、Systems Manager のアクティベーション ID とアクティベーションコードを、最初のステップで指定します。

    sudo bash /tmp/ecs-anywhere-install.sh \ --region $REGION \ --cluster $CLUSTER_NAME \ --activation-id $ACTIVATION_ID \ --activation-code $ACTIVATION_CODE

    オンプレミスサーバーまたは仮想マシン (VM) で、GPU ワークロード用の NVIDIA ドライバーがインストールされている場合は、インストールスクリプトに --enable-gpu フラグを設定する必要があります。このフラグを指定すると、インストールスクリプトは NVIDIA ドライバが実行中であることを確認してから、Amazon ECS タスクを実行するために必要な構成変数を追加します。GPU ワークロードの実行と、タスク定義での GPU 要件の指定の詳細については、「Amazon ECS タスク定義での GPU の指定」を参照してください。

    sudo bash /tmp/ecs-anywhere-install.sh \ --region $REGION \ --cluster $CLUSTER_NAME \ --activation-id $ACTIVATION_ID \ --activation-code $ACTIVATION_CODE \ --enable-gpu

既存の外部インスタンスを別のクラスターに登録するには、次のステップを実行します。

既存の外部インスタンスを別のクラスターに登録するには
  1. Amazon ECS コンテナエージェントを停止します。

    sudo systemctl stop ecs.service
  2. /etc/ecs/ecs.configファイルとECS_CLUSTER行を編集して、クラスター名が外部インスタンスを登録するクラスターの名前と一致していることを確認します。

  3. 既存の Amazon ECS エージェントデータを削除します。

    sudo rm /var/lib/ecs/data/agent.db
  4. Amazon ECS コンテナエージェントを開始する

    sudo systemctl start ecs.service
AWS CLI for Windows operating systems
  1. Systems Manager のアクティベーションペアを作成します。これは、Systems Manager が管理するインスタンスのアクティベーションに使用されます。出力には、ActivationIdおよびActivationCodeが含まれます。これらは、後のステップで使用します。作成した ECS Anywhere IAM ロールを指定していることを確認します。詳細については、「Amazon ECS Anywhere IAM ロール」を参照してください。

    aws ssm create-activation --iam-role ecsAnywhereRole | tee ssm-activation.json
  2. オンプレミスのサーバーまたは仮想マシン (VM) で、インストールスクリプトをダウンロードします。

    Invoke-RestMethod -URI "https://amazon-ecs-agent.s3.amazonaws.com/ecs-anywhere-install.ps1" -OutFile “ecs-anywhere-install.ps1”
  3. (オプション) Powershell スクリプトは Amazon によって署名されているため、Windows は同じ場所で証明書の検証を自動的に実行します。手動で検証を実行する必要はありません。

    証明書を手動で検証するには、ファイルを右クリックしてプロパティに移動し、[Digital Signatures] (デジタル署名) タブを使用して詳細を取得します。

    このオプションは、ホストが証明書ストアに証明書がある場合にのみ使用できます。

    検証の結果、次のような情報が返されます。

    # Verification (PowerShell) Get-AuthenticodeSignature -FilePath .\ecs-anywhere-install.ps1 SignerCertificate Status Path ----------------- ------ ---- EXAMPLECERTIFICATE Valid ecs-anywhere-install.ps1 ... Subject : CN="Amazon Web Services, Inc.",... ----
  4. オンプレミスのサーバーまたは仮想マシン (VM) で、インストールスクリプトを実行します。クラスター名、リージョン、Systems Manager のアクティベーション ID とアクティベーションコードを、最初のステップで指定します。

    .\ecs-anywhere-install.ps1 -Region $Region -Cluster $Cluster -ActivationID $ActivationID -ActivationCode $ActivationCode
  5. Amazon ECS コンテナエージェントが実行されていることを確認します。

    Get-Service AmazonECS Status Name DisplayName ------ ---- ----------- Running AmazonECS Amazon ECS

既存の外部インスタンスを別のクラスターに登録するには、次のステップを実行します。

既存の外部インスタンスを別のクラスターに登録するには
  1. Amazon ECS コンテナエージェントを停止します。

    Stop-Service AmazonECS
  2. クラスター名が外部インスタンスを登録するクラスターの名前と一致するように ECS_CLUSTER パラメータを変更します。

    [Environment]::SetEnvironmentVariable("ECS_CLUSTER", $ECSCluster, [System.EnvironmentVariableTarget]::Machine)
  3. 既存の Amazon ECS エージェントデータを削除します。

    Remove-Item -Recurse -Force $env:ProgramData\Amazon\ECS\data\*
  4. Amazon ECS コンテナエージェントを開始する

    Start-Service AmazonECS

AWS CLIを使用して、外部インスタンスの登録プロセスを完了するためにインストールスクリプトを実行する前に、Systems Manager のアクティベーションを作成できます