

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 為應用程式元件建立 AWS Cloud Map 服務
<a name="creating-services"></a>

建立命名空間後，您可以建立 服務來代表應用程式的不同元件，以滿足特定用途。例如，您可以為應用程式中處理付款的資源建立 服務。

**注意**  
您無法建立多個可由 DNS 查詢存取的服務，其名稱僅因大小寫而異 （例如 EXAMPLE 和 範例）。嘗試這樣做會導致這些服務具有相同的 DNS 名稱。如果您使用只能由 API 呼叫存取的命名空間，則可以建立名稱僅因案例而異的 服務。

請依照下列步驟，使用 AWS 管理主控台 AWS CLI和適用於 Python 的 SDK 建立服務。

------
#### [ AWS 管理主控台 ]

1. 登入 AWS 管理主控台 並開啟位於 https：//[https://console.aws.amazon.com/cloudmap/](https://console.aws.amazon.com/cloudmap/) 的 AWS Cloud Map 主控台。

1. 在導覽窗格中，選擇 **Namespaces (命名空間)**。

1. 在 **Namespaces (命名空間)** 頁面，選擇您要新增服務的命名空間。

1. 在**命名空間：*命名空間名稱***頁面上，選擇**建立服務**。

1. 針對**服務名稱**，輸入描述您使用此服務時註冊之執行個體的名稱。此值用於探索 API 呼叫或 DNS 查詢中的 AWS Cloud Map 服務執行個體。
**注意**  
如果您想要在註冊執行個體時 AWS Cloud Map 建立 **SRV** 記錄，而且您使用的系統需要特定的 **SRV** 格式 （例如 [HAProxy](http://www.haproxy.org/))，請為**服務名稱**指定下列項目：  
以底線 (\$1) 開頭名稱，例如 **\$1exampleservice**。
使用 *.\$1protocol* 結束名稱，例如 **.\$1tcp**。
當您註冊執行個體時， 會 AWS Cloud Map 建立 **SRV** 記錄，並透過串連服務名稱和命名空間名稱來指派名稱，例如：  
**\$1exampleservice.\$1tcp.example.com**

1. （選用） 針對**服務描述**，輸入服務的描述。您在此處輸入的描述會顯示在**服務**頁面和每個服務的詳細資訊頁面上。

1. 如果命名空間支援 DNS 查詢，則在**服務探索組態**下，您可以在服務層級設定可探索性。選擇允許 API 呼叫和 DNS 查詢，或只允許 API 呼叫來探索此服務中的執行個體。
**注意**  
如果您選擇 **API 呼叫**， AWS Cloud Map 不會在您註冊執行個體時建立 SRV 記錄。

   如果您選擇 **API 和 DNS**，請依照下列步驟設定 DNS 記錄。您可以新增或移除 DNS 記錄。

   1. 對於**路由政策**，為註冊執行個體時建立 AWS Cloud Map 的 DNS 記錄選取 Amazon Route 53 路由政策。您可以在**加權路由**和**多值回答路由**之間進行選擇。如需詳細資訊，請參閱[路由政策](services-route53.md#services-dns-routing-policy)。
**注意**  
您無法使用 主控台來設定 AWS Cloud Map 在註冊執行個體時建立 Route 53 別名記錄。如果您想要 AWS Cloud Map 在以程式設計方式註冊執行個體時為 Elastic Load Balancing 負載平衡器建立別名記錄，請選擇**路由政策**的**加權路由**。

   1. 針對**記錄類型**，選擇決定 Route 53 傳回哪些項目以回應 DNS 查詢的 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. 對於**失敗閾值**，請提供介於 1 到 10 之間的數字，以定義服務執行個體必須通過或失敗才能變更其運作狀態的連續 Route 53 運作狀態檢查數目。

   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. （選用） 在**標籤**下，選擇**新增標籤**，然後指定索引鍵和值來標記命名空間。您可以指定一或多個標籤，以新增至您的命名空間。標籤可讓您將 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`安裝 ，您可以`Boto3`[在這裡](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/quickstart.html#installation)找到安裝、設定和使用 的指示。

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 參考*[https://docs.aws.amazon.com/cloud-map/latest/api/API_UpdateServiceAttributes.html](https://docs.aws.amazon.com/cloud-map/latest/api/API_UpdateServiceAttributes.html)》中的 [ServiceAttributes](https://docs.aws.amazon.com/cloud-map/latest/api/API_ServiceAttributes.html) 和 。