Sha*_*ine 7 php amazon-web-services amazon-route53
我是亚马逊服务及其 API 的新手。
使用 Amazon route53Clinet 类,我知道有一个方法 getHostedZone 可以根据 ID 获取托管区域信息。但是我有一个案例,我有域名,我需要根据提供的域名获取托管区域 ID?我怎样才能做到这一点?
joe*_*son 12
我使用 AWS CLI 并将 JSON 结果通过管道传输到该jq工具:
aws route53 list-hosted-zones-by-name |
jq --arg name "example.com." \
-r '.HostedZones | .[] | select(.Name=="\($name)") | .Id'
Run Code Online (Sandbox Code Playgroud)
该jq表达式选择包含名称“example.com”的每个托管区域 JSON 项目。请注意,这可能会返回多条记录。
输出是匹配的托管区域 ID 字符串,例如:
/hostedzone/ABCDEF12345678
Run Code Online (Sandbox Code Playgroud)
然后,您可以列出托管区域 ID 的资源记录集:
aws route53 list-resource-record-sets \
--hosted-zone-id "/hostedzone/ABCDEF12345678"
Run Code Online (Sandbox Code Playgroud)
您可以使用listHostedZones或listHostedZonesByName查询有关托管区域的服务。
但是……您确实需要知道托管区域 ID——存储或缓存它——因为可以在 Route 53 中为完全相同的域创建多个托管区域……并且如果您的代码盲目搜索域名的托管区域,您最终可能会修改错误的区域...特别是如果您陷入假设只有一个匹配项的反模式陷阱,因此您总是选择第一个匹配项。
简单的部署对于每个域名只会有一个托管区域,但您可能拥有多个托管区域的原因包括私有托管区域(只能从您的 VPC 内部访问)或重复的公共托管区域,您正在其中进行 DNS 重建或硬切换. Route 53 允许您使用 4 个不同的名称服务器创建第二个(或第三个等)托管区域。
此外,当然,在本地拥有这些信息是有意义的,以避免发出不必要的 API 请求,这会花费时间和金钱。您可能已经注意到,托管区域 ID 在控制台中也是可见的。
| 归档时间: |
|
| 查看次数: |
8511 次 |
| 最近记录: |