

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

# DNS クエリと API コールで AWS Cloud Map サービス検出を使用する方法について説明します。
<a name="tutorial-private-namespace"></a>

次のチュートリアルでは、2 つのバックエンドサービスを使用したマイクロサービスアーキテクチャをシミュレートします。最初のサービスは、DNS クエリを使用して検出できます。2 番目のサービスは API を使用して AWS Cloud Map のみ検出できます。

**注記**  
ドメイン名や IP アドレスなどのリソースの詳細は、シミュレーションのみを目的としています。インターネット経由で解決することはできません。

このチュートリアルのend-to-end AWS CLI のバージョンについては、「」を参照してください[を使用して DNS クエリと API コールで AWS Cloud Map サービス検出を使用する方法について説明します。 AWS CLI](tutorial-private-namespace-cli.md)。

## 前提条件
<a name="getting-started-prerequisites"></a>

チュートリアルを正常に完了するには、次の前提条件を満たす必要があります。
+ 開始する前に、「[を使用するように をセットアップする AWS Cloud Map](setting-up-cloud-map.md)」のステップを完了します。
+ をまだインストールしていない場合は AWS Command Line Interface、[「 の最新バージョンのインストールまたは更新 AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)」の手順に従ってインストールします。

  このチュートリアルでは、コマンドを実行するためのコマンドラインターミナルまたはシェルが必要です。Linux および macOS では、任意のシェルとパッケージマネージャーを使用してください。
**注記**  
Windows では、Lambda でよく使用される一部の Bash CLI コマンド (`zip` など) が、オペレーティングシステムの組み込みターミナルでサポートされていません。Ubuntu および Bash の Windows 統合バージョンを取得するには、[Windows Subsystem for Linux をインストール](https://learn.microsoft.com/en-us/windows/wsl/install)します。
+ このチュートリアルでは、`dig`DNS ルックアップユーティリティコマンドを使用するローカル環境が必要です。

## ステップ 1: AWS Cloud Map 名前空間を作成する
<a name="tutorial-microservices-step1"></a>

このステップでは、パブリック AWS Cloud Map 名前空間を作成します。 は、同じ名前でユーザーに代わって Route 53 ホストゾーン AWS Cloud Map を作成します。これにより、パブリック DNS レコードまたは AWS Cloud Map API コールを使用して、この名前空間で作成されたサービスインスタンスを検出できます。

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

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

1. **名前空間名**には、 を指定します`cloudmap-tutorial.com`。
**注記**  
これを本番環境で使用する場合は、所有またはアクセス権のあるドメインの名前を指定する必要があります。ただし、このチュートリアルでは、実際に使用されているドメインである必要はありません。

1. (オプション) **名前空間の説明**に、名前空間を使用する対象の説明を指定します。

1. **インスタンス検出では**、**API コールとパブリック DNS クエリ**を選択します。

1. 残りのデフォルト値のままにして、**名前空間の作成**を選択します。

## ステップ 2: AWS Cloud Map サービスを作成する
<a name="tutorial-microservices-step2"></a>

このステップでは、2 つのサービスを作成します。最初のサービスは、パブリック DNS コールと API コールを使用して検出できます。2 番目のサービスは API コールを使用してのみ検出できます。

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

1. 左側のナビゲーションペインで、**名前空間**を選択して、作成した名前空間を一覧表示します。

1. 名前空間のリストから`cloudmap-tutorial.com`名前空間を選択し、**詳細の表示**を選択します。

1. **「サービス**」セクションで**「サービスの作成**」を選択し、以下を実行して最初のサービスを作成します。

   1. **[サービス名]** に `public-service` と入力します。サービス名は、 が AWS Cloud Map 作成する DNS レコードに適用されます。使用される形式は です`<service-name>.<namespace-name>`。

   1. **サービス検出設定**で、**API と DNS **を選択します。

   1. **DNS 設定**セクションの**ルーティングポリシー**で、**複数値回答ルーティング**を選択します。
**注記**  
選択すると、コンソールはこれを **MULTIVALUE** に変換します。使用可能なルーティングオプションの詳細については、*Route 53 デベロッパーガイドの*[「ルーティングポリシーの選択](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/routing-policy.html)」を参照してください。

   1. 残りのデフォルト値のままにして、名前空間の詳細ページに戻る**サービスの作成**を選択します。

1. **「サービス**」セクションで**「サービスの作成**」を選択し、以下を実行して 2 番目のサービスを作成します。

   1. **[サービス名]** に `backend-service` と入力します。

   1. Service **Discovery Configuration** では、**API のみ**を選択します。

   1. 残りのデフォルト値のままにして、**サービスの作成**を選択します。

## ステップ 3: AWS Cloud Map サービスインスタンスを登録する
<a name="tutorial-microservices-step3"></a>

このステップでは、名前空間内のサービスごとに 1 つずつ、2 つのサービスインスタンスを作成します。

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

1. 名前空間のリストから、ステップ 1 で作成した名前空間を選択し、**詳細の表示**を選択します。

1. 名前空間の詳細ページで、サービスのリストから`public-service`サービスを選択し、**詳細の表示**を選択します。

1. **「サービスインスタンス**」セクションで**「サービスインスタンスの登録**」を選択し、以下を実行して最初のサービスインスタンスを作成します。

   1. **サービスインスタンス ID** には、 を指定します`first`。

   1. **IPv4 アドレス**には、 を指定します`192.168.2.1`。

   1. 残りのデフォルト値のままにして、**サービスインスタンスの登録**を選択します。

1. ページの上部にあるパンくずリストを使用して、**cloudmap-tutorial.com** を選択して名前空間の詳細ページに戻ります。

1. 名前空間の詳細ページで、サービスのリストから**バックエンドサービス**を選択し、**詳細の表示**を選択します。

1. **「サービスインスタンス**」セクションで**「サービスインスタンスの登録**」を選択し、以下を実行して 2 番目のサービスインスタンスを作成します。

   1. **サービスインスタンス ID** で、 を指定`second`して、これが 2 番目のサービスインスタンスであることを示します。

   1. **インスタンスタイプ**で、**別のリソースの識別情報**を選択します。

   1. **カスタム属性**の場合は、 をキー`service-name`として、 を値`backend`としてキーと値のペアを追加します。

   1. [**サービスインスタンスの登録**] を選択します。

## ステップ 4: AWS Cloud Map サービスインスタンスを検出する
<a name="tutorial-microservices-step4"></a>

 AWS Cloud Map 名前空間、サービス、サービスインスタンスが作成されたら、インスタンスを検出することで、すべてが機能していることを確認できます。`dig` コマンドを使用してパブリック DNS 設定を確認し、 AWS Cloud Map API を使用してバックエンドサービスを確認します。`dig` コマンドの詳細については、[「dig - DNS lookup utility](https://downloads.isc.org/isc/bind9/cur/9.19/doc/arm/html/manpages.html#dig-dns-lookup-utility)」を参照してください。

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

1. 左のナビゲーションで、[**Hosted zones**] (ホストゾーン) を選択します。

1. **cloudmap-tutorial.com** ホストゾーンを選択します。これにより、ホストゾーンの詳細が別のペインに表示されます。ホストゾーンに関連付けられた**ネームサーバー**をメモしておきます。次のステップで使用します。

1. dig コマンドとホストゾーンの Route 53 ネームサーバーのいずれかを使用して、サービスインスタンスの DNS レコードをクエリします。

   ```
   dig @hosted-zone-nameserver public-service.cloudmap-tutorial.com
   ```

   出力`ANSWER SECTION`の には、`public-service`サービスに関連付けられた IPv4 アドレスが表示されます。

   ```
   ;; ANSWER SECTION:
   public-service.cloudmap-tutorial.com. 300 IN A	192.168.2.1
   ```

1. を使用して AWS CLI、2 番目のサービスインスタンスの属性をクエリします。

   ```
   aws servicediscovery discover-instances --namespace-name cloudmap-tutorial.com --service-name backend-service --region region
   ```

   出力には、サービスに関連付けられた属性がキーと値のペアとして表示されます。

   ```
   {
       "Instances": [
           {
               "InstanceId": "second",
               "NamespaceName": "cloudmap-tutorial.com",
               "ServiceName": "backend-service",
               "HealthStatus": "UNKNOWN",
               "Attributes": {
                   "service-name": "backend"
               }
           }
       ],
       "InstancesRevision": 71462688285136850
   }
   ```

## ステップ 5: リソースをクリーンアップする
<a name="tutorial-microservices-step5"></a>

チュートリアルを完了したら、リソースを削除できます。 AWS Cloud Map は、逆の順序でクリーンアップし、サービスインスタンスを最初に、次にサービス、最後に 名前空間をクリーンアップする必要があります。 AWS Cloud Map は、これらのステップを実行すると、ユーザーに代わって Route 53 リソースをクリーンアップします。

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

1. 名前空間のリストから、`cloudmap-tutorial.com`名前空間を選択し、**詳細の表示**を選択します。

1. 名前空間の詳細ページで、サービスのリストから`public-service`サービスを選択し、**詳細の表示**を選択します。

1. **サービスインスタンス**セクションで、`first`インスタンスを選択し、**登録解除**を選択します。

1. ページの上部にあるパンくずリストを使用して、**cloudmap-tutorial.com** を選択して名前空間の詳細ページに戻ります。

1. 名前空間の詳細ページで、サービスのリストから**パブリックサービス**を選択し、**削除**を選択します。

1. に対してステップ 3～6 を繰り返します`backend-service`。

1. 左側のナビゲーションで、**名前空間**を選択します。

1. `cloudmap-tutorial.com` 名前空間を選択し、**削除**を選択します。
**注記**  
はユーザーに代わって Route 53 リソースを AWS Cloud Map クリーンアップしますが、Route 53 コンソールに移動して、`cloudmap-tutorial.com`ホストゾーンが削除されたことを確認できます。