

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 将资源注册为 AWS Cloud Map 服务实例
<a name="registering-instances"></a>

您可以将应用程序的资源注册为 AWS Cloud Map 服务中的实例。例如，假设您已`users`为管理用户数据的所有应用程序资源创建了一个名为的服务。然后，您可以将用于存储用户数据的 DynamoDB 表注册为该服务的实例。

**注意**  
 AWS Cloud Map 控制台上不提供以下功能：  
在使用控制台注册服务实例时，您无法创建将流量路由到弹性负载均衡（ELB）负载均衡器的别名记录。在注册实例时，您必须包含 `AWS_ALIAS_DNS_NAME` 属性。有关更多信息，请参阅《AWS Cloud Map API Reference》**中的 [RegisterInstance](https://docs.aws.amazon.com/cloud-map/latest/api/API_RegisterInstance.html)。
如果您使用包含自定义运行状况检查的服务注册实例，则无法为自定义运行状况检查指定初始状态。默认情况下，自定义运行状况检查的初始状态为 **Healthy (正常)**。如果您希望初始运行状况为 **Unhealthy (不正常)**，请以编程方式注册实例并包含 `AWS_INIT_HEALTH_STATUS` 属性。有关更多信息，请参阅《AWS Cloud Map API Reference》**中的 [RegisterInstance](https://docs.aws.amazon.com/cloud-map/latest/api/API_RegisterInstance.html)。

要在服务中注册实例，请按照以下步骤操作。

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

1. 登录 AWS 管理控制台 并打开 AWS Cloud Map 控制台，网址为[https://console.aws.amazon.com/cloudmap/](https://console.aws.amazon.com/cloudmap/)。

1. 在导航窗格中，选择**命名空间**。

1. 在 **Namespaces (命名空间)** 页面上，选择包含要用作服务实例注册模板的服务。

1. 在 “**命名空间：{{namespace-name}}**” 页面上，选择要使用的服务。

1. 在**服务：{{service-name}}**页面上，选择**注册服务实例**。

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_cn/cloud-map/latest/dg/registering-instances.html)

1. 选择 **Register service instance (注册服务实例)**。

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

  当您提交 `RegisterInstance` 请求时：
  + 对于您在 `ServiceId` 指定的服务中定义的每个 DNS 记录，都会在与相应命名空间关联的托管区中创建或更新一条记录。
  + 如果服务包括 `HealthCheckConfig`，则根据运行状况检查配置中的设置创建运行状况检查。
  + 任何运行状况检查都与每条新的或更新的记录相关联。

  使用`[register-instance](https://docs.aws.amazon.com/cli/latest/reference/servicediscovery/register-instance.html)`命令注册服务实例（将{{red}}值替换为自己的值）。

  ```
  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`，则可以在[此处](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/quickstart.html#installation)找到安装、配置和使用`Boto3`的说明。

1. 导入 `Boto3` 并将 `servicediscovery` 用作您的服务。

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

1. 

   当您提交 `RegisterInstance` 请求时：
   + 对于您在 `ServiceId` 指定的服务中定义的每个 DNS 记录，都会在与相应命名空间关联的托管区中创建或更新一条记录。
   + 如果服务包括 `HealthCheckConfig`，则根据运行状况检查配置中的设置创建运行状况检查。
   + 任何运行状况检查都与每条新的或更新的记录相关联。

   向注册服务实例`register_instance()`（将{{red}}值替换为您自己的值）。

   ```
   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': {
           '...': '...',
       },
   }
   ```

------