将资源注册为 Amazon Cloud Map 服务实例 - Amazon Cloud Map
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

将资源注册为 Amazon Cloud Map 服务实例

您可以将应用程序的资源注册为 Amazon Cloud Map 服务中的实例。例如,假设您已users为管理用户数据的所有应用程序资源创建了一个名为的服务。然后,您可以将用于存储用户数据的 DynamoDB 表注册为该服务的实例。

注意

Amazon Cloud Map 控制台上不提供以下功能:

  • 在使用控制台注册服务实例时,您无法创建将流量路由到弹性负载均衡(ELB)负载均衡器的别名记录。在注册实例时,您必须包含 AWS_ALIAS_DNS_NAME 属性。有关更多信息,请参阅 Amazon Cloud Map API 参考RegisterInstance中的。

  • 如果您使用包含自定义运行状况检查的服务注册实例,则无法为自定义运行状况检查指定初始状态。默认情况下,自定义运行状况检查的初始状态为 Healthy (正常)。如果您希望初始运行状况为 Unhealthy (不正常),请以编程方式注册实例并包含 AWS_INIT_HEALTH_STATUS 属性。有关更多信息,请参阅 Amazon Cloud Map API 参考RegisterInstance中的。

要在服务中注册实例,请按照以下步骤操作。

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

  2. 在导航窗格中,选择 Namespaces (命名空间)

  3. Namespaces (命名空间) 页面上,选择包含要用作服务实例注册模板的服务。

  4. Namespace: namespace-name (命名空间: namespace-name) 页面上,选择要使用的服务。

  5. Service: service-name (服务: <service-name>) 页面上,选择 Register service instance (注册服务实例) 选项卡。

  6. 注册服务实例页面上,选择实例类型。根据命名空间实例发现配置,您可以选择为没有 IP 地址的资源指定 IP 地址、Amazon EC2 实例 ID 或其他识别信息。

    注意

    您只能在 HTTP 命名空间中选择 EC2 实例

  7. 对于服务实例 ID,请提供与现有服务实例关联的标识符。只有当您想通过重新注册现有实例来更新其值时,才需要此字段。

  8. 根据您选择的实例类型,执行以下步骤。

    实例类型 步骤

    IP 地址

    1. “标准属性” 下,为 IPv4 地址提供一个 IPv4 地址(如果有),您的应用程序可以在该地址中访问与此服务实例关联的资源。

    2. 对于 IPv6 地址,请提供 IPv6 IP 地址(如果有),您的应用程序可以在该地址中访问与此服务实例关联的资源。

    3. 对于端口,请指定您的应用程序必须包含的任何端口,以访问与此服务实例关联的资源。如果服务包含 SRV 记录或 Amazon Route 53 运行状况检查,则需要@@ 端口

    4. (可选)在 “自定义属性” 下,指定要与资源关联的任何键值对。

    EC2 实例
    1. 对于 EC2 实例 ID,请选择要注册为 Amazon Cloud Map 服务实例的 Amazon EC2 实例的 ID。

    2. (可选)在 “自定义属性” 下,指定要与资源关联的任何键值对。

    识别其他资源的信息
    1. “标准属性” 下,如果服务配置包含 CNAME DNS 记录,您将看到一个 CNAME 字段。对于 CNAME,请指定您希望 Route 53 在响应 DNS 查询时返回的域名(例如,example.com)。

    2. “自定义属性” 下,将不是 IP 地址或 Amazon EC2 实例 ID 的资源的任何识别信息指定为键值对。例如,您可以通过指定名为的密钥function并提供 Lambda 函数的名称作为值来注册 Lambda 函数。您也可以指定名为的密钥name并提供可用于编程实例发现的名称。

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

Amazon CLI
  • 当您提交 RegisterInstance 请求时:

    • 对于您在 ServiceId 指定的服务中定义的每个 DNS 记录,都会在与相应命名空间关联的托管区中创建或更新一条记录。

    • 如果服务包括 HealthCheckConfig,则根据运行状况检查配置中的设置创建运行状况检查。

    • 任何运行状况检查都与每条新的或更新的记录相关联。

    使用 register-instance 命令注册一个服务实例(将红色值替换为您自己的值)。

    aws servicediscovery register-instance \ --service-id srv-xxxxxxxxx \ --instance-id myservice-xx \ --attributes=AWS_INSTANCE_IPV4=172.2.1.3,AWS_INSTANCE_PORT=808
Amazon SDK for Python (Boto3)
  1. 如果您尚未安装 Boto3,则可以在此处找到安装、配置和使用Boto3的说明。

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

    import boto3 client = boto3.client('servicediscovery')
  3. 当您提交 RegisterInstance 请求时:

    • 对于您在 ServiceId 指定的服务中定义的每个 DNS 记录,都会在与相应命名空间关联的托管区中创建或更新一条记录。

    • 如果服务包括 HealthCheckConfig,则根据运行状况检查配置中的设置创建运行状况检查。

    • 任何运行状况检查都与每条新的或更新的记录相关联。

    使用 register_instance() 注册一个服务实例(将红色值替换为您自己的值)。

    response = client.register_instance( Attributes={ 'AWS_INSTANCE_IPV4': '172.2.1.3', 'AWS_INSTANCE_PORT': '808', }, InstanceId='myservice-xx', ServiceId='srv-xxxxxxxxx', ) # If you want to see the response print(response)

    示例响应输出

    { 'OperationId': '4yejorelbukcjzpnr6tlmrghsjwpngf4-k95yg2u7', 'ResponseMetadata': { '...': '...', }, }