Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> Python

AWS ग्लू में मौजूद S3 बकेट की सभी वस्तुओं के माध्यम से पृष्ठांकित करने के लिए Boto3 का उपयोग कैसे करें

समस्या कथन: boto3 . का उपयोग करें आपके खाते में बनाए गए AWS ग्लू डेटा कैटलॉग से S3 बकेट के सभी ऑब्जेक्ट के माध्यम से पेजिनेट करने के लिए Python में लाइब्रेरी

इस समस्या को हल करने के लिए दृष्टिकोण/एल्गोरिदम

  • चरण 1: आयात करें boto3 और बोटोकोर अपवादों को संभालने के लिए अपवाद।

  • चरण 2: अधिकतम_आइटम , पृष्ठ_आकार और शुरुआती_टोकन इस फ़ंक्शन के लिए वैकल्पिक पैरामीटर हैं, जबकि बाल्टी_नाम आवश्यक पैरामीटर है।

    • अधिकतम_आइटम लौटने के लिए रिकॉर्ड की कुल संख्या को निरूपित करें। यदि उपलब्ध रिकॉर्ड की संख्या> max_items , फिर एक नेक्स्टटोकन पेजिनेशन फिर से शुरू करने के जवाब में प्रदान किया जाएगा।

    • पृष्ठ_आकार प्रत्येक पृष्ठ के आकार को दर्शाता है।

    • शुरुआती_टोकन पृष्ठांकित करने में मदद करता है, और यह पिछली प्रतिक्रिया से अंतिम कुंजी का उपयोग करता है।

  • चरण 3: boto3 lib . का उपयोग करके AWS सत्र बनाएं . सुनिश्चित करें कि क्षेत्र_नाम डिफ़ॉल्ट प्रोफ़ाइल में उल्लेख किया गया है। यदि इसका उल्लेख नहीं है, तो स्पष्ट रूप से region_name . पास करें सत्र बनाते समय।

  • चरण 4: S3 के लिए AWS क्लाइंट बनाएं।

  • चरण 5: एक पेजिनेटर बनाएं ऑब्जेक्ट जिसमें list_objects का उपयोग करके S3 बकेट के ऑब्जेक्ट संस्करणों का विवरण होता है।

  • चरण 6: पेजिनेट फ़ंक्शन को कॉल करें और max_items . पास करें , पृष्ठ_आकार और शुरुआती_टोकन PaginationConfig . के रूप में पैरामीटर, जबकि bucket_name बाल्टी पैरामीटर के रूप में।

  • चरण 7: यह max_size . के आधार पर रिकॉर्ड की संख्या लौटाता है और पृष्ठ_आकार

  • चरण 8: अगर पेजिंग करते समय कुछ गलत हो जाता है तो सामान्य अपवाद को हैंडल करें।

उदाहरण कोड

उपयोगकर्ता खाते में बनाए गए S3 बकेट के सभी ऑब्जेक्ट के माध्यम से पृष्ठांकित करने के लिए निम्न कोड का उपयोग करें -

import boto3
from botocore.exceptions import ClientError

def paginate_through_all_objects_s3_bucket(bucket_name, max_items=None:int,page_size=None:int, starting_token=None:string):
   session = boto3.session.Session()
   s3_client = session.client('s3')
   try:
   paginator = s3_client.get_paginator('list_objects')
      response = paginator.paginate(Bucket=bucket_name, PaginationConfig={
         'MaxItems':max_items,
         'PageSize':page_size,
         'StartingToken':starting_token}
      )
   return response
   except ClientError as e:
      raise Exception("boto3 client error in paginate_through_all_objects_s3_bucket: " + e.__str__())
   except Exception as e:
      raise Exception("Unexpected error in paginate_through_all_objects_s3_bucket: " + e.__str__())

#1st Run
a = paginate_through_all_objects_s3_bucket('s3-test-bucket',2,5)
print(*a)
#2nd Run
for items in a:
next_token = items['Contents'][max_items-1]['Key']
b = paginate_through_all_objects_s3_bucket('s3-test-bucket',2,5,next_token)
print(*b)

आउटपुट

#1st Run
{'ResponseMetadata': {'RequestId': '5AE5VF7RK', 'HostId': **************', 'HTTPStatusCode': 200, 'HTTPHeaders': {'x-amz-id-2': **************', 'x-amz-request-id': '5AE5VF7RK', 'date': 'Sat, 03 Apr 2021 07:33:28 GMT', 'x-amz-bucket-region': 'us-east-1', 'content-type': 'application/xml', 'transfer-encoding': 'chunked', 'server': 'AmazonS3'}, 'RetryAttempts': 0}, 'IsTruncated': True, 'Marker': '',
'Contents': [{'Key': 'analytics-s3i/param.json', 'LastModified': datetime.datetime(2020, 10, 29, 19, 50, 55, tzinfo=tzutc()), 'ETag': '"e6f6b8e02"', 'Size': 1554, 'StorageClass': 'STANDARD', 'Owner': {'DisplayName': 'AWS.Development', 'ID': '92************************0'}}, {'Key': 'analytics-s3i/params.json', 'LastModified': datetime.datetime(2021, 3, 10, 20, 10, 47, tzinfo=tzutc()), 'ETag': '"22a4bf70c1ed2612"', 'Size': 1756, 'StorageClass': 'STANDARD', 'Owner': {'DisplayName': 'AWS.Development', 'ID': '92************************************************'}}], 'Name': 's3-test-bucket', 'Prefix': '', 'MaxKeys': 5, 'EncodingType': 'url', 'CommonPrefixes': None}

#2nd Run
{'ResponseMetadata': {'RequestId': '5AEAWX', 'HostId': 'Uc********************************', 'HTTPStatusCode': 200, 'HTTPHeaders': {'x-amz-id-2': *****************************', 'x-amz-request-id': '5AEAWX', 'date': 'Sat, 03 Apr 2021 07:33:28 GMT', 'x-amz-bucket-region': 'us-east-1', 'content-type': 'application/xml', 'transfer-encoding': 'chunked', 'server': 'AmazonS3'}, 'RetryAttempts': 0}, 'IsTruncated': True, 'Marker': 'analytics-s3i/params.json',
'Contents': [{'Key': 'analytics-s3i/template.json', 'LastModified': datetime.datetime(2020, 10, 29, 19, 50, 55, tzinfo=tzutc()), 'ETag': '"3af411f"', 'Size': 21334, 'StorageClass': 'STANDARD', 'Owner': {'DisplayName': 'AWS.Development', 'ID': '92************************'}}, {'Key': 'analytics-s3i2/param.json', 'LastModified': datetime.datetime(2020, 11, 20, 17, 32, 45, tzinfo=tzutc()), 'ETag': '"04c29cf86888f99"', 'Size': 1695, 'StorageClass': 'STANDARD', 'Owner': {'DisplayName': 'AWS.Development', 'ID': '92************************'}}], 'Name': 's3-test-bucket', 'Prefix': '', 'MaxKeys': 5, 'EncodingType': 'url', 'CommonPrefixes': None}

  1. AWS ग्लू डेटा कैटलॉग में उपलब्ध सभी कनेक्शन का विवरण प्राप्त करने के लिए Boto3 का उपयोग कैसे करें?

    समस्या का विवरण - एडब्ल्यूएस ग्लू डेटा कैटलॉग में मौजूद सभी कनेक्शन का विवरण प्राप्त करने के लिए पायथन में boto3 लाइब्रेरी का उपयोग करें। उदाहरण - सभी कनेक्शन परिभाषा का विवरण प्राप्त करें। इस समस्या को हल करने के लिए दृष्टिकोण/एल्गोरिदम चरण 1 - अपवादों को संभालने के लिए boto3 और botocore अपवाद आय

  1. AWS ग्लू डेटा कैटलॉग में उपलब्ध सभी क्लासिफायर का विवरण प्राप्त करने के लिए Boto3 का उपयोग कैसे करें?

    समस्या कथन:एडब्ल्यूएस ग्लू डेटा कैटलॉग में मौजूद सभी क्लासिफायर का विवरण प्राप्त करने के लिए पायथन में boto3 लाइब्रेरी का उपयोग करें। उदाहरण के लिए, उपयोगकर्ता के खाते से सभी क्लासिफायर का विवरण प्राप्त करें। इस समस्या को हल करने के लिए दृष्टिकोण/एल्गोरिदम चरण 1 - अपवादों को संभालने के लिए boto3 और

  1. एडब्ल्यूएस गोंद से गोंद नौकरी को हटाने के लिए Boto3 का उपयोग कैसे करें?

    समस्या का विवरण − अपने खाते में बनाए गए ग्लू जॉब को हटाने के लिए पायथन में boto3 लाइब्रेरी का उपयोग करें। उदाहरण − आपके खाते में बनाए गए ग्लू जॉब transfer_from_s3 को मिटा दें। इस समस्या को हल करने के लिए दृष्टिकोण/एल्गोरिदम चरण 1 - अपवादों को संभालने के लिए boto3 और botocore अपवाद आयात करें। चरण