

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

# AWS Cloud Map 服务
<a name="working-with-services"></a>

 AWS Cloud Map 服务是用于注册服务实例的模板，包括服务的服务名称和 DNS 配置（如果适用）。您还可以设置运行状况检查以确定服务中实例的运行状况并筛选出不健康的资源。服务可以代表您的应用程序的一个组件。例如，您可以为处理应用程序付款的资源创建一项服务，为管理用户的资源创建另一项服务。

服务允许您找回一个或多个可用于连接资源的终端节点，从而找到应用程序的资源。资源的位置是使用 DNS 查询或 AWS Cloud Map [https://docs.aws.amazon.com/cloud-map/latest/api/API_DiscoverInstances.html](https://docs.aws.amazon.com/cloud-map/latest/api/API_DiscoverInstances.html)API 操作完成的，具体取决于您配置命名空间的方式。您可以使用 AWS Cloud Map 控制台将实例发现范围限定为服务级别。

您还可以使用 API 将自定义元数据指定为服务级别的属性。`UpdateServiceAttributes`您可以设置服务属性以避免在实例之间重复属性，并且无需对实例属性进行任何更改即可修改这些属性。可以在服务级别指定为属性的信息包括但不限于以下内容：
+ 用于在渐进式部署期间转移流量的端点权重。
+ 服务偏好，例如 API 超时和建议的重试政策。

有关更多信息，请参阅 *AWS Cloud Map API 参考[UpdateServiceAttributes](https://docs.aws.amazon.com/cloud-map/latest/api/API_UpdateServiceAttributes.html)*中的。

以下主题描述了服务的运行状况检查和 DNS 配置，并包括创建、列出、更新和删除服务的说明。

**Topics**
+ [AWS Cloud Map 服务运行状况检查配置](services-health-checks.md)
+ [AWS Cloud Map 服务 DNS 配置](services-route53.md)
+ [为应用程序组件创建 AWS Cloud Map 服务](creating-services.md)
+ [更新 AWS Cloud Map 服务](editing-services.md)
+ [在命名空间中列出 AWS Cloud Map 服务](listing-services.md)
+ [删除 AWS Cloud Map 服务](deleting-services.md)

# AWS Cloud Map 服务运行状况检查配置
<a name="services-health-checks"></a>

Health 检查有助于确定服务实例是否正常。如果您在创建服务期间未配置运行状况检查，则无论实例的运行状况如何，流量都将路由到服务实例。配置运行状况检查时，默认情况下 AWS Cloud Map 会返回运行状况良好的资源。您可以使用 `DiscoverInstances` API 的`[HealthStatus](https://docs.aws.amazon.com/cloud-map/latest/api/API_DiscoverInstances.html#cloudmap-DiscoverInstances-request-HealthStatus)`参数按运行状况筛选资源并获取不健康资源列表。您还可以使用 `[GetInstancesHealthStatus](https://docs.aws.amazon.com/cloud-map/latest/api/API_GetInstancesHealthStatus.html)` API 检索特定服务实例的运行状况。

在创建 AWS Cloud Map 服务时，您可以配置 Route 53 运行状况检查或自定义的第三方运行状况检查。

## Route 53 运行状况检查
<a name="services-health-checks-r53"></a>

如果您为 Amazon Route 53 运行状况检查指定设置，则会在注册实例时 AWS Cloud Map 创建 Route 53 运行状况检查，并在注销实例时删除运行状况检查。

对于公有 DNS 命名空间，请将运行状况检查与注册实例时 AWS Cloud Map 创建的 Route 53 `AAAA` 记录 AWS Cloud Map 相关联。如果您在服务的 DNS 配置中同时指定`A`和记录类型，则 AWS Cloud Map 会创建使用该 IPv4 地址检查资源的运行状况检查。如果 IPv4 地址指定的终端节点运行状况不佳，则 Route 53 会认为`A`和`AAAA`记录均不正常。如果您在服务的 DNS 配置中指定`CNAME`记录类型，则无法配置 Route 53 运行状况检查。

对于您使用 API 调用发现其实例的命名空间， AWS Cloud Map 创建 Route 53 运行状况检查。但是，没有可与运行状况检查关联的 DNS 记录。 AWS Cloud Map 要确定运行状况检查是否正常，您可以使用 Route 53 控制台或 Amazon 配置监控 CloudWatch。有关使用 Route 53 控制台的更多信息，请参阅 *Amazon Route 53 开发者指南*中的[运行状况检查失败时获得通知](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/health-checks-creating-values.html#health-checks-creating-values-alarm)。有关使用的更多信息 CloudWatch，请参阅 *Amazon CloudWatch API 参考[PutMetricAlarm](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_PutMetricAlarm.html)*中的。

**注意**  
您无法为在私有 DNS 命名空间中创建的服务配置 Amazon Route 53 运行状况检查。
每次运行状况检查中的 Route 53 运行状况检查器每 30 秒向终端节点 AWS 区域 发送一次运行状况检查请求。平均来说，您的端点每两秒会收到一次运行状况检查请求。但是，运行状况检测出新不会彼此协调。因此，您有时可能会在一秒钟内看到多个请求，然后在几秒钟内根本没有进行运行状况检查。有关运行状况检查区域的列表，请参阅[区域](https://docs.aws.amazon.com/Route53/latest/APIReference/API_HealthCheckConfig.html#Route53-Type-HealthCheckConfig-Regions)。

有关 Route 53 运行状况检查的费用信息，请参阅 [Route 53 定价](https://aws.amazon.com/route53/pricing/)。

## 自定义运行状况检查
<a name="services-health-check-custom"></a>

如果您在注册实例时配置 AWS Cloud Map 为使用自定义运行状况检查，则必须使用第三方运行状况检查器来评估资源的运行状况。自定义运行状况检查在以下情况下很有用：
+ 您无法使用 Route 53 运行状况检查，因为无法通过 Internet 获得资源。例如，假设您有一个位于 Amazon VPC 中的实例。您可以为此实例使用自定义运行状况检查。但是，要使运行状况检查正常运行，运行状况检查程序也必须与您的实例在同一 VPC 中。
+ 您希望使用第三方运行状况检查程序，而不管您的资源位于何处。

使用自定义运行状况检查时， AWS Cloud Map 不会直接检查给定资源的运行状况。相反，第三方运行状况检查器会检查资源的运行状况，并将状态返回到您的应用程序。然后，您的申请将需要提交将此状态传递给的`[UpdateInstanceCustomHealthStatus](https://docs.aws.amazon.com/cloud-map/latest/api/API_UpdateInstanceCustomHealthStatus.html)`请求 AWS Cloud Map。如果转发的初始状态为`UNHEALTHY`，如果`[UpdateInstanceCustomHealthStatus](https://docs.aws.amazon.com/cloud-map/latest/api/API_UpdateInstanceCustomHealthStatus.html)`在 30 秒内没有其他状态转发状态`HEALTHY`，则确认该资源运行状况不佳。 AWS Cloud Map 停止将流量路由到该资源。

# AWS Cloud Map 服务 DNS 配置
<a name="services-route53"></a>

当您在支持通过 DNS 查询发现实例的命名空间中创建服务时， AWS Cloud Map 会创建 Route 53 DNS 记录。您必须指定适用于 AWS Cloud Map 创建的所有 Route 53 DNS 记录的 Route 53 路由策略和 DNS 记录类型。

## 路由策略
<a name="services-dns-routing-policy"></a>

路由策略确定 Route 53 如何响应用于发现服务实例的 DNS 查询。支持的路由策略及其关联方式 AWS Cloud Map 如下。

**加权路由**  
Route 53 从您使用同一 AWS Cloud Map 服务注册的实例中随机选择的一个 AWS Cloud Map 服务实例返回适用的值。所有记录都具有相同的权重，因此，您无法将更多或更少的流量路由到任何实例。  
例如，假设服务包含针对一条 **A** 记录和一个运行状况检查的配置，并且您使用服务注册 10 个实例。Route 53 使用来自运行正常的实例中的一个随机选定实例的 IP 地址来响应 DNS 查询。如果没有运行正常的实例，Route 53 会像所有实例都运行正常那样响应 DNS 查询。  
如果您没有为服务定义运行状况检查，Route 53 会假定所有实例都运行正常，并为随机选择的一个实例返回适用的值。  
有关更多信息，请参阅 *Amazon Route 53 开发人员指南*中的[加权路由](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/routing-policy.html#routing-policy-weighted)。

**多值应答路由**  
如果您为服务定义了运行状况检查，并且运行状况检查的结果为正常，则 Route 53 将为最多 8 个实例返回适用的值。  
例如，假设服务包含针对一条 **A** 记录和一个运行状况检查的配置。您使用服务注册 10 个实例。Route 53 将使用最多 8 个正常运行的实例的 IP 地址来响应 DNS 查询。如果正常运行的实例少于 8 个，Route 53 将使用所有正常运行的实例的 IP 地址来响应每个 DNS 查询。  
如果您没有为服务定义运行状况检查，Route 53 将假定所有实例都是正常运行的，并为最多 8 个实例返回值。  
有关更多信息，请参阅 *Amazon Route 53 开发人员指南*中的[多值应答路由](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/routing-policy.html#routing-policy-multivalue)。

## 记录类型
<a name="services-dns-record-type"></a>

Route 53 DNS 记录类型决定了 Route 53 在响应用于发现服务实例的 DNS 查询时返回的值的类型。您可以指定的不同 DNS 记录类型以及 Route 53 在响应查询时返回的关联值如下所示。

**A**  
如果您指定此类型，则 Route 53 会以 IPv4 格式（例如 **192.0.2.44**）返回资源的 IP 地址。

**AAAA**  
 如果您指定此类型，则 Route 53 会以 IPv6 格式返回资源的 IP 地址，例如 **2001:0 db 8:85 a 3:0000:00:00:abcd: 0001:2345**。

**别名记录**  
 如果您指定此类型，则 Route 53 会返回资源的域名（例如 www.example.com）。  
+ 要配置 **CNAME** DNS 记录，必须指定**加权路由**策略。
+ 在配置 **CNAME** DNS 记录时，您无法配置 Route 53 运行状况检查。

**SRV**  
如果您指定此类型，Route 53 将返回`SRV`记录的值。**SRV** 记录的值使用以下值：  
`priority weight port service-hostname`  
请考虑以下事项：  
+ `priority` 和 `weight` 的值都设置为 1，且无法更改。
+ 对于`port`， AWS Cloud Map 使用您在注册实例时为**端口** (AWS\$1INSTANCE\$1PORT) 指定的值。
+ `service-hostname` 的值可以是以下值的联接：
  + 您在注册**实例时为服务实例 ID**（实例 ID）指定的值
  + 服务的名称
  + 命名空间的名称

  例如，假设您在注册实例时将 t **est** 指定为实例 ID。服务的名称是 **backend**，命名空间的名称是 **example.com**。 AWS Cloud Map 为 **SRV** 记录中的`service-hostname`属性分配以下值：

  `test.backend.example.com`
如果您在注册实例时指定了值、 IPv6 地址或两者兼而有之，则 AWS Cloud Map 会自动**创建**与 **SRV** 记录`service-hostname`中的值同名的 and/or **A AAAA** 记录。 IPv4 

您可按以下组合指定记录类型：
+ **A**
+ **AAAA**
+ **A** 和 **AAAA**
+ **别名记录**
+ **SRV**

如果您指定 **A** 和 **AAAA** 记录类型，则可以在注册实例时指定 IPv6 IP 地址、IP 地址或两者兼而有之。 IPv4 

# 为应用程序组件创建 AWS Cloud Map 服务
<a name="creating-services"></a>

创建命名空间后，您可以创建服务来表示应用程序中用于特定目的的不同组件。例如，您可以为应用程序中处理付款的资源创建服务。

**注意**  
您不能创建多个可通过 DNS 查询访问的服务，其名称仅因大小写而异（例如示例和示例）。尝试这样做会导致这些服务具有相同的 DNS 名称。如果您使用只能通过 API 调用访问的命名空间，则可以创建名称仅靠大小写来区分的服务。

按照以下步骤使用适用于 Python 的 AWS 管理控制台 AWS CLI、和 SDK 创建服务。

------
#### [ 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. 在**服务名称**中，输入一个描述您在使用此服务时注册的实例的名称。该值用于在 API 调用或 DNS 查询中发现 AWS Cloud Map 服务实例。
**注意**  
如果您 AWS Cloud Map 想在注册实例时创建 **SRV** 记录，并且您使用的系统需要特定 **SRV** 格式（例如 [HAProxy](http://www.haproxy.org/)），请为**服务**名称指定以下内容：  
名称以下划线 (\$1) 开头，例如 **\$1exampleservice**。
例如，名称的*.\$1protocol*结尾为**。 \$1tcp**。
注册实例时， AWS Cloud Map 会创建 S **RV** 记录并通过连接服务名称和命名空间名称来分配名称，例如：  
**\$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. 对于 “**记录类型**”，选择 DNS 记录类型，该类型决定了 Route 53 在响应 DNS 查询时返回的内容 AWS Cloud Map。有关更多信息，请参阅 [记录类型](services-route53.md#services-dns-record-type)。

   1. 对于 **TTL**，请指定一个数值来定义服务级别的生存时间 (TTL) 值（以秒为单位）。TTL 的值决定了 DNS 解析程序在将其他 DNS 查询转发到 Amazon Route 53 以获取更新后的设置之前缓存此记录的信息的时长。

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 或 HTT** **PS** 运行状况检查协议，**请在运行状况检查路径**中提供您希望 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 *开发者指南中的亚马逊 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)`命令创建服务。用您自己的*red*值替换这些值。

  ```
  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()`。用您自己的*red*值替换这些值。有关更多信息，请参阅 [create\$1s](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/servicediscovery/client/create_service.html) ervice。

   ```
   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)。

# 更新 AWS Cloud Map 服务
<a name="editing-services"></a>

根据服务的配置，您可以更新 DNS 解析器的标签、Route 53 运行状况检查失败阈值和 DNS 解析器的生存时间 (TTL)。要更新服务，请执行以下过程。

**注意**  
您无法更新与 HTTP 命名空间关联的服务的设置。

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

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

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

1. 在**命名空间**页面上，选择创建服务的命名空间。

1. 在 “**命名空间：**” *namespace-name* 页面上，选择要编辑的服务，然后选择 “**查看详细信息**”。

1. 在 “**服务：*service-name***” 页面上，选择**编辑**。
**注意**  
**对于仅允许 API 调用以进行实例发现的服务，您不能使用 “编辑” 按钮工作流程来编辑值。**但是，您可以在 “**服务:*service-name***” 页面上添加或删除标签。

1. 在**编辑服务**页面的**服务描述**下，您可以更新之前为该服务设置的任何描述或添加新的描述。您还可以为 DNS 解析器添加标签和更新 **TTL**。

1. 在 **DNS 配置**下，对于 **TTL**，您可以指定更新的时间段（以秒为单位），该时间段决定 DNS 解析器在解析器将另一个 DNS 查询转发到 Amazon Route 53 以获取更新的设置之前，DNS 解析器将此记录的信息缓存多长时间。

1. 如果您设置了 Route 53 运行状况检查，则可以为**失败阈值**指定一个介于 1 到 10 之间的新数字，该数字定义服务实例必须通过或失败才能更改其运行状况的连续次数 Route 53 运行状况检查次数。

1. 选择 “**更新服务**”。

------
#### [ AWS CLI ]
+ 使用`[update-service](https://docs.aws.amazon.com/cli/latest/reference/servicediscovery/update-service.html)`命令更新服务（用您自己的*red*值替换该值）。

  ```
  aws servicediscovery update-service \
      --id  srv-xxxxxxxxxxx \
      --service "Description=new description,DnsConfig={DnsRecords=[{Type=A,TTL=60}]}"
  ```

  输出：

  ```
  {
      "OperationId": "l3pfx7f4ynndrbj3cfq5fm2qy2z37bms-5m6iaoty"
  }
  ```

------
#### [ 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. 使用更新服务`update_service()`（用您自己的*red*值替换该值）。

   ```
   response = client.update_service(
       Id='srv-xxxxxxxxxxx',
       Service={
           'DnsConfig': {
               'DnsRecords': [
                   {
                       'TTL': 300,
                       'Type': 'A',
                   },
               ],
           },
           'Description': "new description",
       }
   )
   ```

   示例响应输出

   ```
   {
       "OperationId": "l3pfx7f4ynndrbj3cfq5fm2qy2z37bms-5m6iaoty"
   }
   ```

------

# 在命名空间中列出 AWS Cloud Map 服务
<a name="listing-services"></a>

要查看在命名空间中创建的服务的列表，请执行以下过程。

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

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

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

1. 选择包含要列出的服务的命名空间的**域名**。您可以在 “服务” 下查看所有**服务的**列表，并在搜索字段中输入服务名称或 ID 以查找特定服务。您可以使用 “ AWS 账户 创建者” 字段识别**创建**服务的用户，使用**资源所有者**字段识别拥有服务的帐户。
**注意**  
如果命名空间是共享命名空间，则**资源所有者**下的 AWS 账户 ID 是创建和共享该命名空间的账户。如果命名空间使用**者创建了**服务，则创建**者下的账户 ID 可能与资源所有者**下的 ID 不同。该账户 IDs 可能与您的账户 ID 不同。有关共享命名空间的更多信息，请参阅。[共享 AWS Cloud Map 命名空间](sharing-namespaces.md)

------
#### [ AWS CLI ]
+ 使用 `[list-services](https://docs.aws.amazon.com/cli/latest/reference/servicediscovery/list-services.html)` 命令列出服务。以下命令使用命名空间 ID 作为筛选器列出命名空间中的所有服务。将 *red* 替换为您自己的值。

  ```
  aws servicediscovery list-services --filters Name=NAMESPACE_ID,Values=ns-1234567890abcdef,Condition=EQ
  ```

------
#### [ 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. 使用 `list_services()` 列出服务。

   ```
   response = client.list_services()
   # If you want to see the response
   print(response)
   ```

   示例响应输出

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

------

# 删除 AWS Cloud Map 服务
<a name="deleting-services"></a>

必须先取消注册已使用服务注册的所有服务实例，然后才能删除服务。有关更多信息，请参阅 [注销 AWS Cloud Map 服务实例](deregistering-instances.md)。

取消注册使用该服务注册的所有实例后，请执行以下步骤删除该服务。

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

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

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

1. 选择包含要删除的服务的命名空间的选项。

1. 在 “**命名空间：*namespace-name***” 页面上，选择要删除的服务的选项。

1. 选择**删除**。

1. 确认您要删除服务。

------
#### [ AWS CLI ]
+ 使用`[delete-service](https://docs.aws.amazon.com/cli/latest/reference/servicediscovery/delete-service.html)`命令删除服务（用您自己的*red*值替换该值）。

  ```
  aws servicediscovery delete-service --id srv-xxxxxx
  ```

------
#### [ 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. 使用删除服务`delete_service()`（用您自己的*red*值替换该值）。

   ```
   response = client.delete_service(
       Id='srv-xxxxxx',
   )
   # If you want to see the response
   print(response)
   ```

   示例响应输出

   ```
   {
       'ResponseMetadata': {
           '...': '...',
       },
   }
   ```

------