创建 Amazon Cloud Map 命名空间来对应用程序服务进行分组 - Amazon Cloud Map
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

创建 Amazon Cloud Map 命名空间来对应用程序服务进行分组

您可以创建一个命名空间,将应用程序的服务分组到一个友好的名称下,允许通过 API 调用或 DNS 查询发现应用程序资源。

实例发现选项

下表总结了中不同的实例发现选项 Amazon Cloud Map 以及您可以创建的相应命名空间类型,具体取决于应用程序的服务和设置。

命名空间类型 实例发现方法 工作方式 其他信息
HTTP API 调用 您的应用程序中的资源只能通过调用 DiscoverInstances API 来发现其他资源。
私有 DNS VPC 中的 API 调用和 DNS 查询

应用程序中的资源可以通过调用 DiscoverInstances API 和查询自动创建的私有 Route 53 托管区域中的域名服务器来发现其他资源。 Amazon Cloud Map

由 Amazon Cloud Map 创建的托管区域与命名空间同名,并且包含名称格式为 service -nam e 的 DNS 记录。 命名空间名称

注意

Route 53 解析程序将使用私有托管区域中的记录解析源自 VPC 的 DNS 查询。如果私有托管区域不包含与 DNS 查询中的域名匹配的记录,Route 53 将使用 NXDOMAIN(不存在的域)响应该查询。

公有 DNS API 调用和公共 DNS 查询

应用程序中的资源可以通过调用 DiscoverInstances API 和查询自动创建的 Route 53 公共托管区域中的域名服务器来发现其他资源。 Amazon Cloud Map

公共托管区域与命名空间同名,并且包含名称格式为 service -nam e 的 DNS 记录。 命名空间名称

注意

在这种情况下,命名空间名称必须是您注册的域名。

过程

您可以按照以下步骤使用适用于 Python 的 Amazon CLI Amazon Web Services Management Console、或 SDK 创建命名空间。

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

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

  3. 命名空间名称中,输入将用于发现实例的名称。

    注意
    • 为公共 DNS 查询配置的命名空间必须以顶级域名结尾。例如,.com

    • 您可以指定一个国际化域名 (IDN)(如果您先将该名称转换为域名代码)。有关在线转换器的信息,请在 Internet 上搜索“域名代码转换器”。

      您还可以在以编程方式创建命名空间时将国际化域名转换为域名代码。例如,如果您使用 Java,则可使用 java.net.IDN 库的 toASCII 方法将 Unicode 值转换为域名代码。

  4. (可选)在命名空间描述中,输入有关命名空间的信息,这些信息将显示在 “命名空间” 页面和 “命名空间信息” 下。您可以使用这些信息轻松识别命名空间。

  5. 对于实例发现,您可以在 VPC 中的 API 调用、API 调用和 DNS 查询,以及 API 调用和公有 DNS 查询之间进行选择,分别创建 HTTP、私有 DNS 或公有 DNS 命名空间。有关更多信息,请参阅 实例发现选项

    根据您的选择,请按照以下步骤操作。

    • 如果您在 VPC 中选择 API 调用和 DNS 查询,则对于 VPC,请选择要与命名空间关联的虚拟私有云 (VPC)。

    • 如果您在 VPC 中选择 API 调用和 DNS 查询,或者选择 API 调用和公共 DNS 查询,则对于 TTL,请指定以秒为单位的数值。生存时间 (TTL) 值决定 DNS 解析器为使用您的命名空间创建的 Route 53 托管区域的授权起始授权 (SOA) DNS 记录缓存信息多长时间。有关 TTL 的更多信息,请参阅 A mazon Route 53 开发者指南中的 TTL(秒)

  6. (可选)在 “标签” 下,选择 “添加标签”,然后指定用于标记命名空间的键和值。您可以指定一个或多个要添加到命名空间的标签。标签允许您对 Amazon 资源进行分类,以便更轻松地对其进行管理。有关更多信息,请参阅 标记您的资源 Amazon Cloud Map

  7. 选择 Create namespace (创建命名空间)。您可以使用查看操作的状态ListOperations。有关更多信息,请参阅 Amazon Cloud Map API 参考ListOperations中的

Amazon CLI
  • 使用您想要的实例发现类型的命令创建一个命名空间(将红色值替换为您自己的值)。

    • 使用 create-http-namespace 创建 HTTP 命名空间。可以使用 DiscoverInstances 请求发现使用 HTTP 命名空间注册的服务实例,但无法使用 DNS 发现该服务实例。

      aws servicediscovery create-http-namespace --name name-of-namespace
    • 使用 create-private-dns-namespace 根据 DNS 创建私有命名空间(仅在指定的 Amazon VPC 内才可见)。您可以使用 DiscoverInstances 请求或使用 DNS 发现通过私有 DNS 命名空间注册的实例。

      aws servicediscovery create-private-dns-namespace --name name-of-namespace --vpc vpc-xxxxxxxxx
    • 使用 create-public-dns-namespace 根据 DNS 创建公有命名空间(在互联网上可见)。您可以使用 DiscoverInstances 请求或使用 DNS 发现通过公有 DNS 命名空间注册的实例。

      aws servicediscovery create-public-dns-namespace --name name-of-namespace
Amazon SDK for Python (Boto3)
  1. 如果您尚未安装 Boto3,则可以在此处找到安装、配置和使用Boto3的说明。

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

    import boto3 client = boto3.client('servicediscovery')
  3. 使用您想要的实例发现类型的命令创建一个命名空间(将红色值替换为您自己的值):

    • 使用 create_http_namespace() 创建 HTTP 命名空间。可以使用 discover_instances() 发现使用 HTTP 命名空间注册的服务实例,但无法使用 DNS 发现该服务实例。

      response = client.create_http_namespace( Name='name-of-namespace', ) # If you want to see the response print(response)
    • 使用 create_private_dns_namespace() 根据 DNS 创建私有命名空间(仅在指定的 Amazon VPC 内才可见)。您可以使用 discover_instances() 或使用 DNS 发现通过私有 DNS 命名空间注册的实例。

      response = client.create_private_dns_namespace( Name='name-of-namespace', Vpc='vpc-1c56417b', ) # If you want to see the response print(response)
    • 使用 create_public_dns_namespace() 根据 DNS 创建公有命名空间(在互联网上可见)。您可以使用 discover_instances() 或使用 DNS 发现通过公有 DNS 命名空间注册的实例。

      response = client.create_public_dns_namespace( Name='name-of-namespace', ) # If you want to see the response print(response)
    • 示例响应输出

      { 'OperationId': 'gv4g5meo7ndmeh4fqskygvk23d2fijwa-k9302yzd', 'ResponseMetadata': { '...': '...', }, }

后续步骤

创建命名空间后,可以在命名空间中创建服务,将共同用于应用程序中特定用途的应用程序资源组合在一起。服务充当将应用程序资源注册为实例的模板。有关创建 Amazon Cloud Map 服务的更多信息,请参阅为应用程序组件创建 Amazon Cloud Map 服务