了解如何在 DNS 查询和 API 调用中使用 Amazon Cloud Map 服务发现 - Amazon Cloud Map
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

了解如何在 DNS 查询和 API 调用中使用 Amazon Cloud Map 服务发现

本教程模拟了包含两个后端服务的微服务架构。使用 DNS 查询可以发现第一项服务。仅使用 Amazon Cloud Map API 才能发现第二项服务。

注意

就本教程而言,资源详细信息(例如域名和 IP 地址)仅用于模拟目的。它们无法通过互联网解决。

先决条件

要成功完成本教程,必须满足以下先决条件。

  • 在开始之前,请完成 设置为使用 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 集成的版本。

  • 本教程要求使用带有 dig DNS 查找实用程序命令的本地环境。有关该dig命令的更多信息,请参阅 dig-DNS 查找实用程序

步骤 1:创建 Amazon Cloud Map 命名空间

在此步骤中,您将创建一个公共 Amazon Cloud Map 命名空间。 Amazon Cloud Map 代表您创建同名的 Route 53 托管区域。这使您能够使用公有 DNS 记录或使用 Amazon Cloud Map API 调用来发现在此命名空间中创建的服务实例。

  1. 登录 Amazon Web Services Management Console 并打开 Amazon Cloud Map 控制台,网址为 https://console.aws.amazon.com/cloudmap/

  2. 选择 Create namespace (创建命名空间)

  3. 在 “命名空间名称” 中,指定cloudmap-tutorial.com

    注意

    如果你打算在生产环境中使用它,你需要确保你指定了你拥有或有权访问的域的名称。但是就本教程而言,它没有必要成为正在使用的实际域。

  4. (可选)在命名空间描述中,为你打算使用命名空间的内容指定描述。

  5. 对于实例发现,请选择 API 调用和公有 DNS 查询

  6. 保留其余的默认值,然后选择创建命名空间

步骤 2:创建 Amazon Cloud Map 服务

在此步骤中,您将创建两个服务。使用公共 DNS 和 API 调用可以发现第一项服务。仅使用 API 调用才能发现第二项服务。

  1. 登录 Amazon Web Services Management Console 并打开 Amazon Cloud Map 控制台,网址为 https://console.aws.amazon.com/cloudmap/

  2. 在左侧导航窗格中,选择命名空间以列出您创建的命名空间。

  3. 从命名空间列表中,选择cloudmap-tutorial.com命名空间并选择查看详细信息。

  4. 服务部分中,选择创建服务并执行以下操作来创建第一个服务。

    1. 对于服务名称,输入 public-service。服务名称将应用于 Amazon Cloud Map 创建的 DNS 记录。使用的格式是<service-name>.<namespace-name>

    2. 对于服务发现配置,请选择 API 和 DNS

    3. DNS 配置部分的路由策略中,选择多值应答路由

      注意

      选择后,控制台会将其转换为 “多值”。有关可用路由选项的更多信息,请参阅 R oute 53 开发人员指南中的选择路由策略

    4. 保留其余的默认值,然后选择 C reate servic e,这将返回到命名空间详细信息页面。

  5. 在 “服务” 部分中,选择创建服务,然后执行以下操作来创建第二个服务。

    1. 对于服务名称,输入 backend-service

    2. 对于服务发现配置,请选择仅限 API

    3. 保留其余的默认值,然后选择创建服务

步骤 3:注册 Amazon Cloud Map 服务实例

在此步骤中,您将创建两个服务实例,每个服务对应一个命名空间中的服务。

  1. 登录 Amazon Web Services Management Console 并打开 Amazon Cloud Map 控制台,网址为 https://console.aws.amazon.com/cloudmap/

  2. 从命名空间列表中,选择您在步骤 1 中创建的命名空间,然后选择查看详细信息。

  3. 在命名空间详细信息页面上,从服务列表中选择public-service服务并选择查看详细信息

  4. 服务实例部分,选择注册服务实例,然后执行以下操作来创建第一个服务实例。

    1. 对于服务实例 ID,请指定first

    2. 对于 IPv4 地址,请指定192.168.2.1

    3. 保留其余的默认值,然后选择注册服务实例

  5. 使用页面顶部的痕迹,选择 cloudmap-tutorial.com 以导航回命名空间详细信息页面。

  6. 在命名空间详细信息页面上,从服务列表中选择后端服务并选择查看详细信息。

  7. 服务实例部分,选择注册服务实例,然后执行以下操作来创建第二个服务实例。

    1. 服务实例 ID 中,指定second以表示这是第二个服务实例。

    2. 在 “实例类型” 中,选择 “其他资源的识别信息”。

    3. 对于自定义属性,添加一个键值对,service-name作为键,backend作为值。

    4. 选择 Register service instance (注册服务实例)

步骤 4:发现 Amazon Cloud Map 服务实例

现在, Amazon Cloud Map 命名空间、服务和服务实例已创建完毕,您可以通过发现实例来验证一切是否正常。使用dig命令验证公有 DNS 设置,使用 Amazon Cloud Map API 验证后端服务。有关该dig命令的更多信息,请参阅 dig-DNS 查找实用程序

  1. 登录 Amazon Web Services Management Console 并打开 Route 53 控制台,网址为 https://console.aws.amazon.com/route53/

  2. 在左侧导航中,选择 Hosted zones(托管区)

  3. 选择 cloudmap-tut orial.com 托管区域。这将在单独的窗格中显示托管区域的详细信息。请记下与您的托管区域关联的名称服务器,因为我们将在下一步中使用这些服务器。

  4. 使用 dig 命令和托管区域的 Route 53 域名服务器之一,查询您的服务实例的 DNS 记录。

    dig @hosted-zone-nameserver public-service.cloudmap-tutorial.com

    输出ANSWER SECTION中的应显示您与public-service服务关联的 IPv4 地址。

    ;; ANSWER SECTION: public-service.cloudmap-tutorial.com. 300 IN A 192.168.2.1
  5. 使用查询第二个服务实例的属性。 Amazon CLI

    aws servicediscovery discover-instances --namespace-name cloudmap-tutorial.com --service-name backend-service --region region

    输出以键值对的形式显示您与服务关联的属性。

    { "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 资源。

  1. 登录 Amazon Web Services Management Console 并打开 Amazon Cloud Map 控制台,网址为 https://console.aws.amazon.com/cloudmap/

  2. 从命名空间列表中,选择cloudmap-tutorial.com命名空间并选择查看详细信息。

  3. 在命名空间详细信息页面上,从服务列表中选择public-service服务并选择查看详细信息

  4. 服务实例部分,选择first实例并选择注销

  5. 使用页面顶部的痕迹,选择 cloudmap-tutorial.com 以导航回命名空间详细信息页面。

  6. 在命名空间详细信息页面上,从服务列表中选择公共服务并选择删除

  7. 对重复步骤 3-6。backend-service

  8. 在左侧导航栏中,选择命名空间

  9. 选择cloudmap-tutorial.com命名空间并选择 “删除”

    注意

    尽管 Amazon Cloud Map 会代表您清理 Route 53 资源,但您可以导航到 Route 53 控制台来验证cloudmap-tutorial.com托管区域是否已删除。