如何通过 AWS CLI 使用 AWS Cloud Map 配置服务发现?
我想通过 AWS 命令行界面 (AWS CLI) 使用 AWS Cloud Map 创建托管区。
解决方法
**注意:**如果您在运行 AWS 命令行界面 (AWS CLI) 命令时收到错误,请参阅排查 AWS CLI 错误。此外,确保您使用的是最新版本的 AWS CLI。
创建您的 DNS 命名空间
-
使用 AWS CLI 创建命名空间,将 example.com 替换为您要使用的域名。
-
您必须选择创建公有命名空间还是私有命名空间。注册域名后,公有命名空间在互联网上可见。私有命名空间仅在虚拟私有云 (VPC) 中可见。创建私有命名空间时,必须指定 VPC ID。
要创建公有命名空间,请运行以下命令:
$ aws servicediscovery create-public-dns-namespace --name example.com
要创建私有命名空间,请运行以下命令:
$ aws servicediscovery create-private-dns-namespace --name example.com --vpc vpc-0c92f38bf7db24a05
**注意:**由于该名称在 DNS 查询中是公开的,因此请勿在名称中包含敏感信息。
-
请注意输出中 OperationId 的值,如以下示例所示:
{ "OperationId": "igbkufld72o4vbsbwejfi6eyinfprhc3-jkwmz00b" }
-
要查找有关该操作的更多详细信息,请运行 get-operation 命令。将 OPERATION_VALUE 替换为上一步骤中 OperationId 的值:
aws servicediscovery get-operation --operation-id OPERATION_VALUE
-
在输出中,验证 Status 值是否为 SUCCESS。另外,请注意 NAMESPACE 的值,此值即创建服务并注册实例的命名空间 ID:
{ "Operation": { "Status": "SUCCESS", "CreateDate": 1534428266.699, "Id": "igbkufld72o4vbsbwejfi6eyinfprhc3-jkwmz00b", "UpdateDate": 1534428267.113, "Type": "CREATE_NAMESPACE", "Targets": { "NAMESPACE": "ns-f2wjnv2p7pqtz5f2" } } }
注意:创建命名空间时,Amazon Route 53 会自动为该域创建一个托管区。托管区的 Domain name 值与您的命名空间的域名相同。Comment 值由 Route 53 自动命名创建。
要验证托管区,请执行以下步骤:
- 打开 Route 53 控制台。
- 在导航窗格中,选择托管区。
- 在内容窗格的托管区列表中找到您的托管区。
创建您的服务
要创建您的服务,请按照以下步骤操作:
-
使用速记语法运行 servicediscovery create-service 命令,如本示例所示。将 WORKERS 替换为您的首选服务名称。Route 53 在创建记录时使用以下服务名称:
$aws servicediscovery create-service --name WORKERS--dns-config 'NamespaceId="ns-f2wjnv2p7pqtz5f2",RoutingPolicy="WEIGHTED",DnsRecords=[{Type="A",TTL="300"}]'
**注意:**如果公共 DNS 查询可以发现命名空间,则不要在其中包含敏感信息。对于 DNS 查询可以访问的服务,您不能创建多个只有名称大小写有区别的服务(例如 EXAMPLE 和 example)。但是,如果您使用只能通过 API 调用访问的命名空间,则可以创建只有名称大小写有区别的服务。
默认路由策略为 MULTIVALUE。支持的路由策略有 MULTIVALUE 和 WEIGHTED。
-
注意输出。Id 值是您刚刚创建的服务的 ID:
**注意:**CreatorRequestId 是请求的 ID。如果 API 调用失败,则使用 CreatorRequestId 重复该操作。{ "Service": { "DnsConfig": { "NamespaceId": "ns-f2wjnv2p7pqtz5f2", "DnsRecords": [ { "Type": "A", "TTL": 300 } ] }, "CreatorRequestId": "93e0a17a-230b-4c58-b986-f03f3217869f", "Id": "srv-iy3d7hhlf5cjciph", "Arn": "arn:aws:servicediscovery:eu-west-1:356906700443:service/srv-iy3d7hhlf5cjciph", "Name": "workers" } }
注册您的实例
要注册您的实例,请按照以下步骤操作:
-
运行 servicediscovery register-instance 命令。将 service-id、instance-id 和 attributes 的值占位符替换为相应的值。如果没有这些参数,API 调用就会失败。请注意,一次只能运行一个请求来注册具有相同 service-id 和 instance-id 选项的实例。
$ aws servicediscovery register-instance --service-id srv-iy3d7hhlf5cjciph --instance-id i-039444aa1e2932ca3 --attributes=AWS_INSTANCE_IPV4=172.1.1.1
**警告:**您必须等待一个 register-instance 请求完成,然后才能提交另一个具有相同服务 ID 和实例 ID 的请求。
-
查看输出。这包括 OperationId,如下例所示:
{ "OperationId": "z7dfqgeadkvwwid2wa2n5ckicrxs255x-jkwr1x9f" }
-
打开 Route 53 控制台。
-
在导航窗格中,选择托管区。
-
选择您之前创建的托管区。
-
选择转到记录集,然后确认为托管区成功创建了记录集。
**注意:**注册实例时,Route 53 会自动创建一条包含服务名称和域名的记录。
对于 Amazon Elastic Container Service (Amazon ECS) 和 Route 53 服务发现,您可以使用 Route 53 命名空间和服务名称来配置服务。Route 53 会根据您的 Amazon ECS 容器设置自动在您的托管区中创建、删除或更新记录。
相关内容
- AWS 官方已更新 1 年前
- AWS 官方已更新 1 年前
- AWS 官方已更新 4 个月前
- AWS 官方已更新 6 个月前