কম্পিউটার

AWS রিসোর্স ব্যবহার করে S3 এ একটি বস্তু আপলোড করতে পাইথনে Boto3 লাইব্রেরি কীভাবে ব্যবহার করবেন?


সমস্যা বিবৃতি − S3 এ একটি বস্তু আপলোড করতে পাইথনে Boto3 লাইব্রেরি ব্যবহার করুন। উদাহরণস্বরূপ, S3 এর Bucket_1 এ test.zip কিভাবে আপলোড করবেন।

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

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

ধাপ 2 - পাথলিব থেকে , পাথ থেকে ফাইলের নাম পুনরুদ্ধার করতে PurePosixPath আমদানি করুন

ধাপ 3s3_path এবং ফাইলপথ upload_object_into_s3 ফাংশনের দুটি প্যারামিটার

পদক্ষেপ 4৷ − s3_path যাচাই করুন AWS ফরম্যাটে s3://bucket_name/key হিসাবে পাস করা হয় এবং ফাইলপথ স্থানীয় পথ হিসাবে C://users/filename

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

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

পদক্ষেপ 7 − S3 পাথকে বিভক্ত করুন এবং রুট বাকেটের নাম এবং কী পাথ আলাদা করতে অপারেশন সম্পাদন করুন

ধাপ 8 − সম্পূর্ণ ফাইলপথের জন্য ফাইলের নাম পান এবং S3 কী পাথে যোগ করুন।

ধাপ 9 − এখন upload_fileobj ফাংশনটি ব্যবহার করুন S3 এ স্থানীয় ফাইল আপলোড করতে।

ধাপ 10wait_until_exists ফাংশনটি ব্যবহার করুন অপারেশন শেষ না হওয়া পর্যন্ত অপেক্ষা করুন৷

ধাপ 11 − ফাইল আপলোড করা হয়েছে কিনা তা যাচাই করতে প্রতিক্রিয়া কোডের উপর ভিত্তি করে ব্যতিক্রমটি পরিচালনা করুন৷

ধাপ 12 − ফাইল আপলোড করার সময় কিছু ভুল হলে জেনেরিক ব্যতিক্রমটি পরিচালনা করুন

উদাহরণ

AWS S3 -

-এ একটি ফাইল আপলোড করতে নিম্নলিখিত কোডটি ব্যবহার করুন৷
import boto3
from botocore.exceptions import ClientError
from pathlib import PurePosixPath

def upload_object_into_s3(s3_path, filepath):

   if 's3://' in filepath:
      print('SourcePath is not a valid path.' + filepath)
      raise Exception('SourcePath is not a valid path.')
   elif s3_path.find('s3://') == -1:
      print('DestinationPath is not a s3 path.' + s3_path)
      raise Exception('DestinationPath is not a valid path.')
   session = boto3.session.Session()
   s3_resource = session.resource('s3')
   tokens = s3_path.split('/')
   target_key = ""
   if len(tokens) > 3:
      for tokn in range(3, len(tokens)):
         if tokn == 3:
            target_key += tokens[tokn]
         else:
            target_key += "/" + tokens[tokn]
   target_bucket_name = tokens[2]

   file_name = PurePosixPath(filepath).name
   if target_key != '':
      target_key.strip()
      key_path = target_key + "/" + file_name
   else:
      key_path = file_name
   print(("key_path: " + key_path, 'target_bucket: ' + target_bucket_name))

   try:
      # uploading Entity from local path
      with open(filepath, "rb") as file:
      s3_resource.meta.client.upload_fileobj(file, target_bucket_name, key_path)
      try:
         s3_resource.Object(target_bucket_name, key_path).wait_until_exists()
         file.close()
      except ClientError as error:
         error_code = int(error.response['Error']['Code'])
         if error_code == 412 or error_code == 304:
            print("Object didn't Upload Successfully ", target_bucket_name)
            raise error
      return "Object Uploaded Successfully"
   except Exception as error:
      print("Error in upload object function of s3 helper: " + error.__str__())
      raise error
print(upload_object_into_s3('s3://Bucket_1/testfolder', 'c://test.zip'))

আউটপুট

key_path:/testfolder/test.zip, target_bucket: Bucket_1
Object Uploaded Successfully

  1. পাইথন ব্যবহার করে একটি ফাইল বিদ্যমান কিনা তা আমি কিভাবে পরীক্ষা করব?

  2. পাইথন ব্যবহার করে মাইএসকিউএলে তারিখ অবজেক্ট কীভাবে সন্নিবেশ করা যায়?

  3. পাইথন ব্যবহার করে ফাইল এক্সটেনশন কিভাবে বের করবেন?

  4. পাইথন ব্যবহার করে পুনরাবৃত্তিমূলকভাবে একাধিক ফাইলের নাম পরিবর্তন করবেন?