কম্পিউটার

Boto3 এবং AWS ক্লায়েন্ট ব্যবহার করে S3 বাকেটের বিজ্ঞপ্তি কনফিগারেশনের বিশদ কীভাবে পাবেন?


সমস্যা বিবৃতি − একটি S3 বাকেটের বিজ্ঞপ্তি কনফিগারেশন পেতে পাইথনে boto3 লাইব্রেরি ব্যবহার করুন। উদাহরণস্বরূপ, S3-এ Bucket_1-এর বিজ্ঞপ্তি কনফিগারেশনের বিবরণ খুঁজুন।

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

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

ধাপ 2 − ফাংশনে প্যারামিটার হিসাবে bucket_name ব্যবহার করুন।

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

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

ধাপ 5 − এখন get_bucket_notification_configuration ফাংশনটি ব্যবহার করুন এবং বালতির নাম পাস করুন।

ধাপ 6 - এটি S3 সম্বন্ধে বিশদ বিবরণ সম্বলিত অভিধান ফেরত দেয়। যদি বিজ্ঞপ্তি সেট করা না থাকে, তাহলে এটি NONE ফেরত দেয়

পদক্ষেপ 7 − ফাইলটি মুছে ফেলার সময় কিছু ভুল হলে জেনেরিক ব্যতিক্রমটি পরিচালনা করুন৷

উদাহরণ

বিজ্ঞপ্তি কনফিগারেশন বিশদ পেতে নিম্নলিখিত কোড ব্যবহার করুন −

import boto3
from botocore.exceptions import ClientError

def get_bucket_notificationconfiguration_of_s3(bucket_name):
   session = boto3.session.Session()
   s3_client = session.client('s3')
   try:
      result = s3_client.get_bucket_notification_configuration(Bucket=bucket_name,)
   except ClientError as e:
      raise Exception( "boto3 client error in get_bucket_notificationconfiguration_of_s3: " + e.__str__())
   except Exception as e:
      raise Exception( "Unexpected error in get_bucket_notificationconfiguration_of_s3 function: " + e.__str__())
return result

print(get_bucket_notificationconfiguration_of_s3("Bucket_1"))

আউটপুট

{
   'TopicConfigurations': [
      {
         'Id': 'string',
         'TopicArn': 'string',
         'Events': [

                    's3:ReducedRedundancyLostObject'|'s3:ObjectCreated:*'|'s3:ObjectCreated: Put'|'s3:ObjectCreated:Post'|'s3:ObjectCreated:Copy'|'s3:ObjectCreated:C
                    ompleteMultipartUpload'|'s3:ObjectRemoved:*'|'s3:ObjectRemoved:Delete'|'
                    s3:ObjectRemoved:DeleteMarkerCreated'|'s3:ObjectRestore:*'|'s3:ObjectRes
                    tore:Post'|'s3:ObjectRestore:Completed'|'s3:Replication:*'|'s3:Replicati
                    on:OperationFailedReplication'|'s3:Replication:OperationNotTracked'|'s3:
                    Replication:OperationMissedThreshold'|'s3:Replication:OperationReplicate
                    dAfterThreshold',
         ],
         'Filter': {
            'Key': {
               'FilterRules': [
                  {
                     'Name': 'prefix'|'suffix',
                     'Value': 'string'
                  },
               ]
            }
         }
      },
   ],
   'QueueConfigurations': [
      {
         'Id': 'string',
         'QueueArn': 'string',
         'Events': [

                    's3:ReducedRedundancyLostObject'|'s3:ObjectCreated:*'|'s3:ObjectCreated:
                    Put'|'s3:ObjectCreated:Post'|'s3:ObjectCreated:Copy'|'s3:ObjectCreated:C
                    ompleteMultipartUpload'|'s3:ObjectRemoved:*'|'s3:ObjectRemoved:Delete'|'
                    s3:ObjectRemoved:DeleteMarkerCreated'|'s3:ObjectRestore:*'|'s3:ObjectRes
                    tore:Post'|'s3:ObjectRestore:Completed'|'s3:Replication:*'|'s3:Replicati
                    on:OperationFailedReplication'|'s3:Replication:OperationNotTracked'|'s3:
                    Replication:OperationMissedThreshold'|'s3:Replication:OperationReplicate
                    dAfterThreshold',
         ],
         'Filter': {
            'Key': {
               'FilterRules': [
                  {
                     'Name': 'prefix'|'suffix',
                     'Value': 'string'
                  },
               ]
            }
         }
      },
   ],
   'LambdaFunctionConfigurations': [
      {
         'Id': 'string',
         'LambdaFunctionArn': 'string',
         'Events': [

                    's3:ReducedRedundancyLostObject'|'s3:ObjectCreated:*'|'s3:ObjectCreated:
                    Put'|'s3:ObjectCreated:Post'|'s3:ObjectCreated:Copy'|'s3:ObjectCreated:C
                    ompleteMultipartUpload'|'s3:ObjectRemoved:*'|'s3:ObjectRemoved:Delete'|'
                    s3:ObjectRemoved:DeleteMarkerCreated'|'s3:ObjectRestore:*'|'s3:ObjectRes
                    tore:Post'|'s3:ObjectRestore:Completed'|'s3:Replication:*'|'s3:Replicati
                    on:OperationFailedReplication'|'s3:Replication:OperationNotTracked'|'s3:
                    Replication:OperationMissedThreshold'|'s3:Replication:OperationReplicate
                    dAfterThreshold',
         ],
         'Filter': {
            'Key': {
               'FilterRules': [
                  {
                     'Name': 'prefix'|'suffix',
                     'Value': 'string'
                  },
               ]
            }
         }
      },
   ]
}

দ্রষ্টব্য: এই আউটপুট বালতির সেটিংস/অনুমতিগুলির উপর নির্ভর করে। কিছু সেটিংস/অনুমতি ডিফল্ট বা সেট না থাকলে এটি ফলাফল বাদ দেয়। একইভাবে, যদি বালতির জন্য বিজ্ঞপ্তি সেট করা না থাকে তবে এটি NONE প্রদান করে।


  1. Boto3 এবং AWS ক্লায়েন্ট ব্যবহার করে একটি S3 বালতির বালতির অবস্থান কীভাবে পাবেন?

  2. Boto3 এবং AWS ক্লায়েন্ট ব্যবহার করে একটি S3 বালতির জীবনচক্র কিভাবে পেতে হয়?

  3. S3 তে একটি রুট বাকেট বিদ্যমান কিনা তা নির্ধারণ করতে Boto3 এবং AWS ক্লায়েন্ট কীভাবে ব্যবহার করবেন?

  4. AWS ক্লায়েন্ট ব্যবহার করে S3 এ উপস্থিত বালতিগুলির একটি তালিকা পেতে Boto3 কীভাবে ব্যবহার করবেন?