

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

# AWS Cloud Map 服務執行個體
<a name="working-with-instances"></a>

服務執行個體會包含如何尋找應用程式資源 (像是 web 伺服器) 的相關資訊。註冊執行個體之後，您可以使用 DNS 查詢或 AWS Cloud Map [DiscoverInstances](https://docs.aws.amazon.com/cloud-map/latest/api/API_DiscoverInstances.html) API 動作來尋找執行個體。您可以註冊的資源包括但不限於下列項目：
+ Amazon EC2 執行個體
+ Amazon DynamoDB 資料表
+ Amazon S3 儲存貯體
+ Amazon Simple Queue Service (Amazon SQS) 佇列
+ 部署在 APIs Amazon API Gateway

您可以指定服務執行個體的屬性值，而用戶端可以使用這些屬性來篩選 AWS Cloud Map 傳回的資源。例如，應用程式可以要求在特定部署階段 (像是 BETA 或 PROD) 的資源。您也可以使用屬性進行版本控制。

下列程序說明如何將應用程式中的資源註冊為服務執行個體、檢視服務中已註冊的執行個體清單、編輯特定執行個體參數，以及取消註冊執行個體。

**Topics**
+ [將資源註冊為 AWS Cloud Map 服務執行個體](registering-instances.md)
+ [列出 AWS Cloud Map 服務執行個體](listing-instances.md)
+ [更新 AWS Cloud Map 服務執行個體](updating-instances.md)
+ [取消註冊 AWS Cloud Map 服務執行個體](deregistering-instances.md)

# 將資源註冊為 AWS Cloud Map 服務執行個體
<a name="registering-instances"></a>

您可以將應用程式的資源註冊為 AWS Cloud Map 服務中的執行個體。例如，假設您已建立`users`針對管理使用者資料的所有應用程式資源呼叫 的服務。然後，您可以註冊用於將使用者資料儲存為此服務中執行個體的 DynamoDB 資料表。

**注意**  
下列功能不適用於 AWS Cloud Map 主控台：  
當您使用主控台註冊服務執行個體時，您無法建立將流量路由到 Elastic Load Balancing (ELB) 負載平衡器的別名記錄。註冊執行個體時，您必須包含 `AWS_ALIAS_DNS_NAME` 屬性。如需詳細資訊，請參閱《 *AWS Cloud Map API 參考*》中的 [RegisterInstance](https://docs.aws.amazon.com/cloud-map/latest/api/API_RegisterInstance.html)。
如果您使用包含自訂運作狀態檢查的服務註冊執行個體，您無法為自訂運作狀態檢查指定初始狀態。自訂運作狀態檢查的初始運作狀態預設是 **Healthy (良好)**。如果您希望初始運作狀態是 **Unhealthy (不良)**，請以程式設計的方式註冊執行個體並包含 `AWS_INIT_HEALTH_STATUS` 屬性。如需詳細資訊，請參閱 *AWS Cloud Map API 參考*中的 [RegisterInstance](https://docs.aws.amazon.com/cloud-map/latest/api/API_RegisterInstance.html)。

若要在服務中註冊執行個體，請遵循下列步驟。

------
#### [ 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. 在**服務：*服務名稱***頁面上，選擇**註冊服務執行個體**。

1. 在**註冊服務執行個體**頁面上，選擇**執行個體類型**。根據命名空間執行個體探索組態，您可以選擇為沒有 IP 地址的資源指定 IP 地址、Amazon EC2 執行個體 ID 或其他識別資訊。
**注意**  
您只能在 HTTP 命名空間中選擇 **EC2 執行個體**。

1. 針對**服務執行個體 ID**，提供與服務執行個體相關聯的識別符。
**注意**  
如果您想要更新現有的執行個體，請提供與您要更新之執行個體相關聯的識別符。然後，使用後續步驟來更新值並重新註冊執行個體。

1. 根據您選擇的**執行個體類型**，執行下列步驟。
**重要**  
當您指定自訂屬性時，無法在金鑰中使用`AWS_`字首 （不區分大小寫）。    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/cloud-map/latest/dg/registering-instances.html)

1. 選擇 **Register service instance (註冊服務執行個體)**。

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

  當您提交`RegisterInstance`請求時：
  + 對於您在 指定的服務中定義的每個 DNS 記錄`ServiceId`，記錄會在與對應命名空間相關聯的託管區域中建立或更新。
  + 如果服務包含 `HealthCheckConfig`，則會根據運作狀態檢查組態中的設定建立運作狀態檢查。
  + 任何運作狀態檢查都會與每個新的或更新的記錄相關聯。

  使用 `[register-instance](https://docs.aws.amazon.com/cli/latest/reference/servicediscovery/register-instance.html)`命令註冊服務執行個體 （使用您自己的值取代*紅色*值）。

  ```
  aws servicediscovery register-instance \
      --service-id srv-xxxxxxxxx \
      --instance-id myservice-xx \
      --attributes=AWS_INSTANCE_IPV4=172.2.1.3,AWS_INSTANCE_PORT=808
  ```

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

1. 如果您尚未`Boto3`安裝 ，您可以`Boto3`[在這裡](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/quickstart.html#installation)找到安裝、設定和使用 的指示。

1. 匯入`Boto3`並使用 `servicediscovery`做為您的服務。

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

1. 

   當您提交`RegisterInstance`請求時：
   + 對於您在 指定的服務中定義的每個 DNS 記錄`ServiceId`，記錄會在與對應命名空間相關聯的託管區域中建立或更新。
   + 如果服務包含 `HealthCheckConfig`，則會根據運作狀態檢查組態中的設定建立運作狀態檢查。
   + 任何運作狀態檢查都會與每個新的或更新的記錄相關聯。

   向 註冊服務執行個體 `register_instance()`（使用您自己的值取代*紅色*值）。

   ```
   response = client.register_instance(
       Attributes={
           'AWS_INSTANCE_IPV4': '172.2.1.3',
           'AWS_INSTANCE_PORT': '808',
       },
       InstanceId='myservice-xx',
       ServiceId='srv-xxxxxxxxx',
   )
   # If you want to see the response
   print(response)
   ```

   回應輸出範例

   ```
   {
       'OperationId': '4yejorelbukcjzpnr6tlmrghsjwpngf4-k95yg2u7',
       'ResponseMetadata': {
           '...': '...',
       },
   }
   ```

------

# 列出 AWS Cloud Map 服務執行個體
<a name="listing-instances"></a>

若要檢視您使用服務註冊的服務執行個體清單，請執行以下程序。

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

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

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

1. 選擇包含您要列出服務執行個體之服務的命名空間名稱。

1. 選擇您用來建立服務執行個體的服務名稱。您會在**服務執行個體下看到執行個體**清單。您可以在搜尋欄位中輸入執行個體 ID，以列出特定執行個體。**Created by** 欄位會顯示 AWS 帳戶 註冊執行個體的 ID。
**注意**  
如果執行個體註冊的命名空間是共用命名空間，則**由 建立**下的 AWS 帳戶 ID 可能與您的帳戶 ID 不同。如需共用命名空間的詳細資訊，請參閱 [共用 AWS Cloud Map 命名空間](sharing-namespaces.md)。

------
#### [ AWS CLI ]
+ 使用 `[list-instances](https://docs.aws.amazon.com/cli/latest/reference/servicediscovery/list-instances.html)`命令列出服務執行個體 （使用您自己的值取代*紅色*值）。

  ```
  aws servicediscovery list-instances --service-id srv-xxxxxxxxx
  ```

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

1. 如果您尚未`Boto3`安裝 ，您可以`Boto3`[在這裡](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/quickstart.html#installation)找到安裝、設定和使用 的指示。

1. 匯入`Boto3`並使用 `servicediscovery`做為您的服務。

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

1. 使用 列出服務執行個體 `list_instances()`（使用您自己的值取代*紅色*值）。

   ```
   response = client.list_instances(
       ServiceId='srv-xxxxxxxxx',
   )
   # If you want to see the response
   print(response)
   ```

   回應輸出範例

   ```
   {
       'Instances': [
           {
               'Attributes': {
                   'AWS_INSTANCE_IPV4': '172.2.1.3',
                   'AWS_INSTANCE_PORT': '808',
               },
               'Id': 'i-xxxxxxxxxxxxxxxxx',
           },
       ],
       'ResponseMetadata': {
           '...': '...',
       },
   }
   ```

------

# 更新 AWS Cloud Map 服務執行個體
<a name="updating-instances"></a>

您可以根據您要更新哪些值，透過下列兩種方式更新服務執行個體：
+ **更新任何值**：如果您想要更新註冊服務執行個體時為服務執行個體指定的任何值，包括自訂屬性，則需要重新註冊服務執行個體並重新指定所有值。遵循 中的步驟[將資源註冊為 AWS Cloud Map 服務執行個體](registering-instances.md)，為服務執行個體 ID 指定現有服務執行個體的**執行個體 ID**。

  或者，您可以使用 [https://docs.aws.amazon.com/cloud-map/latest/api/API_RegisterInstance.html](https://docs.aws.amazon.com/cloud-map/latest/api/API_RegisterInstance.html) API。您可以使用 和 `InstanceId` `ServiceId` 參數指定現有執行個體和服務 ID，並重新指定其他值。
+ **僅更新自訂屬性**：如果您只要更新服務執行個體的自訂屬性，則不需要重新註冊執行個體。您可以僅更新這些值。請參閱 [更新服務執行個體的自訂屬性](#updating-instance-attributes-procedure)。

## 更新服務執行個體的自訂屬性
<a name="updating-instance-attributes-procedure"></a>

**只要更新服務執行個體的自訂屬性**

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

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

1. 在 **Namespaces (命名空間)** 頁面中，選擇包含您原本要用來註冊服務執行個體之服務的命名空間。

1. 在**命名空間：*命名空間名稱***頁面上，選擇您用來註冊服務執行個體的服務。

1. 在 **Service: *service-name* (服務：service-name)** 頁面中，選擇您要更新的服務執行個體名稱。

1. 在 **Custom attributes (自訂屬性)** 區段中，選擇 **Edit (編輯)**。

1. 在 **Edit service instance: *instance-name* (編輯服務執行個體：instance-name)** 頁面上，新增、移除或更新自訂屬性。您可以同時更新現有屬性的索引鍵和值。

1. 選擇 **Update service instance (更新服務執行個體)**。

# 取消註冊 AWS Cloud Map 服務執行個體
<a name="deregistering-instances"></a>

在可以刪除服務前，您必須取消註冊使用該服務註冊的所有服務執行個體。

若要取消註冊服務執行個體，請執行以下程序。

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

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

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

1. 選擇包含您要取消註冊之服務執行個體的命名空間選項。

1. 在**命名空間：*Namespace-name*** 頁面上，選擇您用來註冊服務執行個體的服務。

1. 在**服務：*服務名稱***頁面上，選擇您要取消註冊的服務執行個體。

1. 選擇 **Deregister (取消註冊)**。

1. 確認是否要取消註冊此服務執行個體。

------
#### [ AWS CLI ]
+ 使用 `[deregister-instance](https://docs.aws.amazon.com/cli/latest/reference/servicediscovery/deregister-instance.html)`命令取消註冊服務執行個體 （使用您自己的值取代*紅色*值）。此命令會刪除 Amazon Route 53 DNS 記錄，以及為指定執行個體 AWS Cloud Map 建立的任何運作狀態檢查。

  ```
  aws servicediscovery deregister-instance \
      --service-id srv-xxxxxxxxx \
      --instance-id myservice-53
  ```

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

1. 如果您尚未`Boto3`安裝 ，您可以`Boto3`[在這裡](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/quickstart.html#installation)找到安裝、設定和使用 的指示。

1. 匯入`Boto3`並使用 `servicediscovery`做為您的服務。

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

1. 使用 取消註冊服務執行個體 `deregister-instance()`（使用您自己的值取代*紅色*值）。此命令會刪除 Amazon Route 53 DNS 記錄，以及為指定執行個體 AWS Cloud Map 建立的任何運作狀態檢查。

   ```
   response = client.deregister_instance(
       InstanceId='myservice-53',
       ServiceId='srv-xxxxxxxxx',
   )
   # If you want to see the response
   print(response)
   ```

   回應輸出範例

   ```
   {
       'OperationId': '4yejorelbukcjzpnr6tlmrghsjwpngf4-k98rnaiq',
       'ResponseMetadata': {
           '...': '...',
       },
   }
   ```

------