本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
了解如何在 DNS 查询和 API 调用中使用 Amazon Cloud Map 服务发现
以下教程模拟了包含两个后端服务的微服务架构。使用 DNS 查询可以发现第一个服务。仅使用 Amazon Cloud Map API 才能发现第二项服务。
注意
资源详细信息(例如域名和 IP 地址)仅用于模拟目的。它们无法通过互联网解决。
有关本教程的 end-to-end Amazon CLI 版本,请参阅了解如何将 Amazon Cloud Map 服务发现与 DNS 查询和 API 调用配合使用 Amazon CLI。
先决条件
要成功完成本教程,必须满足以下先决条件。
-  在开始之前,请完成 设置为使用 Amazon Cloud Map 中的步骤。 
-  如果您尚未安装 Amazon Command Line Interface,请按照安装或更新最新版本中的步骤 Amazon CLI进行安装。 本教程需要命令行终端或 Shell 来运行命令。在 Linux 和 macOS 中,可使用您首选的 Shell 和程序包管理器。 注意在 Windows 中,操作系统的内置终端不支持您经常与 Lambda 一起使用的某些 Bash CLI 命令(例如 zip)。安装 Windows Subsystem for Linux,获取 Ubuntu 和 Bash 与 Windows 集成的版本。 
- 本教程要求使用带有 - digDNS 查找实用程序命令的本地环境。
步骤 1:创建 Amazon Cloud Map 命名空间
在此步骤中,您将创建一个公共 Amazon Cloud Map 命名空间。 Amazon Cloud Map 代表您创建同名的 Route 53 托管区域。这使您能够使用公有 DNS 记录或使用 Amazon Cloud Map API 调用来发现在此命名空间中创建的服务实例。
- 登录 Amazon Web Services Management Console 并打开 Amazon Cloud Map 控制台,网址为https://console.aws.amazon.com/cloudmap/ - 。 
- 
    选择 Create namespace (创建命名空间)。 
- 
    在 “命名空间名称” 中,指定 cloudmap-tutorial.com。注意如果你打算在生产环境中使用它,你需要确保你指定了你拥有或有权访问的域的名称。但是就本教程而言,它没有必要成为正在使用的实际域。 
- 
    (可选)在命名空间描述中,为你打算使用命名空间的内容指定描述。 
- 
    对于实例发现,请选择 API 调用和公有 DNS 查询。 
- 
    保留其余的默认值,然后选择创建命名空间。 
步骤 2:创建 Amazon Cloud Map 服务
在此步骤中,您将创建两个服务。使用公共 DNS 和 API 调用可以发现第一项服务。仅使用 API 调用才能发现第二项服务。
- 登录 Amazon Web Services Management Console 并打开 Amazon Cloud Map 控制台,网址为https://console.aws.amazon.com/cloudmap/ - 。 
- 
    在左侧导航窗格中,选择命名空间以列出您创建的命名空间。 
- 
    从命名空间列表中,选择 cloudmap-tutorial.com命名空间并选择查看详细信息。
- 
    在 “服务” 部分中,选择创建服务,然后执行以下操作来创建第一个服务。 - 
      对于服务名称,输入 public-service。服务名称将应用于 Amazon Cloud Map 创建的 DNS 记录。使用的格式是<service-name>.<namespace-name>
- 
      对于服务发现配置,请选择 API 和 DNS。 
- 
      在 DNS 配置部分的路由策略中,选择多值应答路由。 注意选择后,控制台会将其转换为 “多值”。有关可用路由选项的更多信息,请参阅《R oute 53 开发人员指南》中的选择路由策略。 
- 
      保留其余的默认值,然后选择 C reate servic e,这将返回到命名空间详细信息页面。 
 
- 
      
- 
    在 “服务” 部分中,选择创建服务,然后执行以下操作来创建第二个服务。 - 
      对于服务名称,输入 backend-service。
- 
      对于服务发现配置,请仅选择 API。 
- 
      保留其余的默认值,然后选择创建服务。 
 
- 
      
步骤 3:注册 Amazon Cloud Map 服务实例
在此步骤中,您将创建两个服务实例,每个服务对应一个命名空间中的服务。
- 登录 Amazon Web Services Management Console 并打开 Amazon Cloud Map 控制台,网址为https://console.aws.amazon.com/cloudmap/ - 。 
- 
    从命名空间列表中,选择您在步骤 1 中创建的命名空间,然后选择查看详细信息。 
- 
    在命名空间详细信息页面上,从服务列表中选择 public-service服务并选择查看详细信息。
- 
    在服务实例部分,选择注册服务实例,然后执行以下操作来创建第一个服务实例。 - 
      对于服务实例 ID,请指定 first。
- 
      对于IPv4 地址,请指定 192.168.2.1。
- 
      保留其余的默认值,然后选择注册服务实例。 
 
- 
      
- 
    使用页面顶部的痕迹,选择 cloudmap-tutorial.com 以导航回命名空间详细信息页面。 
- 
    在命名空间详细信息页面上,从服务列表中选择后端服务并选择查看详细信息。 
- 
    在服务实例部分,选择注册服务实例,然后执行以下操作来创建第二个服务实例。 - 
      在服务实例 ID 中,指定 second以表示这是第二个服务实例。
- 
      对于实例类型,选择其他资源的识别信息。 
- 
      对于自定义属性,添加一个键值对, service-name作为键,backend作为值。
- 
      选择 Register service instance (注册服务实例)。 
 
- 
      
步骤 4:发现 Amazon Cloud Map 服务实例
现在, Amazon Cloud Map 命名空间、服务和服务实例已创建完毕,您可以通过发现实例来验证一切是否正常。使用dig命令验证公有 DNS 设置,使用 Amazon Cloud Map API 验证后端服务。有关该dig命令的更多信息,请参阅 dig-DNS 查找实用程序
- 登录 Amazon Web Services Management Console 并打开 Route 53 控制台,网址为https://console.aws.amazon.com/route53/ - 。 
- 
    在左侧导航中,选择 Hosted zones(托管区)。 
- 
    选择 cloudmap-tut orial.com 托管区域。这将在单独的窗格中显示托管区域的详细信息。请记下与您的托管区域关联的名称服务器,因为我们将在下一步中使用这些服务器。 
- 
    使用 dig 命令和托管区域的 Route 53 域名服务器之一,查询您的服务实例的 DNS 记录。 dig @hosted-zone-nameserverpublic-service.cloudmap-tutorial.com输出 ANSWER SECTION中的应显示您与public-service服务关联 IPv4 的地址。;; ANSWER SECTION: public-service.cloudmap-tutorial.com. 300 IN A 192.168.2.1
- 
    使用查询第二个服务实例的属性。 Amazon CLI aws servicediscovery discover-instances --namespace-name cloudmap-tutorial.com --service-name backend-service --regionregion输出以键值对的形式显示您与服务关联的属性。 { "Instances": [ { "InstanceId": "second", "NamespaceName": "cloudmap-tutorial.com", "ServiceName": "backend-service", "HealthStatus": "UNKNOWN", "Attributes": { "service-name": "backend" } } ], "InstancesRevision": 71462688285136850 }
步骤 5:清理资源
完成本教程后,您可以删除资源。 Amazon Cloud Map 要求你按相反的顺序清理它们,首先是服务实例,然后是服务,最后是命名空间。 Amazon Cloud Map 当你完成这些步骤时,将代表你清理 Route 53 资源。
- 登录 Amazon Web Services Management Console 并打开 Amazon Cloud Map 控制台,网址为https://console.aws.amazon.com/cloudmap/ - 。 
- 
    从命名空间列表中,选择 cloudmap-tutorial.com命名空间并选择查看详细信息。
- 
    在命名空间详细信息页面上,从服务列表中选择 public-service服务并选择查看详细信息。
- 
    在 “服务实例” 部分中,选择 first实例并选择 “取消注册”。
- 
    使用页面顶部的痕迹,选择 cloudmap-tutorial.com 以导航回命名空间详细信息页面。 
- 
    在命名空间详细信息页面上,从服务列表中选择公共服务并选择删除。 
- 
    对重复步骤 3-6。 backend-service
- 
    在左侧导航栏中,选择命名空间。 
- 
    选择 cloudmap-tutorial.com命名空间并选择 “删除”。注意尽管 Amazon Cloud Map 会代表您清理 Route 53 资源,但您可以导航到 Route 53 控制台来验证 cloudmap-tutorial.com托管区域是否已删除。