इस लेख में, हम देखेंगे कि AWS Glue में मौजूद सभी क्रॉलर्स के माध्यम से पेजिनेट करने के लिए boto3 का उपयोग कैसे करें।
उदाहरण
आपके खाते में बनाए गए AWS Glue डेटा कैटलॉग से सभी क्रॉलर्स के माध्यम से पेजिनेट करें।
समस्या विवरण: अपने खाते में बनाए गए AWS Glue डेटा कैटलॉग से सभी क्रॉलर्स के माध्यम से पेजिनेट करने के लिए पायथन में boto3 लाइब्रेरी का उपयोग करें।
इस समस्या को हल करने का दृष्टिकोण/एल्गोरिदम
चरण 1: अपवादों को संभालने के लिए boto3 और botocore एक्सेप्शन इम्पोर्ट करें।
चरण 2: max_items, page_size और starting_token इस फ़ंक्शन के पैरामीटर हैं।
max_items वापस किए जाने वाले कुल रिकॉर्ड की संख्या को दर्शाता है। यदि उपलब्ध रिकॉर्ड की संख्या max_items से अधिक है, तो पेजिनेशन फिर से शुरू करने के लिए रिस्पांस में एक NextToken प्रदान किया जाएगा।
page_size प्रत्येक पेज के आकार को दर्शाता है।
Starting_token पेजिनेट करने में मदद करता है, और पिछले रिस्पांस से NextToken का उपयोग करता है।
चरण 3: boto3 लाइब्रेरी का उपयोग करके AWS सत्र बनाएं। सुनिश्चित करें कि डिफ़ॉल्ट प्रोफ़ाइल में region_name का उल्लेख है। यदि नहीं है, तो सत्र बनाते समय region_name को स्पष्ट रूप से पास करें।
चरण 4: glue के लिए AWS क्लाइंट बनाएं।
चरण 5: get_crawlers का उपयोग करके सभी क्रॉलर्स का विवरण रखने वाला एक पेजिनेटर ऑब्जेक्ट बनाएं।
चरण 6: paginate फ़ंक्शन को कॉल करें और max_items, page_size और starting_token को PaginationConfig पैरामीटर के रूप में पास करें।
चरण 7: यह max_size और page_size के आधार पर रिकॉर्ड की संख्या वापस करता है।
चरण 8: पेजिनेट करते समय यदि कुछ गलत हुआ तो सामान्य अपवाद को संभालें।
उदाहरण कोड
उपयोगकर्ता खाते में बनाए गए सभी क्रॉलर्स के माध्यम से पेजिनेट करने के लिए निम्नलिखित कोड का उपयोग करें:
import boto3
from botocore.exceptions import ClientError
def paginate_through_crawlers(max_items=None, page_size=None, starting_token=None):
session = boto3.session.Session()
glue_client = session.client('glue')
try:
paginator = glue_client.get_paginator('get_crawlers')
response = paginator.paginate(PaginationConfig={
'MaxItems': max_items,
'PageSize': page_size,
'StartingToken': starting_token
})
return response
except ClientError as e:
raise Exception("paginate_through_crawlers में boto3 क्लाइंट त्रुटि: " + e.__str__())
except Exception as e:
raise Exception("paginate_through_crawlers में अप्रत्याशित त्रुटि: " + e.__str__())
# पहली बार चलाएं
a = paginate_through_crawlers(3, 5)
print(*a)
# दूसरी बार चलाएं
for items in a:
next_token = items['NextToken']
b = paginate_through_crawlers(3, 5, next_token)
आउटपुट
# पहली बार
{'Crawlers': [{'Name': 'DailyTest_v1.01', 'Role': 'ds-dev', ...}, ...], 'NextToken': 'crawlr-wells', ...}
# दूसरी बार
{'Crawlers': [{'Name': 'crwlr-cw-etf', 'Role': 'dev-ds-glue-role', ...}, ...], 'NextToken': 'discovery_rep', ...}