如何使用 Boto 3 获取域的托管区域?

oro*_*ome 5 amazon-web-services amazon-route53 boto3

宝途2,我可以得到一个托管区与域相关的domain

r53_2 = boto.route53.connection.Route53Connection()
hz = r53_2.get_zone(domain)
Run Code Online (Sandbox Code Playgroud)

但是在Boto 3 中对应的 API需要一个 ID 而不是域名

r53_3 = boto3.client('route53')
hz = r53_3.get_hosted_zone(id)
Run Code Online (Sandbox Code Playgroud)

而且我没有看到任何从域名中获取 ID 的方法,这是我可以访问的全部内容。

如何使用 Boto 3 获取域的托管区域?

pet*_*r n 6

list_hosted_zones_by_name有点误导:它仍然返回一个列表,但首先列出具有 DNSName 的记录注意:如果记录不存在,它将按字母顺序返回下一条记录(我认为),因此获取列表中的第一个记录并不能保证它是您想要的记录。这对我有用:

import boto3, json

client = boto3.client('route53')
dnsName = 'example.com' 
response = client.list_hosted_zones_by_name(
    DNSName=dnsName, 
    MaxItems='1'
)
print(json.dumps(response, indent=4)) # inspect output
if ('HostedZones' in response.keys()
    and len(response['HostedZones']) > 0
    and response['HostedZones'][0]['Name'].startswith(dnsName)):
    hostedZoneId = response['HostedZones'][0]['Id'].split('/')[2] # response comes back with /hostedzone/{HostedZoneId}
    print('HostedZone {} found with Id {}'.format(dnsName, hostedZoneId))
else:
    print('HostedZone not found: {}'.format(dnsName))
Run Code Online (Sandbox Code Playgroud)


Pol*_*ath 3

我现在无法测试这个,但是你可以使用.list_hosted_zones()

您需要解析结果,但这是一个开始。

RL