外部インスタンス(Amazon ECS Anywhere) - Amazon Elastic Container Service

外部インスタンス(Amazon ECS Anywhere)

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

以下に、Amazon ECS Anywhere の高レベルのシステムアーキテクチャの概要を示します。


            Amazon ECS Anywhere のアーキテクチャを示す図

Considerations

外部インスタンスの使用を開始する前に、以下の考慮事項に注意してください。

  • 現在、中国 (北京) リージョンと中国 (寧夏) リージョンの Amazon ECS Anywhere 外部インスタンスを登録できません。

  • 外部インスタンスは、一度に 1 つずつクラスターに登録できます。外部インスタンスを別のクラスターに登録する方法については、「外部インスタンスの登録を解除する」を参照してください。

  • 外部インスタンスには、AWS API との通信を許可する IAM ロールが必要です。詳細については、「外部インスタンスに必要な IAM アクセス許可」を参照してください。

  • 外部インスタンスには、事前設定されたインスタンス認証情報チェーンをローカルに定義しないでください。これは、登録スクリプトに干渉するためです。

  • コンテナログを CloudWatch Logs に送信するには、タスク定義でタスク実行 IAM ロールを作成し、指定してください。詳細については、「条件付き IAM アクセス許可」を参照してください。

  • 外部インスタンスがクラスターに登録されると、ecs.capability.external属性がインスタンスに関連付けられています。この属性は、インスタンスを外部インスタンスとして識別します。

  • カスタム属性を外部インスタンスに追加して、タスクの配置制約として使用できます。詳細については、「カスタム属性」を参照してください。

  • 外部インスタンスにリソースタグを追加できます。詳細については、「外部コンテナインスタンスへのタグの追加」を参照してください。

  • 外部インスタンスとのネットワーキングに固有の追加の考慮事項を次に示します。詳細については、「ECS Anywhereを使用したネットワーク」を参照してください。

    • サービスの負荷分散はサポートされていません。

    • サービス検出はサポートされていません。

    • 外部インスタンスで実行されるタスクは、bridge,host, またはnone ネットワークモードを使用する必要があります。awsvpc ネットワークモードはサポートされていません。

    • 各 AWS リージョンに Amazon ECS サービスドメインがあります。これらのサービスドメインは、外部インスタンスへのトラフィックの送信を許可する必要があります。

    • 外部インスタンスにインストールされた SSM Agent は、ハードウェアフィンガープリントを使用して 30 分ごとにローテーションされる IAM 認証情報を保持します。外部インスタンスがAWSに設定されている場合、SSM Agent は接続の再確立後にクレデンシャルを自動的に更新します。詳細については、AWS Systems Managerユーザーガイドの「ハードウェアフィンガープリントを使用したオンプレミスサーバーと仮想マシンの検証」を参照してください。

  • UpdateContainerAgent API はサポートされません。外部インスタンスで SSM Agent または Amazon ECS エージェントを更新する方法については、「外部インスタンス上のAWS Systems Managerエージェントと Amazon ECS コンテナエージェントを更新しています」を参照してください。

  • Amazon ECS キャパシティープロバイダーはサポートされていません。外部インスタンスでサービスを作成したり、スタンドアロンタスクを実行するには、EXTERNAL起動タイプを使用するタスクにのみ使用されます。

  • ECS Exec はサポートされません。

  • SELinux はサポートされません。

  • Amazon EFS ボリュームの使用、またはEFSVolumeConfigurationはサポートされていません。

  • タスク定義での GPU 要件の指定はサポートされていません。

  • App Mesh との統合はサポートされていません。

サポートされるオペレーティングシステムとシステムアーキテクチャ

以下は、サポートされるオペレーティングシステムとシステムアーキテクチャのリストです。

  • CentOS 7、CentOS 8

  • RHEL 7-DockerまたはRHELのオープンパッケージリポジトリのいずれも、RHELにDockerをネイティブにインストールすることはできません。このドキュメントで説明されているインストールスクリプトを実行する前に、Docker がインストールされていることを確認する必要があります。

  • Fedora 32、Fedora 33 — デフォルトでcgroups.v2を使用する Fedora 32 および Fedora 33 はAmazon ECS ではサポートされていません。その結果、サーバーのデフォルトの grub 設定を変更し、サーバーを再起動する必要があります。手順については、Docker ドキュメントのcgroup バージョンの変更を参照してください。

  • openSUSE タンブルウィード

  • Ubuntu 18, Ubuntu 20

  • Debian 9、Debian 10

  • SUSE Enterprise Server 15

  • x86_64およびARM64CPU アーキテクチャがサポートされています。

ECS Anywhereを使用したネットワーク

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

外部インスタンスで実行するタスクは、bridge,host, またはnoneネットワークモードを使用する必要があります。awsvpc ネットワークモードはサポートされていません。各ネットワークモードの詳細については、のAmazon ECS ベストプラクティスガイドの「ネットワークモードの選択」を参照してください。

次のドメインは、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 のサービスエンドポイントです。

  • タスクが他のタスクとの通信を必要とする場合AWSサービスを使用する場合は、これらのサービスエンドポイントが許可されていることを確認します。アプリケーション例としては、Amazon ECR を使用してコンテナイメージを取得したり、CloudWatch Logs に CloudWatch を使用したりすることが挙げられます。詳細については、AWS 全般のリファレンスガイドの「サービスエンドポイント」を参照してください。