Как распечатать имя домена для route53 DNS

Я новичок в 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 a

печать записи [Имя] - дает доменное имя. Но как я могу включить его в "a.extend(x['Value'] для x в записи ['ResourceRecords'])" этой строки

1 ответ

Здесь нет 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, (с завершающей точкой) как идентичные.

Другие вопросы по тегам