

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

# アプリケーションコンポーネントの AWS Cloud Map サービスの作成
<a name="creating-services"></a>

名前空間を作成したら、特定の目的を果たすアプリケーションのさまざまなコンポーネントを表すサービスを作成できます。たとえば、支払いを処理するアプリケーション内のリソースのサービスを作成できます。

**注記**  
DNS クエリによってアクセス可能な複数のサービスを、大文字と小文字だけが異なる名前 (EXAMPLE や例など) で作成することはできません。そうしようとすると、これらのサービスが同じ DNS 名になります。API コールでのみアクセス可能な名前空間を使用する場合は、大文字と小文字によってのみ異なる名前を持つサービスを作成できます。

 AWS マネジメントコンソール、、および SDK for Python を使用してサービスを作成するには AWS CLI、次の手順に従います。

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

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

1. ナビゲーションペインで [**名前空間**] を選択します。

1. [**名前空間**] ページで、サービスを追加する名前空間を選択します。

1. [**名前空間: *namespace-name***] ページで、[**サービスの作成**] を選択します。

1. **サービス名**には、このサービスを使用するときに登録するインスタンスを説明する名前を入力します。値は、API コールまたは DNS クエリで AWS Cloud Map サービスインスタンスを検出するために使用されます。
**注記**  
インスタンスの登録時に **SRV** レコード AWS Cloud Map を作成し、特定の **SRV** 形式 ([HAProxy](http://www.haproxy.org/) など) を必要とするシステムを使用している場合は、**サービス名**に以下を指定します。  
例えば、アンダースコア (\$1) で名前を開始します。例、**\$1exampleservice**。
*.\$1protocol* で名前を終わらせる。例、**.\$1tcp**。
インスタンスを登録すると、 は **SRV** レコード AWS Cloud Map を作成し、サービス名と名前空間名を連結して名前を割り当てます。次に例を示します。  
**\$1exampleservice.\$1tcp.example.com**

1. (オプション) **サービスの説明**に、サービスの説明を入力します。ここで入力した説明は、**サービス**ページと各サービスの詳細ページに表示されます。

1. 名前空間が DNS クエリをサポートしている場合は、**サービス検出設定**で、サービスレベルで検出可能性を設定できます。API コールと DNS クエリの両方を許可するか、このサービス内のインスタンスを検出するための API コールのみを許可するかを選択します。
**注記**  
**API コール**を選択した場合、 AWS Cloud Map はインスタンスの登録時に SRV レコードを作成しません。

   **API と DNS **を選択した場合は、以下の手順に従って DNS レコードを設定します。DNS レコードを追加または削除できます。

   1. **ルーティングポリシー**で、インスタンスの登録時に が作成する DNS レコード AWS Cloud Map の Amazon Route 53 ルーティングポリシーを選択します。**加重ルーティング**と**複数値回答ルーティング**を選択できます。詳細については、「[ルーティングポリシー](services-route53.md#services-dns-routing-policy)」を参照してください。
**注記**  
コンソールを使用して、インスタンスの登録時に Route 53 エイリアスレコードを作成する AWS Cloud Map ように を設定することはできません。プログラムでインスタンスを登録するときに Elastic Load Balancing ロードバランサーのエイリアスレコード AWS Cloud Map を作成する場合は、**ルーティングポリシー**の**加重ルーティング**を選択します。

   1. **レコードタイプ**で、DNS クエリに応答して Route 53 が返す内容を決定する DNS レコードタイプを選択します AWS Cloud Map。詳細については、「[レコードタイプ](services-route53.md#services-dns-record-type)」を参照してください。

   1. **TTL** には、サービスレベルで有効期限 (TTL) 値を秒単位で定義する数値を指定します。TTL の値は、リゾルバーが別の DNS クエリを Amazon Route 53 に転送して、更新された設定を取得するまでに、DNS リゾルバーがこのレコードの情報をキャッシュする期間を決定します。

1. **ヘルスチェック設定**の**ヘルスチェックオプション**で、サービスインスタンスに適用されるヘルスチェックのタイプを選択します。ヘルスチェックを設定しないか、Route 53 ヘルスチェックまたはインスタンスの外部ヘルスチェックのいずれかを選択できます。詳細については、「[AWS Cloud Map サービスヘルスチェック設定](services-health-checks.md)」を参照してください。
**注記**  
Route 53 ヘルスチェックは、パブリック DNS 名前空間のサービスに対してのみ設定できます。

   **Route 53 ヘルスチェック**を選択した場合は、次の情報を入力します。

   1. **Failure しきい値**には、サービスインスタンスがヘルスステータスを変更するために合格または不合格にする連続する Route 53 ヘルスチェックの数を定義する 1～10 の数値を指定します。

   1. **ヘルスチェックプロトコル**では、Route 53 がサービスインスタンスの状態をチェックするために使用する方法を選択します。

   1. **HTTP** または **HTTPS** ヘルスチェックプロトコルを選択した場合、**ヘルスチェックパス**に、ヘルスチェックの実行時に Amazon Route 53 がリクエストするパスを指定します。パスには、ファイル `/docs/route53-health-check.html` などの任意の値を指定できます。リソースが正常である場合、2xx または 3xx 形式の HTTP ステータスコードが返されます。クエリ文字列パラメータ (`/welcome.html?language=jp&login=y` など) を含めることもできます。 AWS Cloud Map コンソールでは、先行するスラッシュ (/) 文字が自動的に追加されます。

   Route 53 ヘルスチェックの詳細については、[Amazon Route 53 デベロッパーガイドの「Amazon Route 53 がヘルスチェックが正常かどうかを判断する方法](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/dns-failover-determining-health-of-endpoints.html)」を参照してください。 * *

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

1. [**Create service (サービスの作成)**] を選択します。

------
#### [ AWS CLI ]
+ `[create-service](https://docs.aws.amazon.com/cli/latest/reference/servicediscovery/create-service.html)` コマンドを使用してサービスを作成します。*レッド* の値を自分の値に置き換えてください。

  ```
  aws servicediscovery create-service \
      --name service-name \
      --namespace-id  ns-xxxxxxxxxxx \
      --dns-config "NamespaceId=ns-xxxxxxxxxxx,RoutingPolicy=MULTIVALUE,DnsRecords=[{Type=A,TTL=60}]"
  ```

  出力:

  ```
  {
          "Service": {
          "Id": "srv-xxxxxxxxxxx",
          "Arn": "arn:aws:servicediscovery:us-west-2:123456789012:service/srv-xxxxxxxxxxx",
          "Name": "service-name",
          "NamespaceId": "ns-xxxxxxxxxxx",
          "DnsConfig": {
              "NamespaceId": "ns-xxxxxxxxxxx",
              "RoutingPolicy": "MULTIVALUE",
              "DnsRecords": [
                  {
                      "Type": "A",
                      "TTL": 60
                  }
              ]
          },
          "CreateDate": 1587081768.334,
          "CreatorRequestId": "567c1193-6b00-4308-bd57-ad38a8822d25"
      }
  }
  ```

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

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

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

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

1. を使用してサービスを作成します`create_service()`。*レッド* の値を自分の値に置き換えてください。詳細については、[「create\$1service](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/servicediscovery/client/create_service.html)」を参照してください。

   ```
   response = client.create_service(
       DnsConfig={
           'DnsRecords': [
               {
                   'TTL': 60,
                   'Type': 'A',
               },
           ],
           'NamespaceId': 'ns-xxxxxxxxxxx',
           'RoutingPolicy': 'MULTIVALUE',
       },
       Name='service-name',
       NamespaceId='ns-xxxxxxxxxxx',
   )
   ```

   レスポンスオブジェクトの例

   ```
   {
       'Service': {
           'Arn': 'arn:aws:servicediscovery:us-west-2:123456789012:service/srv-xxxxxxxxxxx',
           'CreateDate': 1587081768.334,
           'DnsConfig': {
               'DnsRecords': [
                   {
                       'TTL': 60,
                       'Type': 'A',
                   },
               ],
               'NamespaceId': 'ns-xxxxxxxxxxx',
               'RoutingPolicy': 'MULTIVALUE',
           },
           'Id': 'srv-xxxxxxxxxxx',
           'Name': 'service-name',
           'NamespaceId': 'ns-xxxxxxxxxxx',
       },
       'ResponseMetadata': {
           '...': '...',
       },
   }
   ```

------

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

サービスを作成したら、アプリケーションリソースを、アプリケーションがリソースを見つける方法に関する情報を含むサービスインスタンスとして登録できます。 AWS Cloud Map サービスインスタンスの登録の詳細については、「」を参照してください[リソースを AWS Cloud Map サービスインスタンスとして登録する](registering-instances.md)。

サービスの作成後に、エンドポイントの重み、API タイムアウト、再試行ポリシーなどのカスタムメタデータをサービス属性として指定することもできます。詳細については、 *AWS Cloud Map API リファレンス*の[ServiceAttributes](https://docs.aws.amazon.com/cloud-map/latest/api/API_ServiceAttributes.html)」および[https://docs.aws.amazon.com/cloud-map/latest/api/API_UpdateServiceAttributes.html](https://docs.aws.amazon.com/cloud-map/latest/api/API_UpdateServiceAttributes.html)「」を参照してください。