我正在使用 Amazon ECS(Docker)运行一些后端 REST 服务,它们在每次重启时都会更改其公共 IP。
当新的后端实例启动时,我正在使用 AWS Route 53 Auto Naming(又名 servicediscovery)在 DNS 上注册新的 A 记录。
一切正常,只是后端使用的是 HTTP。我希望使用 HTTPS 保护它们,并且我希望让我们加密/Certbot问题来了。
我希望获取托管区域内所有名称的通配符证书,比如说 *.aws.example.com,但我需要在托管区域上添加验证文本记录,但这是不可能的。
我收到的错误信息是:
资源 hostingzone/Z1R8P3NTRAIWDS 只能通过 servicediscovery.amazonaws.com 进行管理(arn:aws:servicediscovery:eu-west-1:263810592360:namespace/ns-cuqs46hqusim4jih)
如何向服务发现管理的托管区域添加一些静态记录?
答案1
我最终设法使用文档页面中“使用现有托管区域的服务发现”部分中的程序解决了我的问题: https://docs.aws.amazon.com/Route53/latest/APIReference/overview-service-discovery.html
基本上:
- 使用自动发现功能创建一个与先前存在的公共 Route53 托管区域无关的命名空间
- 使用以下 aws-cli 命令将自动发现记录链接到公共 Route53 托管区域
aws route53 change-resource-record-sets --hosted-zone-id existing-hosted-zone-id --change-batch file://path-to-text-file
文本文件的组成如下:
{
"Changes": [
{
"Action": "UPSERT",
"ResourceRecordSet": {
"Type":"A",
"Name":"record-name-in-existing-hosted-zone",
"AliasTarget": {
"DNSName":"record-name-in-new-hosted-zone",
"HostedZoneId":"service-discovery-hosted-zone-id",
"EvaluateTargetHealth":true
}
}
}
]
}
答案2
您可能会考虑在前面使用 Elastic Load Balancer 并使用 Amazon 的证书流程。您将为 ELB 支付更多费用,但从那时起,您可以在 Route53 中使用 ELB 端点,而不必担心 ECS IP 地址。
否则,您可能需要关闭自动发现,或者从提供商处生成证书,该证书将根据文件中发送给管理员的电子邮件进行批准。