এই আর্টিকেলে আমরা দেখব কিভাবে AWS Resource-এ থাকা S3-এ থেকে অবজেক্টের সকল ভার্সনের তালিকা পাওয়া যায়।
উদাহরণ
S3-র Bucket_1/testfolder থেকে test.zip-এর সকল ভার্সন লিস্ট আউট করা।
সমস্যা: পাইথনে boto3 লাইব্রেরি ব্যবহার করে S3-এ থেকে অবজেক্টের সকল ভার্সনের তালিকা পাওয়া।
পদ্ধতি/অ্যালগরিদম
ধাপ ১: boto3 এবং botocore এক্সেপশন ইম্পোর্ট করুন এক্সেপশন হ্যান্ডল করার জন্য।
ধাপ ২: bucket_name আবশ্যিক প্যারামিটার।
ধাপ ৩: boto3 লাইব্রেরি ব্যবহার করে AWS সেশন তৈরি করুন।
ধাপ ৪: S3-এর জন্য AWS ক্লায়েন্ট তৈরি করুন।
ধাপ ৫: এখন, দেয়া বাকেটের অবজেক্টের সকল ভার্সন list_object_versions ফাংশন ব্যবহার করে লিস্ট আউট করুন এবং এক্সেপশন হ্যান্ডল করুন।
ধাপ ৬: উপরের ফাংশনের রেজাল্ট একটি ডিকশনারি যা দেয়া বাকেটের অবজেক্টের সকল ভার্সন ধারণ করে।
ধাপ ৭: অবজেক্টের সকল ভার্সনের তালিকা রিটার্ন করুন।
উদাহরণ কোড
AWS S3-এ থেকে অবজেক্টের সকল ভার্সনের তালিকা পেতে নিচের কোডটি ব্যবহার করুন:
import boto3
from botocore.exceptions import ClientError
def list_all_objects_version(bucket_name, prefix_name):
session = boto3.session.Session()
s3_client = session.client('s3')
try:
result = s3_client.list_object_versions(Bucket=bucket_name, Prefix=prefix_name)
except ClientError as e:
raise Exception("boto3 client error in list_all_objects_version function: " + e.__str__())
except Exception as e:
raise Exception("Unexpected error in list_all_objects_version function of s3 helper: " + e.__str__())
return result
print(list_all_objects_version("Bucket_1", "testfolder"))আউটপুট
{'ResponseMetadata': {'RequestId': 'H4VAGM3YP6', 'HostId': ***********, 'HTTPStatusCode': 200, 'HTTPHeaders': {'x-amz-id-2': ***************, 'x-amz-request-id': 'H4VAGM3YP6', 'date': 'Sat, 03 Apr 2021 08:04:08 GMT', 'content-type': 'application/xml', 'transfer-encoding': 'chunked', 'server': 'AmazonS3'}, 'RetryAttempts': 0}, 'IsTruncated': False, 'KeyMarker': '', 'VersionIdMarker': '', 'Versions': [{'ETag': '"705e2e674b04ca71"', 'Size': 1773, 'StorageClass': 'STANDARD', 'Key': 'testfolder/test.zip', 'VersionId': 'null', 'IsLatest': True, 'LastModified': datetime.datetime(2020, 12, 18, 14, 13, 18, tzinfo=tzutc()), 'Owner': {'DisplayName': 'AWS.Development', 'ID': '928*******************************}}], 'Name': 'Bucket_1', 'Prefix': 'testfolder', 'MaxKeys': 1000, 'EncodingType': 'url'}