我是python的新手,正在学习,我正在写一个代码来打印一个route53托管区域的域名和类型和值。当它通过CNAME循环时,我得到的是CNAME的值,而不是它的域名。
def list(zoneid, region, profile):
rrs = []
aws_session = boto3.session.Session(region=region, profile=profile)
route53 = aws_session.client('route53')
paginator = route53.get_paginator('list_resource_record_sets')
page = paginator.paginate(
HostedZoneId=zoneid,
PaginationConfig={
'MaxItems': 500,
'PageSize': 500
}
)
for i in page:
for record in i['ResourceRecordSets']:
if record['Type'] == 'CNAME':
a.extend(x['Value'] for x in record['ResourceRecords'])
elif record['Type'] == 'A':
a.append(record['Name'])
return aprint recordName -提供域名。但是如何将它包含在“a.extend(x‘’Value‘for x in record’‘ResourceRecords’)”行中呢?
发布于 2017-12-22 07:01:36
从示例响应on the docs中可以看出,对于任何资源记录都没有可用的Value密钥
{
'ResourceRecordSets': [
{
'Name': 'string',
'Type': 'SOA'|'A'|'TXT'|'NS'|'CNAME'|'MX'|'NAPTR'|'PTR'|'SRV'|'SPF'|'AAAA'|'CAA',
'SetIdentifier': 'string',
'Weight': 123,
'Region': 'us-east-1'|'us-east-2'|'us-west-1'|'us-west-2'|'ca-central-1'|'eu-west-1'|'eu-west-2'|'eu-west-3'|'eu-central-1'|'ap-southeast-1'|'ap-southeast-2'|'ap-northeast-1'|'ap-northeast-2'|'sa-east-1'|'cn-north-1'|'cn-northwest-1'|'ap-south-1',
'GeoLocation': {
'ContinentCode': 'string',
'CountryCode': 'string',
'SubdivisionCode': 'string'
},
'Failover': 'PRIMARY'|'SECONDARY',
'MultiValueAnswer': True|False,
'TTL': 123,
'ResourceRecords': [
{
'Value': 'string'
},
],
'AliasTarget': {
'HostedZoneId': 'string',
'DNSName': 'string',
'EvaluateTargetHealth': True|False
},
'HealthCheckId': 'string',
'TrafficPolicyInstanceId': 'string'
},
],
'IsTruncated': True|False,
'MaxItems': 'string',
'NextToken': 'string'
}我认为您只需要引用Name密钥:
名称(字符串) --
要对其执行操作的域的名称。
输入完全限定的域名,例如www.example.com。您可以选择包含尾随的点。如果省略尾随的圆点,Amazon Route 53仍假定您指定的域名是完全限定的。这意味着Amazon Route 53处理www.example.com (没有尾随点)和www.example.com。(带有尾随的圆点)相同。
https://stackoverflow.com/questions/47928448
复制相似问题