

# Amazon ECS Service Connect 設定の概要
<a name="service-connect-concepts"></a>

Service Connect を使用する場合、リソースで設定する必要があるパラメータがあります。

Amazon ECS リソースの設定パラメータを以下の表に示します。


| パラメータの場所 | アプリケーションタイプ | 説明 | 必須 | 
| --- | --- | --- | --- | 
| タスク定義 | クライアント | クライアントタスク定義には、Service Connect が利用できる変更はありません。 | 該当なし | 
| タスク定義 | クライアント/サーバー | サーバーは、コンテナの portMappings のポートに name フィールドを追加する必要があります。詳細については、[portMappings](task_definition_parameters.md#ContainerDefinition-portMappings)を参照してください。 | はい | 
| タスク定義 | クライアント/サーバー | サーバーは、オプションでアプリケーションプロトコル (HTTP など) を提供して、サーバーアプリケーションのプロトコル固有のメトリクス (HTTP 5xx など) を受け取ることができます。 | いいえ | 
| サービスの定義 | クライアント | クライアントサービスは、名前空間の結合を設定するには serviceConnectConfiguration を追加する必要があります。この名前空間には、このサービスが検出する必要のあるすべてのサーバーサービスが含まれていなければなりません。詳細については、「[serviceConnectConfiguration](service_definition_parameters.md#Service-serviceConnectConfiguration)」を参照してください。 | はい | 
| サービスの定義 | クライアント/サーバー | サーバーサービスは、サービスが利用できる DNS 名、ポート番号、名前空間を設定するために serviceConnectConfiguration を追加する必要があります。詳細については、「[serviceConnectConfiguration](service_definition_parameters.md#Service-serviceConnectConfiguration)」を参照してください。 | はい | 
| クラスター | クライアント | クラスターはデフォルトの Service Connect 名前空間を追加できます。クラスター内の新しいサービスは、サービスで Service Connect が設定されている場合は名前空間を継承します。 | いいえ | 
| クラスター | クライアント/サーバー | サーバーサービスに適用されるクラスターには、Service Connect が利用できる変更はありません。サーバーのタスク定義とサービスは、それぞれの設定を行う必要があります。 | 該当なし | 

**Service Connect の設定手順の概要**  
次の手順では、Service Connect の設定方法の概要を示します。

**重要**  
 Service Connect がお客様のアカウントに AWS Cloud Map サービスを作成します。手動でのインスタンスの登録/登録解除、インスタンス属性の変更、サービスの削除を行ってこれらの AWS Cloud Map リソースを変更すると、アプリケーショントラフィックまたは以降のデプロイで予期しない動作が発生することがあります。
 Service Connect は、タスク定義内のリンクをサポートしていません。

1. タスク定義のポートマッピングにポート名を追加します。さらに、アプリケーションのレイヤー 7 プロトコルを識別して、追加のメトリクスを取得できます。

1. AWS Cloud Map 名前空間を使用してクラスターを作成するか、共有名前空間を使用する、または名前空間を個別に作成します。単純に構成できるように、名前空間に必要な名前でクラスターを作成し、名前空間に同名を指定します。この場合、Amazon ECS は必要な設定で新しい HTTP 名前空間を作成します。Service Connect は Amazon Route 53 では DNS ホストゾーンを使用または作成しません。

1. サービスを設定して、名前空間内に Service Connect エンドポイントを作成します。

1. サービスをデプロイしてエンドポイントを作成します。Amazon ECS は各タスクに Service Connect プロキシコンテナを追加し、AWS Cloud Map に Service Connect エンドポイントを作成します。このコンテナはタスク定義では設定されていないため、タスク定義を変更せずに再利用して、同じ名前空間または複数の名前空間に複数のサービスを作成できます。

1. クライアントアプリをサービスとしてデプロイしてエンドポイントに接続します。Amazon ECS は Service Connect エンドポイントへの接続を各タスクの Service Connect プロキシ経由で行います。

   アプリケーションは Service Connect エンドポイントへの接続にのみプロキシを使用します。プロキシを使用するための追加の構成はありません。プロキシは、ラウンドロビン負荷分散、外れ値検出、再試行を実行します。プロキシの詳細については、「[Service Connect プロキシ](service-connect-concepts-deploy.md#service-connect-concepts-proxy)」を参照してください。

1. Amazon CloudWatch の Service Connect プロキシ経由のトラフィックを監視します。

## クラスターの設定
<a name="service-connect-concepts-cluster-defaults"></a>

クラスターの作成時または更新時に、Service Connect のデフォルトの名前空間を設定できます。デフォルトとして指定する名前空間名は、同じ AWS リージョンとアカウントに存在するか、同じ AWS リージョンに存在し、AWS Resource Access Manager を使用して別の AWS アカウントと共有するようにできます。

クラスターを作成してデフォルトの Service Connect 名前空間を指定した場合、Amazon ECS が名前空間を作成する間、そのクラスターは `PROVISIONING` ステータスで待機します。クラスターのステータスには、名前空間のステータスを示す `attachment` が表示されます。アタッチメントは、デフォルトでは AWS CLI に表示されません。表示するには、`--include ATTACHMENTS` を追加する必要があります。

AWS RAM を使用して AWS アカウントと共有されている名前空間を使用する場合は、クラスター設定で名前空間の Amazon リソースネーム (ARN) を指定します。共有 AWS Cloud Map 名前空間の詳細については、「[共有 AWS Cloud Map 名前空間を使用した Amazon ECS Service Connect](service-connect-shared-namespaces.md)」を参照してください。

## サービス設定
<a name="service-connect-concepts-config"></a>

Service Connect は、必要最小限の設定で済むように設計されています。タスク定義で、Service Connect で使用する各ポートマッピングの名前を設定する必要があります。サービスでクライアントサービスを作成するには、Service Connect をオンにして AWS アカウントの名前空間または共有名前空間を選択する必要があります。クライアント/サーバーサービスを作成するには、いずれかのポートマッピングの名前と一致する単一の Service Connect サービス設定を追加する必要があります。Amazon ECS はタスク定義からポート番号とポート名を再利用して、Service Connect サービスとエンドポイントを定義します。これらの値を上書きするには、コンソールで他のパラメータ **[Discovery]** (検出)、**[DNS]**、**[Port]** (ポート) を使用するか、`discoveryName`、`clientAliases` それぞれを Amazon ECS API で使用します。

## 初期ヘルスチェックの設定
<a name="service-connect-concepts-health-check"></a>

Service Connect は、トラフィックをルーティングする前にタスクが正常であることを確認します。タスクが起動すると (デプロイ、スケーリング、または置き換え中)、Service Connect はタスクの状態をモニタリングして、トラフィックを受け入れる準備ができていることを確認します。この動作を有効にするには、タスク定義で必須コンテナのヘルスチェックを定義する必要があります。

初期ヘルスチェックの動作は、タスクがトラフィックを受け入れる準備ができた状態に達するまでの潜在的な遅延を考慮します。
+ タスクが `HEALTHY` の場合は、トラフィックに対して直ちに使用できます。
+ タスクのヘルスが `UNKNOWN` の場合、Service Connect はタスクの必須コンテナのコンテナヘルスチェック設定 (「[ヘルスチェック](task_definition_parameters.md#container_definition_healthcheck)」を参照) に従って、最大 `8 minutes` のタイムアウトを計算してから、`UNKNOWN` のままであってもトラフィックで利用できるようにします。
+ タスクが `UNHEALTHY` になっているときは、Amazon ECS が代替タスクを起動する場合があります。正常なタスクが利用できない場合は、サービスの設定に基づいてデプロイがロールバックされる可能性があります。

進行中のすべてのトラフィックについて、Service Connect は外れ値検出に基づくパッシブヘルスチェックを使用してトラフィックを効率的にルーティングします。