

# Amazon ECS クラスターに外部インスタンスを登録する
<a name="ecs-anywhere-registration"></a>

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 コンテナエージェントの設定](ecs-agent-config.md)」を参照してください。

------
#### [ AWS マネジメントコンソール ]

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

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

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

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

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

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

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

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

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

   1.  登録コマンドをコピーします。このコマンドは、クラスターに登録する各外部インスタンスで実行する必要があります。
**重要**  
スクリプトの bash 部分は root として実行する必要があります。コマンドが root として実行されない場合、エラーが返されます。

   1. [**閉じる**] を選択してください。

------
#### [ AWS CLI for Linux operating systems ]

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

   ```
   aws ssm create-activation --iam-role {{ecsAnywhereRole}} | tee ssm-activation.json
   ```

1. オンプレミスのサーバーまたは仮想マシン (VM) で、インストールスクリプトをダウンロードします。

   ```
   curl --proto "https" -o "/tmp/ecs-anywhere-install.sh" "https://amazon-ecs-agent.s3.amazonaws.com/ecs-anywhere-install-latest.sh"
   ```

1. (オプション) オンプレミスサーバーまたは仮想マシン (VM) で、次の手順を使用して、スクリプト署名ファイルを使用してインストールスクリプトを確認します。

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

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

      ```
      gpg --keyserver hkp://keys.gnupg.net:80 --recv BCE9D9A42D51784F
      ```

   1. インストールスクリプトの署名をダウンロードします。署名は、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"
      ```

   1. キーを使用してインストールスクリプトファイルを確認します。

      ```
      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
      ```

1. オンプレミスのサーバーまたは仮想マシン (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 の指定](ecs-gpu-specifying.md)」を参照してください。

   ```
   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
   ```

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

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

   ```
   sudo rm /var/lib/ecs/data/agent.db
   ```

1. 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 ロール](iam-role-ecsanywhere.md)」を参照してください。

   ```
   aws ssm create-activation --iam-role {{ecsAnywhereRole}} | tee ssm-activation.json
   ```

1. オンプレミスのサーバーまたは仮想マシン (VM) で、インストールスクリプトをダウンロードします。

   ```
   Invoke-RestMethod -URI "https://amazon-ecs-agent.s3.amazonaws.com/ecs-anywhere-install.ps1" -OutFile “ecs-anywhere-install.ps1”
   ```

1. (オプション) 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.",...
   
   ----
   ```

1. オンプレミスのサーバーまたは仮想マシン (VM) で、インストールスクリプトを実行します。クラスター名、リージョン、Systems Manager のアクティベーション ID とアクティベーションコードを、最初のステップで指定します。

   ```
   .\ecs-anywhere-install.ps1 -Region {{$Region}} -Cluster {{$Cluster}} -ActivationID {{$ActivationID}} -ActivationCode {{$ActivationCode}}
   ```

1. Amazon ECS コンテナエージェントが実行されていることを確認します。

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

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

**既存の外部インスタンスを別のクラスターに登録するには**

1. Amazon ECS コンテナエージェントを停止します。

   ```
   Stop-Service AmazonECS
   ```

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

   ```
   [Environment]::SetEnvironmentVariable("ECS_CLUSTER", $ECSCluster, [System.EnvironmentVariableTarget]::Machine)
   ```

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

   ```
   Remove-Item -Recurse -Force $env:ProgramData\Amazon\ECS\data\*
   ```

1. Amazon ECS コンテナエージェントを開始する

   ```
   Start-Service AmazonECS
   ```

------

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