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

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

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

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

注意

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

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

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

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

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

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

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

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

  5. 服务上:service-name页面上,选择注册服务实例

  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,请选择要注册为 AWS Cloud Map 服务EC2实例的 Amazon 实例的 ID。

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

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

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

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

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

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

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

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

    使用register-instance命令注册服务实例(替换 red 用你自己的价值观)。

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

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

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

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

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

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

    使用注册服务实例register_instance()(替换 red 用你自己的价值观)。

    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': { '...': '...', }, }