इस लेख में, हम देखेंगे कि एडब्ल्यूएस गोंद में मौजूद सभी डेटाबेस के माध्यम से कैसे पेजेट करना है।
उदाहरण
समस्या कथन: boto3 . का उपयोग करें आपके खाते में बनाए गए एडब्ल्यूएस गोंद डेटा कैटलॉग से सभी डेटाबेस के माध्यम से पेजिनेट करने के लिए पायथन में पुस्तकालय
इस समस्या को हल करने के लिए दृष्टिकोण/एल्गोरिदम
-
चरण 1: आयात करें boto3 और बोटोकोर अपवादों को संभालने के लिए अपवाद।
-
चरण 2: अधिकतम_आइटम , पृष्ठ_आकार और शुरुआती_टोकन इस फ़ंक्शन के लिए पैरामीटर है।
-
अधिकतम_आइटम लौटने के लिए रिकॉर्ड की कुल संख्या को निरूपित करें। यदि उपलब्ध रिकॉर्ड की संख्या> max_items , फिर एक नेक्स्टटोकन फिर से पेजिनेशन के जवाब में प्रदान किया जाएगा।
-
पृष्ठ_आकार प्रत्येक पृष्ठ के आकार को दर्शाता है।
-
शुरुआती_टोकन पृष्ठांकित करने में मदद करता है, और यह NextToken . का उपयोग करता है पिछली प्रतिक्रिया से।
-
-
चरण 3: boto3 lib . का उपयोग करके AWS सत्र बनाएं . सुनिश्चित करें कि क्षेत्र_नाम डिफ़ॉल्ट प्रोफ़ाइल में उल्लेख किया गया है। यदि इसका उल्लेख नहीं है, तो स्पष्ट रूप से region_name . पास करें सत्र बनाते समय।
-
चरण 4: गोंद के लिए AWS क्लाइंट बनाएं।
-
चरण 5: एक पेजिनेटर बनाएं ऑब्जेक्ट जिसमें get_databases . का उपयोग करने वाले सभी क्रॉलर का विवरण होता है
-
चरण 6: पेजिनेट . को कॉल करें कार्य करें और max_items . पास करें , पृष्ठ_आकार और शुरुआती_टोकन पेजिनेशन कॉन्फिग के रूप में
-
चरण 7: यह max_size . के आधार पर रिकॉर्ड की संख्या लौटाता है और पृष्ठ_आकार ।
-
चरण 8: अगर पेजिंग करते समय कुछ गलत हो जाता है तो सामान्य अपवाद को हैंडल करें।
उदाहरण कोड
उपयोगकर्ता खाते में बनाए गए सभी क्रॉलर के माध्यम से पृष्ठांकित करने के लिए निम्न कोड का उपयोग करें -
import boto3 from botocore.exceptions import ClientError def paginate_through_databases(max_items=None:int,page_size=None:int, starting_token=None:string): session = boto3.session.Session() glue_client = session.client('glue') try: paginator = glue_client.get_paginator('get_databases') response = paginator.paginate(PaginationConfig={ 'MaxItems':max_items, 'PageSize':page_size, 'StartingToken':starting_token} ) return response except ClientError as e: raise Exception("boto3 client error in paginate_through_databases: " + e.__str__()) except Exception as e: raise Exception("Unexpected error in paginate_through_databases: " + e.__str__()) a = paginate_through_databases(2,5) print(*a)
आउटपुट
{'DatabaseList': [ {'Name': 'aurora_glue_catalog', 'CreateTime': datetime.datetime(2020, 11, 18, 14, 24, 46, tzinfo=tzlocal())}, {'Name': 'custdb', 'CreateTime': datetime.datetime(2020, 8, 31, 20, 30, 9, tzinfo=tzlocal())}], 'NextToken': 'eyJsYXN0RXZhbHVhdGVkS2V5Ijp7IkhBU0hfS0VZIjp7InMiOiJuLjc4MjI1ODQ4NTg0MSJ9LCJSQU5HRV9LRVkiOnsicyI6ImRldjEtZnJlYV9lZGxfZ2x1ZV9kYXRhYmFzZSJ9fSwiZXhwaXJhdGlvbiI6eyJzZWNvbmRzIjoxNjE3NDUwNDQxLCJuYW5vcyI6ODcwMDAwMDB9LCJzaGFyZWRDb250ZXh0IjpmYWxzZSwidGFnQ29udGV4dCI6ZmFsc2V9', 'ResponseMetadata': {'RequestId': '3e1c4f54-d573-4ba9-9948-832273ecca02', 'HTTPStatusCode': 200, 'HTTPHeaders': {'date': 'Fri, 02 Apr 2021 11:47:21 GMT', 'content-type': 'application/x-amz-json-1.1', 'content-length': '1617', 'connection': 'keep-alive', 'x-amzn-requestid': '3e1c4f54-d573-4ba9-9948-832273ecca02'}, 'RetryAttempts': 0}}