কম্পিউটার

AWS Glue-এ উপস্থিত S3 বাকেটের সমস্ত বস্তুর মাধ্যমে পেজিনেট করার জন্য Boto3 কীভাবে ব্যবহার করবেন


সমস্যা বিবৃতি: boto3 ব্যবহার করুন আপনার অ্যাকাউন্টে তৈরি করা AWS Glue Data Catalog থেকে S3 বাকেটের সমস্ত বস্তুর মাধ্যমে পেজিনেট করতে পাইথনে লাইব্রেরি

এই সমস্যা সমাধানের জন্য পদ্ধতি/অ্যালগরিদম

  • ধাপ 1: boto3 আমদানি করুন৷ এবং বোটোকোর ব্যতিক্রমগুলি পরিচালনা করার জন্য ব্যতিক্রম৷

  • ধাপ 2: সর্বোচ্চ_আইটেম , পৃষ্ঠা_আকার এবং স্টার্টিং_টোকেন এই ফাংশনের জন্য ঐচ্ছিক প্যারামিটার, যখন bucket_name প্রয়োজনীয় প্যারামিটার।

    • সর্বোচ্চ_আইটেম ফেরত দেওয়ার জন্য মোট রেকর্ড সংখ্যা নির্দেশ করুন। যদি উপলব্ধ রেকর্ডের সংখ্যা> সর্বোচ্চ_আইটেম , তারপর একটি NextToken পৃষ্ঠা সংখ্যা পুনঃসূচনা করার প্রতিক্রিয়াতে প্রদান করা হবে।

    • পৃষ্ঠা_আকার প্রতিটি পৃষ্ঠার আকার বোঝায়।

    • শুরু_টোকেন পেজিনেট করতে সাহায্য করে, এবং এটি পূর্ববর্তী প্রতিক্রিয়া থেকে শেষ কী ব্যবহার করে।

  • ধাপ 3: boto3 lib ব্যবহার করে একটি AWS সেশন তৈরি করুন . অঞ্চলের_নাম নিশ্চিত করুন ডিফল্ট প্রোফাইলে উল্লেখ করা আছে। যদি এটি উল্লেখ না থাকে, তাহলে স্পষ্টভাবে অঞ্চল_নাম পাস করুন সেশন তৈরি করার সময়।

  • পদক্ষেপ 4: S3 এর জন্য একটি AWS ক্লায়েন্ট তৈরি করুন।

  • ধাপ 5: একটি পেজিনেটর তৈরি করুন৷ অবজেক্ট যেটিতে list_objects ব্যবহার করে S3 বাকেটের অবজেক্ট সংস্করণের বিবরণ রয়েছে।

  • ধাপ 6: পেজিনেট ফাংশন কল করুন এবং সর্বোচ্চ_আইটেম পাস করুন , পৃষ্ঠা_আকার এবং স্টার্টিং_টোকেন প্যাজিনেশন কনফিগারেশন হিসেবে প্যারামিটার, যখন 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 Glue Security-এ উপস্থিত একটি নির্দিষ্ট নিরাপত্তা কনফিগারেশনের বিশদ বিবরণ পেতে Boto3 কীভাবে ব্যবহার করবেন?

  2. AWS গ্লু ডেটা ক্যাটালগে উপলব্ধ সমস্ত সংযোগের বিবরণ পেতে Boto3 কীভাবে ব্যবহার করবেন?

  3. AWS গ্লু ডেটা ক্যাটালগে উপলব্ধ সমস্ত শ্রেণীবিভাগের বিবরণ পেতে Boto3 কীভাবে ব্যবহার করবেন?

  4. AWS আঠালো থেকে একটি আঠালো কাজ মুছে ফেলার জন্য Boto3 কিভাবে ব্যবহার করবেন?