アプリケーションサービスをグループ化する AWS Cloud Map 名前空間の作成 - AWS Cloud Map

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

アプリケーションサービスをグループ化する AWS Cloud Map 名前空間の作成

名前空間を作成して、API コールまたは DNS クエリを介してアプリケーションリソースを検出できるわかりやすい名前でアプリケーションのサービスをグループ化できます。

インスタンス検出オプション

次の表は、 のさまざまなインスタンス検出オプション AWS Cloud Map と、アプリケーションのサービスと設定に応じて作成できる対応する名前空間タイプをまとめたものです。

名前空間タイプ インスタンス検出方法 仕組み 追加情報
HTTP API コール アプリケーションのリソースは、 DiscoverInstances API のみを呼び出すことで他のリソースを検出できます。
プライベート DNS VPC での API コールと DNS クエリ

アプリケーションのリソースは、 DiscoverInstances API を呼び出し、 AWS Cloud Map が自動的に作成するプライベート Route 53 ホストゾーンのネームサーバーをクエリすることで、他のリソースを検出できます。

によって作成されたホストゾーンの名前 AWS Cloud Map は名前空間と同じで、service-name.namespace-name という形式の名前の DNS レコードが含まれています。

注記

Route 53 リゾルバーは、プライベートホストゾーンのレコードを使用して、VPC で発生した DNS クエリを解決します。DNS クエリのドメイン名に一致するレコードが、プライベートホストゾーンに含まれていない場合、Route 53 は、NXDOMAIN (存在しないドメイン) でクエリに応答します。

パブリック DNS API コールとパブリック DNS クエリ

アプリケーションのリソースは、 DiscoverInstances API を呼び出し、 AWS Cloud Map が自動的に作成するパブリック Route 53 ホストゾーンのネームサーバーをクエリすることで、他のリソースを検出できます。

パブリックホストゾーンの名前は名前空間と同じで、service-name.namespace-name という形式の名前の DNS レコードが含まれています。

注記

この場合の名前空間名は、登録したドメイン名である必要があります。

手順

AWS CLI、、または SDK for Python を使用して名前空間を作成するには AWS Management Console、次の手順に従います。

AWS Management Console
  1. にサインイン AWS Management Console し、https://console.aws.amazon.com/cloudmap/ で AWS Cloud Map コンソールを開きます。

  2. [名前空間の作成] を選択します。

  3. 名前空間名 に、インスタンスの検出に使用される名前を入力します。

    注記
    • パブリック DNS クエリ用に設定された名前空間は、最上位ドメインで終わる必要があります。例えば .com です。

    • まず名前を Punycode に変換する場合は、国際化ドメイン名 (IDN) を指定します。オンラインコンバーターについては、インターネットで「punycode コンバーター」を検索してください。

      プログラムで名前空間を作成する際、国際化ドメイン名 (IDN) を Punycode に変換することもできます。たとえば、Java を使用する場合は、java.net.IDN ライブラリの toASCII メソッドを使って Unicode 値を Punycode に変換できます。

  4. (オプション) 名前空間の説明 に、名前空間ページと名前空間情報 の下に表示される名前空間に関する情報を入力します。この情報を使用して、名前空間を簡単に識別できます。

  5. インスタンス検出 では、API コール VPCs 内の API コールと DNS クエリAPI コールとパブリック DNS クエリのいずれかを選択して、それぞれ HTTP、プライベート DNS、またはパブリック DNS 名前空間を作成できます。詳細については、「インスタンス検出オプション」を参照してください。

    選択内容に基づいて、以下のステップに従います。

    • VPCs で API コールと DNS クエリを選択した場合、VPC では、名前空間を関連付ける仮想プライベートクラウド (VPC) を選択します。

    • VPCs の API コールと DNS クエリ、または API コールとパブリック DNS クエリを選択した場合は、TTL に数値を秒単位で指定します。有効期限 (TTL) 値は、名前空間で作成された Route 53 ホストゾーンの認証開始 (SOA) DNS レコードの情報を DNS リゾルバーがキャッシュする時間を決定します。TTL の詳細については、「Amazon Route 53 デベロッパーガイド」の「TTL (秒)」を参照してください。

  6. (オプション) タグ タグを追加 を選択し、名前空間にタグを付けるキーと値を指定します。1 つ以上のタグを指定して、名前空間に追加することができます。タグを使用すると、 AWS リソースをより簡単に管理できるようにリソースを分類できます。詳細については、「AWS Cloud Map リソースのタグ付け」を参照してください。

  7. [名前空間の作成] を選択します。オペレーションのステータスは、 を使用して表示できますListOperations。詳細については、 API リファレンスListOperationsの「」を参照してください。 AWS Cloud Map

AWS CLI
  • 希望するインスタンスディスカバリタイプのコマンドで名前空間を作成します(red の値は独自の値に置換):

    • create-http-namespace を使用して HTTP 名前空間を作成します。HTTP 名前空間を使用して登録したサービスインスタンスは、DiscoverInstances リクエストを使用して検出できますが、DNS を使用して検出することはできません。

      aws servicediscovery create-http-namespace --name name-of-namespace
    • DNS に基づいてプライベート名前空間を作成します。これは、create-private-dns-namespaceを使用して、指定した Amazon VPC 内でのみ表示されます。 リクエストまたは DNSDiscoverInstances を使用して、プライベート DNS 名前空間に登録されたインスタンスを検出できます。

      aws servicediscovery create-private-dns-namespace --name name-of-namespace --vpc vpc-xxxxxxxxx
    • create-public-dns-namespace を使用して DNS に基づいてパブリック名前空間を作成します。これは、インターネットで表示されます。DiscoverInstances リクエストまたは DNS を使用して、プライベート DNS 名前空間で登録したインスタンスを検出できます。

      aws servicediscovery create-public-dns-namespace --name name-of-namespace
AWS SDK for Python (Boto3)
  1. まだBoto3がインストールしていない場合は、[こちら]のインストール、設定、使用に関する説明をBoto3参照してください。

  2. Boto3をインポートしてサービスとしてservicediscoveryを使用してください。

    import boto3 client = boto3.client('servicediscovery')
  3. 希望するインスタンスディスカバリタイプのコマンドで名前空間を作成します(red の値は独自の値に置換):

    • create_http_namespace() を使用して HTTP 名前空間を作成します。HTTP 名前空間を使用して登録したサービスインスタンスは、discover_instances() を使用して検出できますが、DNS を使用して検出することはできません。

      response = client.create_http_namespace( Name='name-of-namespace', ) # If you want to see the response print(response)
    • DNS に基づいてプライベート名前空間を作成します。これは、create_private_dns_namespace()を使用して、指定した Amazon VPC 内でのみ表示されます。discover_instances()または DNS を使用して、プライベート DNS 名前空間に登録されたインスタンスを検出できます。

      response = client.create_private_dns_namespace( Name='name-of-namespace', Vpc='vpc-1c56417b', ) # If you want to see the response print(response)
    • create_public_dns_namespace() を使用して DNS に基づいてパブリック名前空間を作成します。これは、インターネットで表示されます。discover_instances() リクエストまたは DNS を使用して、プライベート DNS 名前空間で登録したインスタンスを検出できます。

      response = client.create_public_dns_namespace( Name='name-of-namespace', ) # If you want to see the response print(response)
    • レスポンスオブジェクトの例

      { 'OperationId': 'gv4g5meo7ndmeh4fqskygvk23d2fijwa-k9302yzd', 'ResponseMetadata': { '...': '...', }, }

次のステップ

名前空間を作成したら、名前空間にサービスを作成して、アプリケーション内の特定の目的にまとめて対応するアプリケーションリソースをグループ化できます。サービスは、アプリケーションリソースをインスタンスとして登録するためのテンプレートとして機能します。 AWS Cloud Map サービスの作成の詳細については、「」を参照してくださいアプリケーションコンポーネントの AWS Cloud Map サービスの作成