サービス検出 - Amazon Elastic Container Service

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

サービス検出

Amazon ECS サービスはオプションで Amazon ECS サービス検出を使用するように設定できます。サービス検出では、 AWS Cloud Map API アクションを使用して、Amazon ECS サービスの HTTP および DNS 名前空間を管理します。詳細については、「 AWS Cloud Map デベロッパーガイド」の「 AWS Cloud Mapとは」を参照してください。

サービス検出は、次の AWS リージョンで使用できます。

リージョン名 リージョン

米国東部(バージニア北部)

us-east-1

米国東部 (オハイオ)

us-east-2

米国西部 (北カリフォルニア)

us-west-1

米国西部 (オレゴン)

us-west-2

アフリカ (ケープタウン)

af-south-1

アジアパシフィック (香港)

ap-east-1

アジアパシフィック(ムンバイ)

ap-south-1

アジアパシフィック (ハイデラバード)

ap-south-2

アジアパシフィック(東京)

ap-northeast-1

アジアパシフィック (ソウル)

ap-northeast-2

アジアパシフィック (大阪)

ap-northeast-3

アジアパシフィック(シンガポール)

ap-southeast-1

アジアパシフィック (シドニー)

ap-southeast-2

アジアパシフィック (ジャカルタ)

ap-southeast-3

アジアパシフィック (メルボルン)

ap-southeast-4

カナダ(中部)

ca-central-1

カナダ西部 (カルガリー)

ca-west-1

中国 (北京)

cn-north-1

中国 (寧夏)

cn-northwest-1

欧州 (フランクフルト)

eu-central-1

欧州 (チューリッヒ)

eu-central-2

欧州 (アイルランド)

eu-west-1

欧州 (ロンドン)

eu-west-2

欧州 (パリ)

eu-west-3

欧州 (ミラノ)

eu-south-1

欧州 (ストックホルム)

eu-north-1

イスラエル (テルアビブ)

il-central-1

欧州 (スペイン)

eu-south-2

中東 (アラブ首長国連邦)

me-central-1

中東 (バーレーン)

me-south-1

南米(サンパウロ)

sa-east-1

AWS GovCloud (米国東部)

us-gov-east-1

AWS GovCloud (米国西部)

us-gov-west-1

サービス検出の概念

サービス検出は次のコンポーネントで構成されます。

  • サービス検出名前空間: 同じドメイン名 (example.com など) を共有するサービスの論理グループ。これはトラフィックをルーティングするドメイン名です。コマンドを呼び出すaws servicediscovery create-private-dns-namespaceか、Amazon ECS コンソールで名前空間を作成できます。aws servicediscovery list-namespaces コマンドを使用して、現在のアカウントで作成された名前空間に関するサマリー情報を確認できます。サービス検出コマンドの詳細については、 (サービス検出) リファレンスガイドlist-namespacescreate-private-dns-namespace「」および「」を参照してください。 AWS Cloud Map AWS CLI

  • サービス検出サービス: サービス検出名前空間にあり、名前空間のサービス名および DNS 設定から構成されます。これは、次の主要なコンポーネントを提供します。

    • サービスレジストリ: DNS または AWS Cloud Map API アクションを介してサービスを検索し、サービスへの接続に使用できる 1 つ以上の利用可能なエンドポイントを取得できます。

  • サービスディスカバリインスタンス: サービスディスカバリサービスにあり、サービスディレクトリ内の各 Amazon ECS サービスに関連付けられた属性で構成されます。

    • インスタンスの属性: 次のメタデータは、サービスディスカバリ を使用するように設定された各 Amazon ECS サービスのカスタム属性として追加されます。

      • AWS_INSTANCE_IPV4Aレコードの場合、Route 53 が DNS クエリに応答して返し、インスタンスの詳細を検出するときに AWS Cloud Map 返す IPv4 アドレス。例: 192.0.2.44

      • AWS_INSTANCE_PORT – サービスディスカバリサービスに関連付けられたポート値。

      • AVAILABILITY_ZONE – タスクが起動したアベイラビリティーゾーン。EC2 起動タイプを使用するタスクの場合、これはコンテナインスタンスが存在するアベイラビリティーゾーンです。Fargate 起動タイプを使用するタスクの場合、これは Elastic Network Interface が存在するアベイラビリティーゾーンです。

      • REGION タスクが存在するリージョン。

      • ECS_SERVICE_NAME – タスクが属している Amazon ECS サービスの名前。

      • ECS_CLUSTER_NAME – タスクが属している Amazon ECS クラスターの名前。

      • EC2_INSTANCE_ID タスクが配置されていたコンテナインスタンスの ID。タスクが Fargate 起動タイプを使用している場合、このカスタム属性は追加されません。

      • ECS_TASK_DEFINITION_FAMILY タスクが使用しているタスク定義ファミリー。

      • ECS_TASK_SET_EXTERNAL_ID タスクセットが外部デプロイ用に作成され、サービス検出レジストリに関連付けられている場合、ECS_TASK_SET_EXTERNAL_ID 属性にはタスクセットの外部 ID が含まれます。

  • Amazon ECS ヘルスチェック: Amazon ECS はコンテナレベルのヘルスチェックを定期的に実行します。エンドポイントがヘルスチェックに失敗した場合、このエンドポイントは DNS ルーチングから削除され、異常とマークされます。

サービスの検出に関する考慮事項

サービス検出を使用する際には、以下の点を考慮する必要があります。

  • プラットフォームバージョンが v1.1.0 以降を使用する場合、サービスの検出は Fargate タスクでサポートされます。詳細については、「Fargate Linux プラットフォームのバージョン」を参照してください。

  • サービス検出を使用するように構成されたサービスには、サービスごとに 1,000 タスクに制限があります。これは、Route 53 サービスクォータによるものです。

  • Amazon ECS コンソールでのサービスの作成ワークフローでは、プライベート DNS 名前空間へのサービスの登録のみがサポートされます。 AWS Cloud Map プライベート DNS 名前空間が作成されると、Route 53 プライベートホストゾーンが自動的に作成されます。

  • DNS 解決を成功させるには、VPC DNS 属性を設定する必要があります。属性の設定方法については、を参照してください。VPC の DNS サポートAmazon VPC User Guide

  • パブリック名前空間が使用されている場合でも、 サービス用に作成された DNS レコードは、パブリック IP アドレスではなく、タスクのプライベート IP アドレスに常に登録されます。

  • &service-discovery-first; では、awsvpcbridgehost のいずれかのネットワークモードをタスクで指定する必要があります (none はサポートされていません)。

  • サービスタスク定義が awsvpc ネットワークモードを使用する場合、各サービスタスクに A または SRV レコードを自由に組み合わせて作成できます。SRV レコードを使用する場合、ポートが必要です。

  • サービスタスク定義が bridge または host ネットワークモードを使用する場合、SRV レコードのみがサポートされる DNS レコードタイプです。各サービスタスクの SRV レコードを作成します。SRV レコードのコンテナ名とコンテナポートの組み合わせをタスク定義から指定する必要があります。

  • サービスの検出サービスの DNS レコードは、VPC 内でクエリを実行できます。これは、次の形式を使用します: <service discovery service name>.<service discovery namespace>

  • サービス名で DNS クエリを実行すると、A レコードはタスクに対応する IP アドレスのセットを返します。SRV レコードは、タスクごとに IP アドレスとポートのセットを返します。

  • 8 つ以下の正常なレコードがある場合、Route 53 はすべての DNS クエリに正常なすべてのレコードを返します。

  • すべてのレコードが異常である場合、Route 53 は DNS クエリに最大 8 つの異常なレコードを返します。

  • サービス検出はロードバランサーの背後にあるサービスに設定できますが、サービス検出トラフィックは必ずタスクにルーティングされ、ロードバランサーにはルーティングされません。

  • サービス検出は Classic Load Balancer の使用をサポートしていません。

  • Amazon ECS サービスのサービス検出により管理されるコンテナレベルのヘルスチェックを使用することをお勧めします。

    • HealthCheckCustomConfig— Amazon ECS はユーザーに代わってヘルスチェックを管理します。Amazon ECS は、コンテナとヘルスチェックの情報、およびタスクの状態を使用して、ヘルスを AWS Cloud Mapで更新します。これは、--health-check-custom-configパラメータを使用してサービス検出サービスの作成時に指定します。詳細については、AWS Cloud Map API リファレンスHealthCheckCustomConfig を参照してください。

  • サービス検出の使用時に作成される AWS Cloud Map リソースは、手動でクリーンアップする必要があります。

  • タスクとインスタンスは、コンテナのヘルスチェックが 値を返すUNHEALTHYまで として登録されます。ヘルスチェックに合格すると、ステータスは に更新されますHEALTHY。コンテナのヘルスチェックが失敗すると、サービス検出インスタンスは登録解除されます。

サービス検出の料金

Amazon ECS サービスディスカバリを使用しているお客様には、Route 53 リソースおよび AWS Cloud Map 検出 API オペレーションの料金が発生します。これには、Route 53 ホストゾーンの作成とサービスレジストリへのクエリのコストが含まれます。詳細については、AWS Cloud Map デベロッパーガイドのの概念およびAWS Cloud Map の料金を参照してください。

Amazon ECS はコンテナレベルのヘルスチェックを実行し、 AWS Cloud Map カスタムヘルスチェック API オペレーションに公開します。現在のところ、これは追加コストなしでお客様に提供されています。パブリックに公開されているタスクにネットワークヘルスチェックを設定する場合、このヘルスチェックに対しては課金されます。