

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

# アプリケーションサービスをグループ化する AWS Cloud Map 名前空間の作成
<a name="creating-namespaces"></a>

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

## インスタンス検出オプション
<a name="working-with-namespaces-instance-discovery"></a>

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


| 名前空間タイプ | インスタンス検出方法 | 仕組み | 追加情報 | 
| --- | --- | --- | --- | 
| HTTP  | API コール  | アプリケーションのリソースは、 DiscoverInstances API のみを呼び出すことで他のリソースを検出できます。 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/cloud-map/latest/dg/creating-namespaces.html)  | 
| プライベート DNS | VPC 内の API コールと DNS クエリ | プライベート DNS 名前空間を作成すると、 は対応する Amazon Route 53 プライベートホストゾーン AWS Cloud Map を作成します。アプリケーションのリソースは、 `DiscoverInstances` API を呼び出し、 AWS Cloud Map が自動的に作成するプライベート Route 53 ホストゾーンのネームサーバーをクエリすることで、他のリソースを検出できます。 によって作成されたホストゾーン AWS Cloud Map の名前は名前空間と同じで、*service-name*.*namespace-name* 形式の名前を持つ DNS レコードが含まれています。  Route 53 リゾルバーは、プライベートホストゾーンのレコードを使用して、VPC で発生した DNS クエリを解決します。DNS クエリのドメイン名に一致するレコードが、プライベートホストゾーンに含まれていない場合、Route 53 は、`NXDOMAIN` (存在しないドメイン) でクエリに応答します。   |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/cloud-map/latest/dg/creating-namespaces.html)  | 
| [パブリック DNS] | API コールとパブリック DNS クエリ | パブリック DNS 名前空間を作成すると、 は対応する Amazon Route 53 パブリックホストゾーン AWS Cloud Map を作成します。アプリケーションのリソースは、 `DiscoverInstances` API を呼び出し、 AWS Cloud Map が自動的に作成するパブリック Route 53 ホストゾーンのネームサーバーをクエリすることで、他のリソースを検出できます。 パブリックホストゾーンの名前は名前空間と同じで、*service-name*.*namespace-name* 形式の名前を持つ DNS レコードが含まれています。  この場合の名前空間名は、登録したドメイン名である必要があります。   |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/cloud-map/latest/dg/creating-namespaces.html)  | 

## 手順
<a name="create-namespace-steps"></a>

以下の手順に従って、 AWS CLI、 AWS マネジメントコンソール、または SDK for Python を使用して名前空間を作成できます。

------
#### [ AWS マネジメントコンソール ]

1. にサインイン AWS マネジメントコンソール し、[https://console.aws.amazon.com/cloudmap/](https://console.aws.amazon.com/cloudmap/) で AWS Cloud Map コンソールを開きます。

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

1. **名前空間名**には、インスタンスの検出に使用される名前を入力します。
**注記**  
パブリック DNS クエリ用に設定された名前空間は、最上位ドメインで終わる必要があります。例えば、`.com`。
まず名前を Punycode に変換する場合は、国際化ドメイン名 (IDN) を指定します。オンラインコンバーターについては、インターネットで「punycode コンバーター」を検索してください。  
プログラムで名前空間を作成する際、国際化ドメイン名 (IDN) を Punycode に変換することもできます。たとえば、Java を使用する場合は、java.net.IDN ライブラリの `toASCII` メソッドを使って Unicode 値を Punycode に変換できます。

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

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

   選択内容に基づいて、以下の手順を実行します。
   + **VPCs で API コールと DNS クエリ**を選択した場合、**VPC** の場合は、名前空間を関連付ける Virtual Private Cloud (VPC) を選択します。
   + **VPCs で API コールと DNS クエリ**を選択した場合、または **API コールとパブリック DNS クエリ**を選択した場合は、**TTL** に数値を秒単位で指定します。有効期限 (TTL) 値は、DNS リゾルバーが名前空間で作成された Route 53 ホストゾーンの認証開始 (SOA) DNS レコードの情報をキャッシュする期間を決定します。TTL の詳細については、*「Amazon Route 53 デベロッパーガイド*」の[「TTL (秒)](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/resource-record-sets-values-shared.html#rrsets-values-common-ttl)」を参照してください。

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

1. [**名前空間の作成**] を選択します。[ListOperations](https://docs.aws.amazon.com/cloud-map/latest/api/API_ListOperations.html) を使用してオペレーションのステータスを表示できます。詳細については、 *AWS Cloud Map API リファレンス*の[ListOperations](https://docs.aws.amazon.com/cloud-map/latest/api/API_ListOperations.html)」を参照してください。

------
#### [ AWS CLI ]
+ 

  希望するインスタンスディスカバリタイプのコマンドで名前空間を作成します（*red* の値は独自の値に置換):
  + `[create-http-namespace](https://docs.aws.amazon.com/cli/latest/reference/servicediscovery/create-http-namespace.html)` を使用して HTTP 名前空間を作成します。HTTP 名前空間を使用して登録したサービスインスタンスは、`DiscoverInstances` リクエストを使用して検出できますが、DNS を使用して検出することはできません。

    ```
    aws servicediscovery create-http-namespace --name name-of-namespace
    ```
  + DNS に基づいてプライベート名前空間を作成します。これは、`[create-private-dns-namespace](https://docs.aws.amazon.com/cli/latest/reference/servicediscovery/create-private-dns-namespace.html)`を使用して、指定した Amazon VPC 内でのみ表示されます。 リクエストまたは DNS`DiscoverInstances` を使用して、プライベート DNS 名前空間に登録されたインスタンスを検出できます。

    ```
    aws servicediscovery create-private-dns-namespace --name name-of-namespace --vpc vpc-xxxxxxxxx
    ```
  + `[create-public-dns-namespace](https://docs.aws.amazon.com/cli/latest/reference/servicediscovery/create-public-dns-namespace.html)` を使用して DNS に基づいてパブリック名前空間を作成します。これは、インターネットで表示されます。`DiscoverInstances` リクエストまたは DNS を使用して、プライベート DNS 名前空間で登録したインスタンスを検出できます。

    ```
    aws servicediscovery create-public-dns-namespace --name name-of-namespace
    ```

------
#### [ AWS SDK for Python (Boto3) ]

1. まだ`Boto3`がインストールしていない場合は、[[こちら](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/quickstart.html#installation)]のインストール、設定、使用に関する説明を`Boto3`参照してください。

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

   ```
   import boto3
   client = boto3.client('servicediscovery')
   ```

1. 

   希望するインスタンスディスカバリタイプのコマンドで名前空間を作成します（*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': {
             '...': '...',
         },
     }
     ```

------

## 次の手順
<a name="create-namespace-next-steps"></a>

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