0
votes

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)

1
When creating the client object, can you try using us-east-1 as the region instead of us-east-2 and see if that yields the results?krishna_mee2004
@krishna_mee2004 seems setting us-east-1 works, do hosted zones reside here?Dilep Dev
If you want to speed things up, please also consider using a ResourceTypeFilter: docs.aws.amazon.com/resourcegroupstagging/latest/APIReference/…Florian Holzhauer

1 Answers

0
votes

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)