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

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

创建 Amazon Cloud Map 命名空间

要创建命名空间,请执行以下过程。

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

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

  3. Create namespace (创建命名空间) 页面上,输入适用的值。有关更多信息,请参阅您在创建命名空间时指定的值

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

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
      注意
      命名空间要求:
      • 为公共 DNS 查询配置的命名空间必须以顶级域(例如 .com)结尾。

      • 命名空间名称最多可包含 1,024 个字符,并且必须以字母开头和结尾。

      • 有效字符包括 a-z、A-Z、0-9、.(句点)、_(下划线)和 -(连字符)。

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': { '...': '...', }, }
      注意
      命名空间要求:
      • 为公共 DNS 查询配置的命名空间必须以顶级域(例如 .com)结尾。

      • 命名空间名称最多可包含 1,024 个字符,并且必须以字母开头和结尾。

      • 有效字符包括 a-z、A-Z、0-9、.(句点)、_(下划线)和 -(连字符)。

您在创建命名空间时指定的值

创建 Amazon Cloud Map 命名空间时,需要指定以下值。

注意

创建命名空间后,您可以更改标签。但是,您无法更改任何其他值。

命名空间名称

您为命名空间指定的名称取决于您希望应用程序如何发现实例。如何发现实例的方法取决于您为实例发现选择的选项。这些选项稍后会显示在控制台的当前页面上。这些特性如下所示:

API 调用

如果您选择此选项,应用程序将通过在 DiscoverInstances 请求中指定命名空间名称和服务名称来发现服务实例。有关更多信息,请参阅《Amazon Cloud Map API 参考》中的 DiscoverInstances

您可以指定长度为 1 到 1,024 个字符的名称。名称可以包含大小写字母、数字、下划线(_)和连字符(-)。

VPC 中的 API 调用和 DNS 查询

输入您希望 VPC 中的应用程序在通过提交 DNS 查询发现实例时使用的域名。 Amazon Cloud Map 自动创建具有此名称的 Amazon Route 53 私有托管区域。在注册服务实例时, Amazon Cloud Map 会在托管区域中创建具有以下格式的名称的 DNS 记录:

service-name.namespace-name

如果您选择此选项,应用程序还可通过在 DiscoverInstances 请求中指定命名空间名称和服务名称来发现实例。有关更多信息,请参阅《Amazon Cloud Map API 参考》中的 DiscoverInstances

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

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

API 调用和公共 DNS 查询

输入您希望应用程序在通过提交公共 DNS 查询发现实例时使用的域名。这必须是您已注册的域名。创建命名空间时, Amazon Cloud Map 会自动创建同名的 Amazon Route 53 公共托管区域。在注册服务实例时, Amazon Cloud Map 会在托管区域中创建具有以下格式的名称的 DNS 记录:

service-name.namespace-name

如果您选择此选项,应用程序还可通过在 DiscoverInstances 请求中指定命名空间名称和服务名称来发现实例。有关更多信息,请参阅《Amazon Cloud Map API 参考》中的 DiscoverInstances

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

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

命名空间描述

输入命名空间的描述。您在此处输入的值将显示在 Namespaces (命名空间) 页面以及每个命名空间的详细信息页面上。

实例发现

选择您希望应用程序发现已注册实例的方式:

API 调用

如果您希望应用程序仅使用 API 调用来发现已注册的实例,请选择此选项。

VPC 中的 API 调用和 DNS 查询

如果您希望应用程序能够在 VPC 中使用 API 调用或 DNS 查询来发现实例,请选择此选项。您无需同时使用这两种方法。

API 调用和公共 DNS 查询

如果您希望应用程序能够使用 API 调用或使用公有 DNS 查询来发现实例,请选择此选项。您无需同时使用这两种方法。

SOA TTL

对于 VPC 中的 API 调用API 调用和公共 DNS 查询,使用您的命名空间创建的 Route 53 托管区的授权起始点 (SOA) DNS 记录的生存时间 (TTL) 值。该值决定了 DNS 解析程序在将其他 DNS 查询转发到 Amazon Route 53 以获取更新后的设置之前缓存此记录的信息的时长。较小的值也会缩短缺失条目的缓存时间(负缓存),代价是对该命名空间进行额外查询。

标签

您可以指定一个或多个要添加到命名空间的标签。标签是您可以分配给 Amazon 资源的可选标签。每个标签均包含一个键和一个值。例如,您可以使用“键 = 环境”和“值 = 生产”来定义标签。标签使您可以对 Amazon 资源进行分类,以便更轻松地对其进行管理。

您可以在创建命名空间的标签之后更新或删除这些标签。有关更多信息,请参阅给您的 Amazon Cloud Map 资源加标签

VPC

当您选择 VPC 中的 API 调用和 DNS 查询作为实例发现的值时, Amazon Cloud Map 会创建一个同名的 Amazon Route 53 私有托管区域。 Amazon Cloud Map 将您在 VPC 列表中选择的 VPC 与该私有托管区域相关联。

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

您可以将其他 VPC 与私有托管区域关联。有关更多信息,请参阅《亚马逊 Route 53 API考WithHostedZone》中的 AssociateVPC