কম্পিউটার

AWS রিসোর্স ব্যবহার করে শেষ পরিবর্তিত তারিখের উপর ভিত্তি করে S3 থেকে ফাইলগুলির একটি তালিকা পেতে পাইথনে Boto3 লাইব্রেরি কীভাবে ব্যবহার করবেন?


সমস্যা বিবৃতি − S3 থেকে ফাইলগুলির একটি তালিকা পেতে পাইথনে boto3 লাইব্রেরি ব্যবহার করুন, সেগুলি একটি নির্দিষ্ট তারিখের টাইমস্ট্যাম্পের পরে সংশোধন করা হয়৷

উদাহরণ − 2021-01-21 13:19:56.986445+00:00 এর পরে পরিবর্তন করা হলে S3-এর Bucket_1/testfolder থেকে test.zip তালিকাভুক্ত করুন।

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

ধাপ 1 − ব্যতিক্রমগুলি পরিচালনা করতে boto3 এবং botocore ব্যতিক্রমগুলি আমদানি করুন৷

ধাপ 2s3_path এবং last_modified_timestamp ফাংশনের দুটি প্যারামিটার হল list_all_objects_based_on_last_modified. "last_modified_timestamp" "2021-01-22 13:19:56.986445+00:00" ফর্ম্যাটে হওয়া উচিত। ডিফল্টরূপে, boto3 ভৌগলিক অবস্থান নির্বিশেষে UTC টাইমজোন বোঝে।

ধাপ 3 − যাচাই করুন s3_path AWS ফরম্যাটে s3://bucket_name/key হিসাবে পাস করা হয়েছে।

পদক্ষেপ 4৷ - boto3 লাইব্রেরি ব্যবহার করে একটি AWS সেশন তৈরি করুন।

ধাপ 5 - S3 এর জন্য একটি AWS রিসোর্স তৈরি করুন।

ধাপ 6 - এখন ফাংশন list_objects ব্যবহার করে প্রদত্ত উপসর্গের সমস্ত অবজেক্ট তালিকাভুক্ত করুন এবং ব্যতিক্রমগুলি পরিচালনা করুন, যদি থাকে।

পদক্ষেপ 7 − উপরের ফাংশনের ফলাফল হল একটি অভিধান এবং এতে 'বিষয়বস্তু' নামে একটি কী-তে ফাইল-স্তরের সমস্ত তথ্য রয়েছে। এখন একটি বস্তুর মধ্যে বালতি-স্তরের বিবরণ বের করুন।

ধাপ 8 − এখন, অবজেক্ট একটি ফাইলের সমস্ত বিবরণ সহ একটি অভিধান। এখন, LastModified আনুন প্রতিটি ফাইলের বিশদ বিবরণ এবং প্রদত্ত তারিখের টাইমস্ট্যাম্পের সাথে তুলনা করুন।

ধাপ 9 − যদি শেষ সংশোধন করা হয় প্রদত্ত টাইমস্ট্যাম্পের চেয়ে বড়, সম্পূর্ণ ফাইলের নাম সংরক্ষণ করুন, অন্যথায় এটি উপেক্ষা করুন৷

পদক্ষেপ 10 − প্রদত্ত তারিখের টাইমস্ট্যাম্পের পরে পরিবর্তিত ফাইলগুলির তালিকা ফেরত দিন৷

উদাহরণ

নিম্নলিখিত কোডটি শেষ পরিবর্তিত তারিখের টাইমস্ট্যাম্পের উপর ভিত্তি করে AWS S3 থেকে ফাইলগুলির তালিকা পায় -

 boto3from botocore.exceptions import ClientErrordef list_all_objects_based_on_last_modified(s3_files_path,last_modified_timestamp):যদি s3_files_path-এ 's3://' না থাকে:ব্যতিক্রম বাড়ান('প্রদত্ত পাথ' একটি bo3 paths =S val3ses) সেশন নয়। () s3_resource =session.resource('s3') bucket_token =s3_files_path.split('/') bucket =bucket_token[2] folder_path =bucket_token[3:] উপসর্গ ="" ফোল্ডার_পথে পাথের জন্য:উপসর্গ =উপসর্গ + পাথ + '/' চেষ্টা করুন:result =s3_resource.meta.client.list_objects(Bucket=bucket, Prefix=prefix) ব্যতীত ClientError যেমন e:raise Exception( "boto3 ক্লায়েন্ট এরর in list_all_objects_based_on_last_modified function:" + e.__str__()) ব্যতিক্রম ছাড়া e:raise Exception( "s3 সাহায্যকারীর list_all_objects_based_on_last_modifiedfunction-এ অপ্রত্যাশিত ত্রুটি:" + e.__str__()) filtered_file_names =[] ফলাফলে অবজেক্টের জন্য ['Contents']:যদি str(obj["LastModified">(str=)) last_modified_timestamp):fu ll_s3_file ="s3://" + bucket + "/" + obj["Key"] filtered_file_names.append(full_s3_file) রিটার্ন filtered_file_names# পরীক্ষার জন্য একটি টাইমস্ট্যাম্প দিন। , "2021-01-21 13:19:56.986445+00:00"))#একটি টাইমস্ট্যাম্প দিন সেই প্রিন্টের পরে কোনো ফাইল পরিবর্তিত হয় না(list_all_objects_based_on_last_modified("s3://Bucket_1/testfolder" , "1-321) 19:56.986445+00:00"))

আউটপুট

# test.zip আনার জন্য একটি টাইমস্ট্যাম্প দিন 
  1. পাইথনে Boto3 লাইব্রেরি ব্যবহার করে কিভাবে একটি AWS সেশন তৈরি করবেন?

  2. পাইথন কিভাবে তালিকার শেষ উপাদান পেতে হয়

  3. কিভাবে পাইথনে একটি তালিকার শেষ উপাদান পেতে?

  4. কিভাবে একটি পাইথন অভিধান থেকে সমস্ত মান একটি তালিকা পেতে?