कैसे प्राप्त करने के लिए संसाधनों से सभी क्षेत्रों का उपयोग कर ResourceGroupsTaggingAPI

0

सवाल

मैं कोशिश कर रहा हूँ डाउनलोड करने के लिए सभी ARNs के साथ विशिष्ट टैग के साथ boto3 और ResourceGroupsTaggingAPI. मैं कर रहा हूँ छानने पर दो टैग, और 8 अलग अलग ARNs जब मैं मिलना चाहिए अधिक से अधिक 80 ARNs.

**संपादित करें:**मैं बाहर सोचा है कि यह की वजह से एक एपीआई सीमा है. दस्तावेज के अनुसार, एपीआई लाने के लिए अनुमति देता टैग क्षेत्र से आप वर्तमान में कर रहे हैं का उपयोग कर. वहाँ किसी भी तरह से लाने के लिए टैग सभी क्षेत्रों से?

import boto3
import csv


class TagEditor:
    
    def writeToCsv(self,writer, tag_list):
        for resource in tag_list:
            for tag in resource['Tags']:
                row = dict(
                    ResourceArn=resource['ResourceARN'], TagKey=tag['Key'], TagValue=tag['Value'])
                writer.writerow(row)
            
    
    def main(self):
        
        field_names = ['ResourceArn', 'TagKey', 'TagValue']
        s3 = boto3.client('s3')
        restag = boto3.client('resourcegroupstaggingapi')
        
        
        with open('/tmp/tags.csv', 'w') as csvfile:
            writer = csv.DictWriter(csvfile, quoting=csv.QUOTE_ALL,
                                    delimiter=',', dialect='excel', fieldnames=field_names)
            writer.writeheader()
            
            # Filter for tag1
            response_deployment = restag.get_resources(TagFilters=[{'Key':'tag1'}],ResourcesPerPage=100)
            self.writeToCsv(writer, response_deployment['ResourceTagMappingList'])
            
            while 'PaginationToken' in response_deployment and response_deployment['PaginationToken']:
                token = response_deployment['PaginationToken']
                response_deployment = restag.get_resources(TagFilters=[{'Key':'tag1'}], ResourcesPerPage=100, PaginationToken=token)
                self.writeToCsv(writer, response_deployment['ResourceTagMappingList'])
    
            # Filter for tag2
            response_deployment = restag.get_resources(TagFilters=[{'Key':'tag2'}],ResourcesPerPage=100)
            self.writeToCsv(writer, response_deployment['ResourceTagMappingList'])
            
            while 'PaginationToken' in response_deployment and response_deployment['PaginationToken']:
                token = response_deployment['PaginationToken']
                response_deployment = restag.get_resources(TagFilters=[{'Key':'tag2'}], ResourcesPerPage=100, PaginationToken=token)
                self.writeToCsv(writer, response_deployment['ResourceTagMappingList'])
        
        s3.upload_file('/tmp/tags.csv', Bucket = 'my-bucket', Key = 'tags.csv')
1

सबसे अच्छा जवाब

0

वजह यह है कि आप था TagFilters में पहली कॉल याद किया और उन्हें बाद में पृष्ठवार कॉल

पृष्ठवार कॉल शामिल करना चाहिए की एक ही सेट पैरामीटर सहित पृष्ठ पर अंक लगाना टोकन के लिए बाद में कॉल

शामिल हैं TagFilters=[{'Key':'tag1'}] में अपने get_resources कॉल के भीतर पाश के साथ पृष्ठ पर अंक लगाना टोकन

पर पुनरावृति प्रत्येक क्षेत्र और get_resources कॉल सभी क्षेत्रों के लिए

# List all regions
ec2_client = boto3.client('ec2')
regions = [region['RegionName'] for region in ec2_client.describe_regions()['Regions']]
2021-11-23 18:47:12

मैं अभी भी एक ही मुद्दे पर जब मैं का उपयोग response_deployment = restag.get_resources(TagFilters=[{'कुंजी':'tag1'}],ResourcesPerPage=100, PaginationToken=टोकन) में जबकि पाश. मैं अद्यतन कोड से ऊपर है.
Omega

संपादित करें: यह है क्योंकि केवल API रिटर्न संसाधनों के क्षेत्र में है कि वर्तमान में उपयोग में है । अब है कि बेकार है...
Omega

आह ठीक है, क्यों नहीं पर पुनरावृति क्षेत्रों और मिल-संसाधनों कॉल बारी बारी से. अद्यतन के जवाब के रूप में अच्छी तरह से
omuthu

अन्य भाषाओं में

यह पृष्ठ अन्य भाषाओं में है

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................

इस श्रेणी में लोकप्रिय

लोकप्रिय सवाल इस श्रेणी में