Search code examples
amazon-web-servicesboto3

How to list AWS tagged Hosted Zones using ResourceGroupsTaggingAPI boto3


I am trying to retrieve all the AWS resources tagged using the boto3 ResourceGroupsTaggingAPI, but I can't seem to retrieve the Hosted Zones which have been tagged.

tagFilters = [{'Key': 'tagA', 'Values': 'a'}, {'Key': 'tagB', 'Values': 'b'}]
client = boto3.client('resourcegroupstaggingapi', region_name = 'us-east-2')

paginator = self.client.get_paginator('get_resources')
page_list = paginator.paginate(TagFilters = tagFilters)

# filter and get iterable object arn
# Refer filtering with JMESPath => http://jmespath.org/
arns = page_list.search("ResourceTagMappingList[*].ResourceARN")

for arn in arns:
    print(arn)

I noticed through the Tag Editor in the AWS Console (which I guess is using the ResourceGroupsTaggingAPI) when the region is set to All the tagged Hosted zones can be retrieved (since global) while when a specific region is set the tagged Hosted Zones are not shown in the results. Is there a way to set the boto3 client region to all?, or is there another way to do this?

I have already tried

client = boto3.client('resourcegroupstaggingapi')

which returns an empty result (https://console.aws.amazon.com/resource-groups/tag-editor/find-resources?region=us-east-1)


Solution

  • You need to iterate it over all regions,

    ec2 = boto3.client('ec2')
    region_response = ec2.describe_regions()
    #print('Regions:', region_response['Regions'])
    for this_region_info in region_response['Regions']:
      region = this_region_info["RegionName"]
      my_config = Config(
        region_name = region
      )
      client = boto3.client('resourcegroupstaggingapi', config=my_config)