本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
为应用程序组件创建 AWS Cloud Map 服务
创建命名空间后,您可以创建服务来表示应用程序中用于特定目的的不同组件。例如,您可以为应用程序中处理付款的资源创建服务。
注意
您不能创建多个可通过 DNS 查询访问的服务,其名称仅因大小写而异(例如示例和示例)。尝试这样做会导致这些服务具有相同的 DNS 名称。如果您使用只能通过 API 调用访问的命名空间,则可以创建名称仅靠大小写来区分的服务。
按照以下步骤使用适用于 Python 的 AWS Management Console AWS CLI、和 SDK 创建服务。
- AWS Management Console
-
登录 AWS Management Console 并打开 AWS Cloud Map 控制台,网址为 https://console.aws.amazon.com/cloudmap/
。 -
在导航窗格中,选择 Namespaces (命名空间)。
-
在 Namespaces (命名空间) 页面上,选择要将服务添加的命名空间。
-
在 Namespace:
namespace-name
(命名空间: namespace-name) 页面上,选择 Create service (创建服务)。 -
在服务名称中,输入一个描述您在使用此服务时注册的实例的名称。该值用于在 API 调用或 DNS 查询中发现 AWS Cloud Map 服务实例。
注意
如果您 AWS Cloud Map 想在注册实例时创建 SRV 记录,并且您使用的系统需要特定 SRV 格式(例如 HAProxy
),请为服务名称指定以下内容: -
名称以下划线 (_) 开头,例如 _exampleservice。
-
名称以
._protocol
结尾,例如 ._tcp。
注册实例时, AWS Cloud Map 会创建 S RV 记录并通过连接服务名称和命名空间名称来分配名称,例如:
_exampleservice._tcp.example.com
-
-
(可选)在服务描述中,输入服务的描述。您在此处输入的描述显示在服务页面和每项服务的详情页面上。
-
如果命名空间支持 DNS 查询,则可以在服务发现配置下,在服务级别配置可发现性。您可以选择允许 API 调用和 DNS 查询,或者仅允许 API 调用以发现此服务中的实例。
注意
如果您选择 API 调用,则在注册实例时 AWS Cloud Map 不会创建 SRV 记录。
如果您选择 API 和 DNS,请按照以下步骤配置 DNS 记录。您可以添加或删除 DNS 记录。
-
对于路由策略,请为注册实例时 AWS Cloud Map 创建的 DNS 记录选择 Amazon Route 53 路由策略。您可以在加权路由和多值答案路由之间进行选择。有关更多信息,请参阅 路由策略。
注意
注册实例时,您无法使用控制台进行配置 AWS Cloud Map 以创建 Route 53 别名记录。如果您想在 AWS Cloud Map 以编程方式注册实例时为 Elastic Load Balancing 负载均衡器创建别名记录,请为路由策略选择加权路由。
-
对于 “记录类型”,选择 DNS 记录类型来确定 Route 53 在响应 DNS 查询时返回的内容 AWS Cloud Map。有关更多信息,请参阅 记录类型。
-
对于 TTL,请指定一个数值来定义服务级别的生存时间 (TTL) 值(以秒为单位)。TTL 的值决定了 DNS 解析程序在将其他 DNS 查询转发到 Amazon Route 53 以获取更新后的设置之前缓存此记录的信息的时长。
-
-
在运行状况检查配置下,对于运行状况检查选项,选择适用于服务实例的运行状况检查类型。您可以选择不配置任何运行状况检查,也可以在实例的 Route 53 运行状况检查或外部运行状况检查之间进行选择。有关更多信息,请参阅 AWS Cloud Map 服务运行状况检查配置。
注意
Route 53 运行状况检查只能针对公有 DNS 命名空间中的服务进行配置。
如果您选择 Route 53 运行状况检查,请提供以下信息。
-
对于失败阈值,请提供一个介于 1 到 10 之间的数字,该数字定义服务实例必须通过或失败才能更改其运行状况的连续次数 Route 53 运行状况检查。
-
对于运行状况检查协议,选择 Route 53 将用于检查服务实例运行状况的方法。
-
如果您选择 HTTP 或 HTT PS 运行状况检查协议,请在运行状况检查路径中提供您希望 Amazon Route 53 在执行运行状况检查时请求的路径。路径可以是任何值,例如文件
/docs/route53-health-check.html
。当该资源运行状况正常时,返回的值是 2xx 或 3xx 格式的 HTTP 状态代码。您也可以包括查询字符串参数,例如,/welcome.html?language=jp&login=y
。 AWS Cloud Map 控制台将自动添加一个前导斜杠 (/) 字符。
有关 Route 53 运行状况检查的更多信息,请参阅 Amazon Route 53 开发者指南中的亚马逊 Route 53 如何确定运行状况检查是否正常。
-
-
(可选)在 “标签” 下,选择 “添加标签”,然后指定用于标记命名空间的键和值。您可以指定一个或多个要添加到命名空间的标签。标签允许您对 AWS 资源进行分类,以便更轻松地对其进行管理。有关更多信息,请参阅 标记您的资源 AWS Cloud Map。
-
选择 Create service。
- AWS CLI
-
-
使用
create-service
命令创建服务。将红色
值替换为您自己的值。aws servicediscovery create-service \ --name
service-name
\ --namespace-idns-xxxxxxxxxxx
\ --dns-config "NamespaceId=ns-xxxxxxxxxxx
,RoutingPolicy=MULTIVALUE,DnsRecords=[{Type=A
,TTL=60
}]"输出:
{ "Service": { "Id": "srv-xxxxxxxxxxx", "Arn": "arn:aws:servicediscovery:us-west-2:123456789012:service/srv-xxxxxxxxxxx", "Name": "service-name", "NamespaceId": "ns-xxxxxxxxxxx", "DnsConfig": { "NamespaceId": "ns-xxxxxxxxxxx", "RoutingPolicy": "MULTIVALUE", "DnsRecords": [ { "Type": "A", "TTL": 60 } ] }, "CreateDate": 1587081768.334, "CreatorRequestId": "567c1193-6b00-4308-bd57-ad38a8822d25" } }
-
- AWS SDK for Python (Boto3)
-
如果您尚未安装
Boto3
,则可以在此处找到安装、配置和使用 Boto3
的说明。-
导入
Boto3
并将servicediscovery
用作您的服务。import boto3 client = boto3.client('servicediscovery')
-
使用创建服务
create_service()
。将红色
值替换为您自己的值。有关更多信息,请参阅 create_service。 response = client.create_service( DnsConfig={ 'DnsRecords': [ { 'TTL':
60
, 'Type': 'A
', }, ], 'NamespaceId': 'ns-xxxxxxxxxxx
', 'RoutingPolicy': 'MULTIVALUE
', }, Name='service-name
', NamespaceId='ns-xxxxxxxxxxx
', )示例响应输出
{ 'Service': { 'Arn': 'arn:aws:servicediscovery:us-west-2:123456789012:service/srv-xxxxxxxxxxx', 'CreateDate': 1587081768.334, 'DnsConfig': { 'DnsRecords': [ { 'TTL': 60, 'Type': 'A', }, ], 'NamespaceId': 'ns-xxxxxxxxxxx', 'RoutingPolicy': 'MULTIVALUE', }, 'Id': 'srv-xxxxxxxxxxx', 'Name': 'service-name', 'NamespaceId': 'ns-xxxxxxxxxxx', }, 'ResponseMetadata': { '...': '...', }, }
-
后续步骤
创建服务后,您可以将应用程序资源注册为服务实例,其中包含有关应用程序如何找到资源的信息。有关注册 AWS Cloud Map 服务实例的更多信息,请参阅将资源注册为 AWS Cloud Map 服务实例。