

# 外部インスタンスの Amazon ECS クラスター
<a name="ecs-anywhere"></a>

Amazon ECS Anywhere は、オンプレミスサーバーや仮想マシン (VM) などの*外部インスタンス*を Amazon ECS クラスターに登録するためのサポートを提供します。外部インスタンスは、アウトバウンドトラフィックを生成したり、データを処理したりするアプリケーションを実行するために最適化されています。アプリケーションがインバウンドトラフィックを必要とする場合、Elastic Load Balancing のサポートがないため、これらのワークロードの実行効率が低下します。Amazon ECS は、新しい`EXTERNAL`起動タイプで、サービスを作成したり、外部インスタンスでタスクを実行したりできます。

## サポートされるオペレーティングシステムとシステムアーキテクチャ
<a name="ecs-anywhere-supported-os"></a>

以下は、サポートされているオペレーティングシステムのリストです。`x86_64`および`ARM64`CPU アーキテクチャがサポートされています。
+ Amazon Linux 2023
+ Ubuntu 20、Ubuntu 22、Ubuntu 24
+ RHEL 9 – [ECS Anywhere インストールスクリプト](https://github.com/aws/amazon-ecs-agent/blob/master/scripts/ecs-anywhere-install.sh)を実行する前に、Docker がインストールされていることを確認する必要があります。詳細については、Docker ドキュメントの「[Install Docker Engine on RHEL](https://docs.docker.com/engine/install/rhel/)」を参照してください。

以下のオペレーティングシステムは、2026 年 8 月 7 日付けで Amazon ECS Anywhere のサポート対象外になります。
+ Amazon Linux 2
+ CentOS Stream 9
+ RHEL 7、RHEL 8
+ Fedora 32、Fedora 33、Fedora 40
+ openSUSE タンブルウィード
+ Ubuntu 18
+ Debian 9、Debian 10、Debian 11、Debian 12
+ SUSE Enterprise Server 15
+ Windows Server 2022、Windows Server 2019、Windows Server 2016、Windows Server 20H2

## 考慮事項
<a name="ecs-anywhere-considerations"></a>

外部インスタンスの使用を開始する前に、以下の考慮事項に注意してください。
+ 外部インスタンスは、一度に 1 つずつクラスターに登録できます。外部インスタンスを別のクラスターに登録する方法については、「[Amazon ECS 外部インスタンスの登録を解除する](ecs-anywhere-deregistration.md)」を参照してください。
+ 外部インスタンスには、AWS API との通信を許可する IAM ロールが必要です。詳細については、「[Amazon ECS Anywhere IAM ロール](iam-role-ecsanywhere.md)」を参照してください。
+ 外部インスタンスには、事前設定されたインスタンス認証情報チェーンをローカルに定義しないでください。これは、登録スクリプトに干渉するためです。
+ コンテナログを CloudWatch Logs に送信するには、タスク定義でタスク実行 IAM ロールを作成し、指定してください。
+ 外部インスタンスがクラスターに登録されると、`ecs.capability.external`属性がインスタンスに関連付けられています。この属性は、インスタンスを外部インスタンスとして識別します。カスタム属性を外部インスタンスに追加して、タスクの配置制約として使用できます。詳細については、「[カスタム属性](task-placement-constraints.md#ecs-custom-attributes)」を参照してください。
+ 外部インスタンスにリソースタグを追加できます。詳細については、「[Amazon ECS の外部コンテナインスタンスにタグを追加する](instance-details-tags-external.md)」を参照してください。
+ ECS Exec は、外部インスタンスでサポートされています。詳細については、「[ECS Exec を使用して Amazon ECS コンテナをモニタリングする](ecs-exec.md)」を参照してください。
+ 外部インスタンスとのネットワーキングに固有の追加の考慮事項を次に示します。詳細については、「[ネットワーク](#ecs-anywhere-networking)」を参照してください。
  + サービスの負荷分散はサポートされていません。
  + サービス検出はサポートされていません。
  + 外部インスタンスで実行されるタスクは、`bridge`,`host`, または`none` ネットワークモードを使用する必要があります。`awsvpc` ネットワークモードはサポートされていません。
  + 各 AWS リージョンに Amazon ECS サービスドメインがあります。これらのサービスドメインは、外部インスタンスへのトラフィックの送信を許可する必要があります。
  + 外部インスタンスにインストールされた SSM Agent は、ハードウェアフィンガープリントを使用して 30 分ごとにローテーションされる IAM 認証情報を保持します。外部インスタンスがAWSに設定されている場合、SSM Agent は接続の再確立後にクレデンシャルを自動的に更新します。詳細については、*AWS Systems Managerユーザーガイド*の「[ハードウェアフィンガープリントを使用したオンプレミスサーバーと仮想マシンの検証](https://docs.aws.amazon.com/systems-manager/latest/userguide/ssm-agent-technical-details.html#fingerprint-validation)」を参照してください。
  + インスタンスが IPv6 のみのサブネットにある限り、IPv6 のみの設定の外部インスタンスで Linux タスクを実行できます。詳細については、「[IPv6-only モードで VPC を使用する](task-networking.md#networking-ipv6-only)」を参照してください。
+ `UpdateContainerAgent` API はサポートされません。外部インスタンスで SSM Agent または Amazon ECS エージェントを更新する方法については、「[外部インスタンス上の AWS Systems Manager エージェントと Amazon ECS コンテナエージェントを更新する](ecs-anywhere-updates.md)」を参照してください。
+ Amazon ECS キャパシティープロバイダーはサポートされていません。外部インスタンスでサービスを作成したり、スタンドアロンタスクを実行するには、`EXTERNAL`起動タイプを使用するタスクにのみ使用されます。
+ SELinux はサポートされません。
+ Amazon EFS ボリュームの使用、または `EFSVolumeConfiguration` はサポートされていません。
+ App Mesh との統合はサポートされていません。
+ コンソールを使用して外部インスタンスタスク定義を作成する場合は、コンソール JSON エディタでタスク定義を作成する必要があります。
+ Amazon ECS に最適化されていない AMI を使用する場合は、外部コンテナインスタンスで次のコマンドを実行して、タスクに IAM ロールを使用するルールを設定します。詳細については、「[外部インスタンスの追加設定](task-iam-roles.md#enable_task_iam_roles)」を参照してください。

  ```
  $ sysctl -w net.ipv4.conf.all.route_localnet=1
  $ iptables -t nat -A PREROUTING -p tcp -d 169.254.170.2 --dport 80 -j DNAT --to-destination 127.0.0.1:51679
  $ iptables -t nat -A OUTPUT -d 169.254.170.2 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 51679
  ```

### ネットワーク
<a name="ecs-anywhere-networking"></a>

Amazon ECS 外部インスタンスは、アウトバウンドトラフィックを生成したり、データを処理したりするアプリケーションを実行するために最適化されています。アプリケーションがウェブサービスなどのインバウンドトラフィックを必要とする場合、Elastic Load Balancing のサポートがないため、これらのワークロードをロードバランサーの背後に配置するためのサポートがないため、これらのワークロードの実行効率が低下します。

外部インスタンスとのネットワークに固有の追加の考慮事項を次に示します。
+ サービスの負荷分散はサポートされていません。
+ サービス検出はサポートされていません。
+ 外部インスタンスで実行される Linux タスクは、`bridge`、`host`、または`none` ネットワークモードを使用する必要があります。`awsvpc` ネットワークモードはサポートされていません。

  各ネットワークモードの詳細については、「[EC2 の Amazon ECS タスクネットワークオプション](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-networking.html)」を参照してください。
+ インスタンスが IPv6 のみのサブネットにある限り、IPv6 のみの設定の外部インスタンスで Linux タスクを実行できます。詳細については、「[IPv6-only モードで VPC を使用する](task-networking.md#networking-ipv6-only)」を参照してください。
+ 各リージョンには Amazon ECS サービスドメインがあり、外部インスタンスへのトラフィックの送信を許可する必要があります。
+ 外部インスタンスにインストールされた SSM Agent は、ハードウェアフィンガープリントを使用して 30 分ごとにローテーションされる IAM 認証情報を保持します。外部インスタンスがAWSに設定されている場合、SSM Agent は接続の再確立後にクレデンシャルを自動的に更新します。詳細については、*AWS Systems Managerユーザーガイド*の「[ハードウェアフィンガープリントを使用したオンプレミスサーバーと仮想マシンの検証](https://docs.aws.amazon.com/systems-manager/latest/userguide/ssm-agent-technical-details.html#fingerprint-validation)」を参照してください。

次のドメインは、Amazon ECS サービスと外部インスタンスにインストールされている Amazon ECS エージェント間の通信に使用されます。トラフィックが許可されていることと、DNS 解決が機能していることを確認します。各エンドポイントでは、*リージョン*は、米国東部 (オハイオ) リージョンの `us-east-2` のように、Amazon ECS でサポートされている AWS リージョンのリージョン識別子を表します。使用するすべてのリージョンのエンドポイントを許可する必要があります。`ecs-a`および`ecs-t`エンドポイントを使用する場合は、アスタリスク (例えば、`ecs-a-*`) を含める必要があります。
+ `ecs-a-*.region.amazonaws.com`— このエンドポイントは、タスクを管理するときに使用されます。
+ `ecs-t-*.region.amazonaws.com`— このエンドポイントは、タスクとコンテナのメトリクスを管理するために使用されます。
+ `ecs.region.amazonaws.com` — これは、Amazon ECS のサービスエンドポイントです。
+ `ssm.region.amazonaws.com ` — これは、AWS Systems Manager のサービスエンドポイントです。
+ `ec2messages.region.amazonaws.com` — これは、AWS Systems Manager がクラウド内の Systems Manager エージェントと Systems Manager サービスの間の通信に使用するサービスエンドポイントです。
+ `ssmmessages.region.amazonaws.com` — これは、クラウド内の Session Manager サービスでセッションチャネルを作成および削除するために必要なサービスエンドポイントです。
+ タスクが他のタスクとの通信を必要とする場合AWSサービスを使用する場合は、これらのサービスエンドポイントが許可されていることを確認します。アプリケーション例としては、Amazon ECR を使用してコンテナイメージを取得したり、CloudWatch Logs に CloudWatch を使用したりすることが挙げられます。詳細については、*AWS 全般のリファレンスガイド*の「[サービスエンドポイント](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html)」を参照してください。

### ECS Anywhere を使用した Amazon FSx for Windows File Server
<a name="ecs-anywhere-fsx"></a>

**重要**  
Amazon ECS Anywhere の Windows サポートは廃止されました。このセクションは適用されなくなりました。

Amazon ECS 外部インスタンスで Amazon FSx for Windows File Server を使用するには、オンプレミスのデータセンターと AWS クラウド の間に接続を確立する必要があります。ネットワークを VPC に接続するオプションについては、「[Amazon Virtual Private Cloud 接続オプション](https://docs.aws.amazon.com/whitepapers/latest/aws-vpc-connectivity-options/introduction.html)」を参照してください。

### ECS Anywhere を使用した gMSA
<a name="ecs-anywhere-gmsa"></a>

**重要**  
Amazon ECS Anywhere の Windows サポートは廃止されました。このセクションは適用されなくなりました。

以下のユースケースは、Windows がサポート対象オペレーティングシステムであったときに ECS Anywhere でサポートされていたものです。
+ アクティブディレクトリは、AWS クラウド にあります。この構成では、AWS クラウド 接続を使用してオンプレミスネットワークと AWS Direct Connect の間の接続を確立します。接続を作成する方法については、「[Amazon 仮想プライベートクラウド接続オプション](https://docs.aws.amazon.com/whitepapers/latest/aws-vpc-connectivity-options/introduction.html)」を参照してください。AWS クラウド にアクティブディレクトリを作成します。AWS Directory Service の使用開始方法の詳細については、「*AWS Directory Service 管理ガイド*」の「[AWS Directory Service の設定](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/setting_up.html)」を参照してください。その後、AWS Direct Connect 接続を使用して、外部インスタンスをドメインに参加させることができます。Amazon ECS での gMSA の操作方法については、「[Amazon ECS の EC2 Windows コンテナで gMSA を使用する方法について説明します。](windows-gmsa.md)」を参照してください。
+ アクティブディレクトリは、オンプレミスデータセンターで管理されています。-この設定では、外部インスタンスをオンプレミスのアクティブディレクトリに参加させます。その後、Amazon ECS タスクを実行する際に、ローカルで使用可能な認証情報を使用します。

# 外部インスタンスワークロード用の Amazon ECS クラスターを作成する
<a name="create-cluster-console-v2-ecs-anywhere"></a>

クラスターを作成して、タスクとサービスを実行するインフラストラクチャを定義します。

これを開始する前に、「[Amazon ECS を使用するようにセットアップする](get-set-up-for-amazon-ecs.md)」 の手順を完了し、適切な IAM 許可を割り当てる必要があります。詳細については、「[Amazon ECS クラスターの例](security_iam_id-based-policy-examples.md#IAM_cluster_policies)」を参照してください。Amazon ECS コンソールでは、CloudFormation スタックを作成することで、Amazon ECS クラスターに必要なリソースを簡単に作成できます。

クラスターの作成プロセスをできるだけ簡単にするために、コンソールには、以下で説明する多くの選択肢に対するデフォルトの選択肢があります。コンソール内のほとんどのセクションには、詳細なコンテキストを提供するヘルプパネルもあります。

以下のオプションを変更できます。
+ クラスターに名前空間を追加します。

  名前空間を使用すると、クラスターで作成したサービスを、追加の設定なしで名前空間内の他のサービスに接続できます。詳細については、「[Amazon ECS サービスを相互接続する](interconnecting-services.md)」を参照してください。
+ クラスターを外部インスタンス用に設定します。
+ マネージドストレージに AWS KMS キーを割り当てます。キーの作成方法の詳細については、*AWS Key Management Service ユーザーガイド*の「[KMS キーを作成する](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html)」を参照してください。
+ クラスターを識別しやすいようにタグを追加します。

**新しいクラスターを作成するには (Amazon ECS コンソール)**

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

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

1. ナビゲーションペインで **[Clusters]** (クラスター) を選択してください。

1. **[Clusters]** (クラスター) ページで、**[Create Cluster]** (クラスターの作成) を選択します。

1. **[クラスター設定]** で以下を設定します。
   + **[クラスター名]** に一意の名前を入力します。

     名前には、最大 255 文字 (大文字と小文字)、数字、およびハイフンを含めることができます。
   + (オプション) Service Connect に使用する名前空間をクラスター名と別のものにするには、**[名前空間]** に一意の名前を入力します。

1. (オプション) Container Insights を使用して **モニタリング** を展開し、次のいずれかのオプションを選択します。
   + オブザーバビリティが強化された推奨の Container Insights を使用するには、**[オブザーバビリティが強化された Container Insights]** を選択します。
   + Container Insights を使用するには、**[Container Insights]** を選択します。

1. (オプション) ECS Exec を使用してクラスター内のタスクをデバッグするには、**[トラブルシューティング設定]** を展開し、以下を設定します。
   + **[ECS Exec をオンにする]** を選択します。
   + (オプション) **[ECS Exec の AWS KMS キー]** には、ECS Exec セッションデータの暗号化に使用する AWS KMS キーの ARN を入力します。
   + (オプション) **[ECS Exec ログ記録]** で、ログの送信先を選択します。
     + CloudWatch Logs にログを送信するには、**[Amazon CloudWatch]** を選択します。
     + Amazon S3 にログを送信するには、**[Amazon S3]** を選択します。
     + ログ記録を無効にするには、**[なし]** を選択します。

1. (オプション) マネージドストレージのデータを暗号化します。**[暗号化]** の **[マネージドストレージ]** に、マネージドストレージデータの暗号化に使用する AWS KMS キーの ARN を入力します。

1. (オプション) クラスターを識別しやすくするには、**[Tags]** (タグ) を展開し、タグを設定します。

   [タグの追加] [**タグの追加**] を選択して、以下を実行します。
   + [**キー**] にはキー名を入力します。
   + [**値**] にキー値を入力します。

1. **[作成]** を選択します。

## 次のステップ
<a name="cluster-next-steps-ecs-anywhere"></a>

インスタンスをクラスターに登録する必要があります。詳細については、「[Amazon ECS クラスターに外部インスタンスを登録する](ecs-anywhere-registration.md)」を参照してください。

外部起動タイプのタスク定義を作成します。詳細については、[コンソールを使用した Amazon ECS タスク定義の作成](create-task-definition.md)を参照してください。

スタンドアロンタスクとして、またはサービスの一部としてアプリケーションを実行します。詳細については次を参照してください:
+ [Amazon ECS タスクとしてのアプリケーションの実行](standalone-task-create.md)
+ [Amazon ECS のローリング更新デプロイの作成](create-service-console-v2.md)

# 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 のアクティベーションを作成できます

# Amazon ECS 外部インスタンスの登録を解除する
<a name="ecs-anywhere-deregistration"></a>

インスタンスの使用が終了したら、Amazon ECS とAWS Systems Manager をインスタンスから登録解除することをお勧めします。登録解除後、コンテナインスタンスは新しいタスクを受けることができなくなります。

登録解除するときにコンテナインスタンスでタスクが実行されている場合、インスタンスを削除するかタスクが他の手段で停止するまで、これらのタスクは実行されたままになります。ただし、これらのタスクは Amazon ECS によるモニタリングや情報収集の対象外になります。外部インスタンス上のこれらのタスクが Amazon ECS サービスに含まれる場合、サービススケジューラは、可能であれば、別のコンテナインスタンスでそのタスクの別のコピーを開始します。

インスタンスの登録を解除した後、インスタンス上の残りの AWS リソースをクリーンアップします。その後、新しいクラスターに登録できます。

## 手順
<a name="ecs-anywhere-deregistration-procedure"></a>

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

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

1. ナビゲーションバーから、外部インスタンスが存在するリージョンを選択します。

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

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

1. **[Container instances]** (コンテナインスタンス)で、登録解除する外部のインスタンス ID を選択します。コンテナインスタンスの詳細ページにリダイレクトされます。

1. **[Container Instance : *id*]** (コンテナインスタンス: id) ページで、**[Deregister]** (登録解除) を選択します。

1. 登録解除メッセージを確認します。[**Deregistered fromAWS Systems Manager**]を選択して、外部インスタンスを Systems Manager 管理対象インスタンスとして登録解除することもできます。**[Deregister]** (登録解除) を選択します。
**注記**  
Systems Manager コンソールで、外部インスタンスを Systems Manager 管理対象インスタンスとして登録解除できます。手順については、「*AWS Systems Manager ユーザーガイド*」の「[ハイブリッドおよびマルチクラウド環境でのマネージドノードの登録解除](https://docs.aws.amazon.com/systems-manager/latest/userguide/fleet-manager-deregister-hybrid-nodes.html)」を参照してください。

1. インスタンスの登録を解除した後は、オンプレミスサーバーまたは VM にある AWS リソースをクリーンアップします。    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AmazonECS/latest/developerguide/ecs-anywhere-deregistration.html)

------
#### [ AWS CLI ]

1. コンテナインスタンスを登録解除するには、インスタンス ID とコンテナインスタンス ARN が必要です。これらの値がない場合は、次のコマンドを実行してください

   次のコマンドを実行して、インスタンス ID を取得します。

   インスタンス ID (`instanceID`) を使用し、コンテナインスタンス ARN (`containerInstanceARN`) を取得します。

   ```
   instanceId=$(aws ssm describe-instance-information --region "{{ region }}" | jq ".InstanceInformationList[] |select(.IPAddress==\"{{ IPv4 Address }}\") | .InstanceId" | tr -d'"'
   ```

   以下のコマンドを実行します。

   インスタンス (`deregister-container-instance`) を登録解除するには、コマンドのパラメータとして `containerInstanceArn` を使用します。

   ```
   instances=$(aws ecs list-container-instances --cluster "{{ cluster }}" --region "{{ region }}" | jq -c '.containerInstanceArns')
   containerInstanceArn=$(aws ecs describe-container-instances --cluster "{{ cluster }}" --region "{{ region }}" --container-instances $instances | jq ".containerInstances[] | select(.ec2InstanceId==\"{{ instanceId }}\") | .containerInstanceArn" | tr -d '"')
   ```

1.  次のコマンドを実行して、インスタンスをドレインします。

   ```
   aws ecs update-container-instances-state --cluster "{{ cluster }}" --region "{{ region }}" --container-instances "{{ containerInstanceArn }}" --status DRAINING
   ```

1. コンテナインスタンスのドレインが終了したら、次のコマンドを実行してインスタンスを登録解除します。

   ```
   aws ecs deregister-container-instance --cluster "{{ cluster }}" --region "{{ region }}" --container-instance "{{ containerInstanceArn }}"
   ```

1. 次のコマンドを実行し、SSM からコンテナインスタンスを削除します。

   ```
   aws ssm deregister-managed-instance --region "{{ region }}" --instance-id "{{ instanceId }}"
   ```

1. インスタンスの登録を解除した後は、オンプレミスサーバーまたは VM にある AWS リソースをクリーンアップします。    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AmazonECS/latest/developerguide/ecs-anywhere-deregistration.html)

------

# 外部インスタンス上の AWS Systems Manager エージェントと Amazon ECS コンテナエージェントを更新する
<a name="ecs-anywhere-updates"></a>

オンプレミスのサーバーまたは VM で、AWS Systems Managerエージェント（SSM Agent）と Amazon ECS コンテナエージェント（Amazon ECS ワークロードの実行時）AWSは、機能が追加または更新されたときに、これらのエージェントの新しいバージョンをリリースします。外部インスタンスがいずれかのエージェントの以前のバージョンを使用している場合は、次の手順を使用して更新できます。

## 外部インスタンスでの SSM Agent の更新
<a name="ecs-anywhere-updates-ssmagent"></a>

AWS Systems Managerインスタンスで SSM Agent を更新するプロセスを自動化することをお勧めします。これらは、更新を自動化するためのいくつかの方法を提供します。詳細については、*AWS Systems Managerユーザーガイド*の「[SSM Agent の更新を自動化する](https://docs.aws.amazon.com/systems-manager/latest/userguide/ssm-agent-automatic-updates.html)」を参照してください。

## 外部インスタンス上の Amazon ECS エージェントを更新しています
<a name="ecs-anywhere-updates-ecsagent"></a>

外部インスタンスでは、Amazon ECS コンテナエージェントは`ecs-init`パッケージをアップグレードすることで更新されます。Amazon ECS エージェントを更新しても、実行中のタスクやサービスが中断されることはありません。Amazon ECS が`ecs-init`パッケージと署名ファイルを、各リージョンの Amazon S3 バケットに作成します。`ecs-init`から始まるバージョン`1.52.1-1`では、Amazon ECS は、外部インスタンスが使用するオペレーティングシステムとシステムアーキテクチャに応じて個別の `ecs-init` パッケージを提供します。

以下の表を使用して、`ecs-init`パッケージは、外部インスタンスが使用するオペレーティングシステムとシステムアーキテクチャに基づいてダウンロードする必要があります。

**注記**  
次のコマンドを使用して、外部インスタンスが使用するオペレーティングシステムおよびシステムアーキテクチャを決定できます。  

```
cat /etc/os-release
uname -m
```


| オペレーティングシステム (アーキテクチャ) | ecs-init パッケージ | 
| --- | --- | 
|  CentOS 7 (x86-64) CentOS 8 (x86\$164) CentOS Stream 9 (x86\$164) SUSE Enterprise Server 15 (x86\$164) RHEL 7 (x86\$164) RHEL 8 (x86\$164)  |  `amazon-ecs-init-latest.x86_64.rpm`  | 
|  CentOS 7 (aarch64) CentOS 8 (aarch64) CentOS Stream 9 (aarch64) RHEL 7 (aarch64)  |  `amazon-ecs-init-latest.aarch64.rpm`  | 
|  Debian 9 (x86\$164) Debian 10 (x86\$164) Debian 11 (x86\$164) Debian 12 (x86\$164) Ubuntu 18 (x86\$164) Ubuntu 20 (x86\$164) Ubuntu 22 (x86\$164) Ubuntu 24 (x86\$164)  |  `amazon-ecs-init-latest.amd64.deb`  | 
|  Debian 9 (aarch64) Debian 10 (aarch64) Debian 11 (aarch64) Debian 12 (aarch64) Ubuntu 18 (aarch64) Ubuntu 20 (aarch64) Ubuntu 22 (aarch64) Ubuntu 24 (aarch64)  |  `amazon-ecs-init-latest.arm64.deb`  | 

Amazon ECS エージェントを更新するには、以下の手順に従います。

**Amazon ECS エージェントを更新するには**

1. 実行している Amazon ECS エージェントのバージョンを確認します。

   ```
   curl -s 127.0.0.1:51678/v1/metadata | python3 -mjson.tool
   ```

1. オペレーティングシステムとシステムアーキテクチャー用の`ecs-init`パッケージをダウンロードします。Amazon ECS が`ecs-init`パッケージファイルを、各リージョンの Amazon S3 バケットに作成します。置き換えることを確認します。*<region>*コマンド内の識別子を、地理的に最も近いリージョン名 (例:`us-west-2`）に置き換えることを確認します。

   **amazon-ecs-init-latest.x86\$164.rpm**

   ```
   curl -o amazon-ecs-init.rpm https://s3.<region>.amazonaws.com/amazon-ecs-agent-<region>/amazon-ecs-init-latest.x86_64.rpm
   ```

   **amazon-ecs-init-latest.aarch64.rpm**

   ```
   curl -o amazon-ecs-init.rpm https://s3.<region>.amazonaws.com/amazon-ecs-agent-<region>/amazon-ecs-init-latest.aarch64.rpm
   ```

   **amazon-ecs-init-latest.amd64.deb**

   ```
   curl -o amazon-ecs-init.deb https://s3.<region>.amazonaws.com/amazon-ecs-agent-<region>/amazon-ecs-init-latest.amd64.deb
   ```

   **amazon-ecs-init-latest.arm64.deb**

   ```
   curl -o amazon-ecs-init.deb https://s3.<region>.amazonaws.com/amazon-ecs-agent-<region>/amazon-ecs-init-latest.arm64.deb
   ```

1. (オプション) PGP 署名を使用して、`ecs-init`パッケージファイルの妥当性を検証します。

   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. `ecs-init` パッケージ署名ファイルをダウンロードします。署名は、ASCII でデタッチ済みの PGP 署名で、拡張子が `.asc` のファイルに保存されています。Amazon ECS は、各リージョンの Amazon S3 バケットに署名ファイルを提供します。置き換えることを確認します。*<region>*コマンド内の識別子を、地理的に最も近いリージョン名 (例:`us-west-2`）に置き換えることを確認します。

      **amazon-ecs-init-latest.x86\$164.rpm**

      ```
      curl -o amazon-ecs-init.rpm.asc https://s3.<region>.amazonaws.com/amazon-ecs-agent-<region>/amazon-ecs-init-latest.x86_64.rpm.asc
      ```

      **amazon-ecs-init-latest.aarch64.rpm**

      ```
      curl -o amazon-ecs-init.rpm.asc https://s3.<region>.amazonaws.com/amazon-ecs-agent-<region>/amazon-ecs-init-latest.aarch64.rpm.asc
      ```

      **amazon-ecs-init-latest.amd64.deb**

      ```
      curl -o amazon-ecs-init.deb.asc https://s3.<region>.amazonaws.com/amazon-ecs-agent-<region>/amazon-ecs-init-latest.amd64.deb.asc
      ```

      **amazon-ecs-init-latest.arm64.deb**

      ```
      curl -o amazon-ecs-init.deb.asc https://s3.<region>.amazonaws.com/amazon-ecs-agent-<region>/amazon-ecs-init-latest.arm64.deb.asc
      ```

   1. キーを使用して`ecs-init`パッケージファイルを検証します。

      **`rpm`パッケージ向け**

      ```
      gpg --verify amazon-ecs-init.rpm.asc ./amazon-ecs-init.rpm
      ```

      **`deb`パッケージ向け**

      ```
      gpg --verify amazon-ecs-init.deb.asc ./amazon-ecs-init.deb
      ```

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

      ```
      gpg: Signature made Fri 14 May 2021 09:31:36 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. `ecs-init` パッケージをインストールします。

   **`rpm`パッケージ向けは、CentOS 7、CentOS 8、および RHEL 7 に搭載されています。**

   ```
   sudo yum install -y ./amazon-ecs-init.rpm
   ```

   **SUSE Enterprise Server 15 の`rpm`パッケージ向け**

   ```
   sudo zypper install -y --allow-unsigned-rpm ./amazon-ecs-init.rpm
   ```

   **`deb`パッケージ向け**

   ```
   sudo dpkg -i ./amazon-ecs-init.deb
   ```

1. `ecs` サービスを再起動します。

   ```
   sudo systemctl restart ecs
   ```

1. Amazon ECS エージェントのバージョンが更新されたことを確認します。

   ```
   curl -s 127.0.0.1:51678/v1/metadata | python3 -mjson.tool
   ```