কম্পিউটার টিউটোরিয়াল

Boto3 ব্যবহার করে AWS Glue-এ থাকা S3 বাকেটের মাল্টিপার্ট আপলোড অবজেক্টগুলো পেজিনেট করা


সমস্যা: পাইথনে boto3 লাইব্রেরি ব্যবহার করে AWS Glue Data Catalog-এ থাকা S3 বাকেট থেকে মাল্টিপার্ট আপলোড অবজেক্টগুলো পেজিনেট করা।

পদ্ধতি/অ্যালগরিদম

  • ধাপ ১: boto3 এবং botocore এক্সেপশন ইম্পোর্ট করুন এক্সেপশন হ্যান্ডল করার জন্য।

  • ধাপ ২: prefix_name, max_items, page_size এবং starting_token এই ফাংশনের জন্য অপশনাল প্যারামিটার, তবে bucket_name আবশ্যিক।

    • Prefix_name হলো নির্দিষ্ট সাব-ফোল্ডার যেখানে ইউজার পেজিনেট করতে চায়।

    • max_items নির্দেশ করে মোট কতগুলো রেকর্ড রিটার্ন করতে হবে। যদি উপলব্ধ রেকর্ড max_items-এর চেয়ে বেশি হয়, তবে পেজিনেশন রিজিউম করার জন্য রেসপন্সে NextToken দেওয়া হবে।

    • page_size প্রতিটি পেজের সাইজ নির্দেশ করে।

  • starting_token পেজিনেশনে সাহায্য করে এবং এটি পূর্বের রেসপন্স থেকে Marker ব্যবহার করে।

  • ধাপ ৩: boto3 লাইব্রেরি ব্যবহার করে AWS সেশন তৈরি করুন। নিশ্চিত করুন region_name ডিফল্ট প্রোফাইলে আছে। না থাকলে সেশন তৈরি করার সময় সিদ্ধা region_name পাস করুন।

  • ধাপ ৪: S3-এর জন্য AWS ক্লায়েন্ট তৈরি করুন।

  • ধাপ ৫: list_multipart_uploads ব্যবহার করে S3 বাকেটের অবজেক্ট ভার্সনগুলোর ডিটেইলস ধারণকারী একটি paginator অবজেক্ট তৈরি করুন।

  • ধাপ ৬: paginate ফাংশন কল করুন এবং max_items, page_size এবং starting_token কে PaginationConfig প্যারামিটার হিসেবে, bucket_name কে Bucket প্যারামিটার হিসেবে এবং prefix_name কে Prefix হিসেবে পাস করুন।

  • ধাপ ৭: এটি max_size এবং page_size অনুযায়ী রেকর্ডের সংখ্যা রিটার্ন করে।

  • ধাপ ৮: পেজিনেশনের সময় যদি কোনো সমস্যা হয় তবে জেনেরিক এক্সেপশন হ্যান্ডল করুন।

উদাহরণ কোড

ইউজার অ্যাকাউন্টে তৈরি S3 বাকেটের মাল্টিপার্ট আপলোড পেজিনেট করতে নিচের কোডটি ব্যবহার করুন:

import boto3
from botocore.exceptions import ClientError

def paginate_through_multipart_upload_s3_bucket(bucket_name, prefix_name=None, max_items=None, page_size=None, starting_token=None):
    session = boto3.session.Session()
    s3_client = session.client('s3')
    try:
        paginator = s3_client.get_paginator('list_multipart_uploads')
        response = paginator.paginate(Bucket=bucket_name, Prefix=prefix_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_multipart_upload_s3_bucket: " + e.__str__())
    except Exception as e:
        raise Exception("Unexpected error in paginate_through_multipart_upload_s3_bucket: " + e.__str__())

a = paginate_through_multipart_upload_s3_bucket('s3-test-bucket', 'testfolder', 2, 5)
print(*a)

আউটপুট

{'ResponseMetadata': {'RequestId': 'YA9CGTAAX', 'HostId': '8dqJW******************', 'HTTPStatusCode': 200, 'HTTPHeaders': {'x-amz-id-2': '8dqJW*********************', 'x-amz-request-id': 'YA9CGTAAX', 'date': 'Sat, 03 Apr 2021 08:16:05 GMT', 'content-type': 'application/xml', 'transfer-encoding': 'chunked', 'server': 'AmazonS3'}, 'RetryAttempts': 0}, 'Bucket': 's3-test-bucket', 'KeyMarker': '', 'UploadIdMarker': '', 'NextKeyMarker': '', 'Prefix': 'testfolder', 'NextUploadIdMarker': '', 'MaxUploads': 5, 'IsTruncated': False, 'Uploads': [{'UploadId': 'YADF**************LK25', 'Key': 'testfolder/testfilemultiupload.csv', 'Intiated': datetime(2021,1,2), 'StorageClass': 'STANDARD', 'Owner': {'DisplayName': 'AmazonServicesJob', 'Id': '********************'}}, 'CommonPrefixes': None}

  1. Boto3 ব্যবহার করে AWS Glue ডেটা ক্যাটালগে ক্রলার বন্ধ করা

  2. Boto3 ব্যবহার করে AWS Glue Security-এ থাকা সব সিকিউরিটি কনফিগারেশনের ডিটেইলস পাওয়া

  3. Boto3 ব্যবহার করে AWS Glue Security-এ নির্দিষ্ট সিকিউরিটি কনফিগারেশনের ডিটেইলস পাওয়া

  4. Boto3 ব্যবহার করে AWS Glue থেকে একটি Glue Job ডিলিট করা