Service Connect を使用して Amazon ECS サービスを短縮名で接続する - Amazon Elastic Container Service

Service Connect を使用して Amazon ECS サービスを短縮名で接続する

Amazon ECS Service Connect では、Amazon ECS 設定としてサービス間通信を管理できます。Amazon ECS でサービス検出とサービスメッシュの両方を構築します。これにより、サービスのデプロイごとに管理する各サービス内の完全な設定、VPC DNS 設定に依存しない名前空間内のサービスを参照する統一された方法、すべてのアプリケーションを監視するための標準化されたメトリクスとログが提供されます。Service Connect は、サービスのみを相互接続します。

次の図は、VPC に 2 つのサブネットと 2 つのサービスを含む Service Connect ネットワークの例を示しています。各サブネットにつき 1 つのタスクで WordPress を実行するクライアントサービス。各サブネットに 1 つのタスクで MySQL を実行するサーバーサービス。どちらのサービスも、2 つのサブネットに分散された複数のタスクを実行するため、可用性が高く、タスクやアベイラビリティーゾーンの問題に対する耐性があります。実線の矢印は、WordPress から MySQL への接続を示しています。例えば、IP アドレス 172.31.16.1 が設定されたタスク内の WordPress コンテナ内から実行される mysql --host=mysql CLI コマンドなどです。このコマンドは、MySQL のデフォルトポートの短縮名 mysql を使用します。この名前とポートは、同じタスク内で Service Connect プロキシに接続します。WordPress タスクのプロキシは、ラウンドロビン負荷分散と異常値検出に対する以前の障害情報を使用して、接続する MySQL タスクを選択します。図の実線の矢印で示されているように、プロキシは IP アドレス 172.31.16.2 を使用して MySQL タスクの 2 番目のプロキシに接続します。2 番目のプロキシは、同じタスクでローカル MySQL サーバーに接続します。どちらのプロキシも接続パフォーマンスをレポートし、Amazon ECS と Amazon CloudWatch コンソールのグラフに表示されるため、あらゆる種類のアプリケーションのパフォーマンスメトリクスを同じ方法で取得できます。

最小限の HA サービスを示す Service Connect ネットワークの例

Service Connect では次の用語が使用されます。

ポート名

特定のポートマッピングに名前を割り当てる Amazon ECS タスク定義設定です。この設定は Amazon ECS Service Connect でのみ使用されます。

クライアントエイリアス

エンドポイントで使用されるポート番号を割り当てる Amazon ECS サービス設定です。さらに、クライアントエイリアスはエンドポイントの DNS 名を割り当て、検出名を上書きすることができます。Amazon ECS サービスで検出名が提供されていない場合、クライアントエイリアス名がエンドポイント名としてポート名に上書きされます。エンドポイントの例については、エンドポイントの定義を参照してください。1 つの Amazon ECS サービスに複数のクライアントエイリアスを割り当てることができます。この設定は Amazon ECS Service Connect でのみ使用されます。

検出名

タスク定義から指定されたポートにオプションとして作成できる中間名。この名前は AWS Cloud Map サービスの作成に使用されます。この名前が指定されていない場合は、タスク定義からのポート名が使用されます。特定のポートおよび Amazon ECS サービスに複数の検出名を割り当てることができます。この設定は Amazon ECS Service Connect でのみ使用されます。

AWS Cloud Map サービス名は、名前空間内で一意である必要があります。この制限により、各名前空間の特定のタスク定義に対し、検出名のない Service Connect 設定は 1 つしか使用できません。

エンドポイント

API またはウェブサイトに接続するための URL です。URL にはプロトコル、DNS 名、ポートが含まれます。エンドポイント全般の詳細については、「Amazon Web Services 全般のリファレンス」の「AWS 用語集」の「エンドポイント」を参照してください。

Service Connect は、Amazon ECS サービスに接続するエンドポイントを作成すると共に、Amazon ECS サービスのタスクがエンドポイントに接続するための設定を行います。URL にはプロトコル、DNS 名、ポートが含まれます。ポートはコンテナイメージ内のアプリケーションと一致する必要があるため、プロトコルとポート名はタスク定義で選択します。サービス内では、各ポートを名前で選択し、DNS 名を割り当てることができます。Amazon ECS サービス設定で DNS 名を指定しない場合、デフォルトではタスク定義からのポート名が使用されます。例えば、Service Connect エンドポイントは http://blog:80grpc://checkout:8080http://_db.production.internal:99 のいずれかになります。

Service Connect サービス

Amazon ECS サービス内の 1 つのエンドポイントの設定です。これは Service Connect 設定の一部で、コンソールの [Service Connect and discovery name configuration] (Service Connect および検出名の設定) の中の 1 行、または Amazon ECS サービスにおける JSON 設定の services リストの中の 1 つのオブジェクトで構成されます。この設定は Amazon ECS Service Connect でのみ使用されます。

詳細については、「Amazon Elastic Container Service API リファレンス」の「ServiceConnectService」を参照してください。

名前空間

Service Connect で使用する AWS Cloud Map 名前空間の短縮名または完全な Amazon リソースネーム (ARN)。名前空間は、Amazon ECS サービスおよびクラスターと同じ AWS リージョンにある必要があります。AWS Cloud Map 内の名前空間のタイプは Service Connect に影響しません。

Service Connect は、相互に対話する Amazon ECS タスクの論理グループとして AWS Cloud Map 名前空間を使用します。各 Amazon ECS サービスは 1 つの名前空間のみに属することができます。名前空間内のサービスは、同じ AWS アカウントの同じ AWS リージョン内の異なる Amazon ECS クラスターに分散できます。サービスは、任意の基準で自由に整理できます。

クライアントサービス

ネットワーククライアントアプリケーションを実行するサービスです。このサービスには名前空間が設定されている必要があります。サービス内の各タスクは、Service Connect プロキシコンテナを介して、名前空間のすべてのエンドポイントを検出して接続できます。

タスク内のいずれかのコンテナが名前空間内のサービスからエンドポイントに接続する必要がある場合は、クライアントサービスを選択します。フロントエンド、リバースプロキシ、またはロードバランサーアプリケーションが、例えば Elastic Load Balancing からなど、他の方法で外部トラフィックを受信する場合は、このタイプの Service Connect 設定を使用できます。

クライアント/サーバーサービス

ネットワークまたはウェブサービスアプリケーションを実行する Amazon ECS サービスです。このサービスには、名前空間と少なくとも 1 つのエンドポイントが設定されている必要があります。サービス内の各タスクには、エンドポイントを使用してアクセスできます。Service Connect プロキシコンテナは、エンドポイント名とポートをリッスンして、タスク内のアプリケーションコンテナにトラフィックを誘導します。

いずれかのコンテナが公開してポート上でネットワークトラフィックをリッスンする場合は、クライアント/サーバーサービスを選択してください。これらのアプリケーションは、同じ名前空間内の他のクライアント/サーバーサービスに接続する必要はありませんが、クライアント設定が必要です。バックエンド、ミドルウェア、ビジネス層、またはほとんどのマイクロサービスはこのタイプの Service Connect 設定を使用できます。フロントエンド、リバースプロキシ、またはロードバランサーアプリケーションに、同じ名前空間の Service Connect を使用して設定した他のサービスからのトラフィックを受信させる場合、これらのサービスはこのタイプの Service Connect 設定を使用する必要があります。

Service Connect 機能は関連サービスの仮想ネットワークを作成します。同じサービス設定を複数の異なる名前空間で使用することで、独立していても同一のアプリケーションセットを実行できます。Service Connect は Amazon ECS サービスのプロキシコンテナを定義します。これにより、同じタスク定義を使用して、Service Connect 設定が異なるさまざまな名前空間で同一のアプリケーションを実行できます。サービスが作成する各タスクは、タスク内のプロキシコンテナを実行します。

Service Connect は同じ名前空間内の Amazon ECS サービス間の接続に適しています。次のアプリケーションで Service Connect で設定された Amazon ECS サービスに接続するためには、追加の相互接続方法を使用する必要があります。

  • 他の名前空間で設定されているタスク

  • Service Connect 用に設定されていないタスク

  • Amazon ECS の外部にあるその他のアプリケーション

これらのアプリケーションは Service Connect プロキシ経由で接続できますが、Service Connect エンドポイント名を解決することはできません。

これらのアプリケーションで Amazon ECS タスクの IP アドレスを解決するには、別の相互接続方法を使用する必要があります。

料金

Amazon ECS Service Connect の料金は、コンテナ化されたワークロードをホストするために AWS Fargate または Amazon EC2 インフラストラクチャを使用するかどうかによって異なります。AWS Outposts で Amazon ECS を使用する場合、料金は Amazon EC2 を直接使用する場合に使われる同じモデルに従います。詳細については、Amazon ECS 料金表を参照してください。

Service Connect が使用している場合、AWS Cloud Map の使用は完全に無料です。