इस लेख में, हम देखेंगे कि पायथन की Boto 3 लाइब्रेरी का उपयोग करके S3 से किसी ऑब्जेक्ट को कैसे हटाया जाए।
उदाहरण − S3 के बकेट_1/टेस्टफ़ोल्डर से test.zip हटाएं
इस समस्या को हल करने के लिए दृष्टिकोण/एल्गोरिदम
चरण 1 - अपवादों को संभालने के लिए boto3 और botocore अपवाद आयात करें।
चरण 2 - s3_files_path फ़ंक्शन में पैरामीटर है।
चरण 3 - सत्यापित करें कि s3_files_path को AWS प्रारूप में s3://bucket_name/key के रूप में पास किया गया है।
चरण 4 - boto3 लाइब्रेरी का उपयोग करके AWS सत्र बनाएं।
चरण 5 - S3 के लिए AWS संसाधन बनाएं।
चरण 6 - S3 पथ को विभाजित करें और रूट बकेट नाम और हटाए जाने वाले ऑब्जेक्ट पथ को अलग करने के लिए संचालन करें।
चरण 7 - अब, फ़ंक्शन का उपयोग करें delete_object और बकेट का नाम और हटाने के लिए कुंजी पास करें।
चरण 8 -ऑब्जेक्ट भी एक डिक्शनरी है जिसमें फाइल के सभी विवरण होते हैं। अब, LastModified प्राप्त करें प्रत्येक फ़ाइल का विवरण और दिए गए दिनांक टाइमस्टैम्प के साथ तुलना करें।
चरण 9 - फ़ाइल को हटाते समय कुछ गलत होने पर सामान्य अपवाद को संभालें।
उदाहरण
S3 से किसी ऑब्जेक्ट को हटाने के लिए निम्न कोड का उपयोग करें -
import boto3 from botocore.exceptions import ClientError def delete_objects_from_s3(s3_files_path): if 's3://' not in s3_files_path: raise Exception('Given path is not a valid s3 path.') session = boto3.session.Session(profile_name='saml') s3_resource = session.resource('s3') s3_tokens = s3_files_path.split('/') bucket_name = s3_tokens[2] object_path = "" filename = s3_tokens[len(s3_tokens) - 1] print('bucket_name: ' + bucket_name) if len(s3_tokens) > 4: for tokn in range(3, len(s3_tokens) - 1): object_path += s3_tokens[tokn] + "/" object_path += filename else: object_path += filename print('object: ' + object_path) try: result = s3_resource.meta.client.delete_object(Bucket=bucket_name, Key=object_path) except ClientError as e: raise Exception( "boto3 client error in delete_objects_from_s3 function: " + e.__str__()) except Exception as e: raise Exception( "Unexpected error in delete_objects_from_s3 function of s3 helper: " + e.__str__()) #delete test.zip print(delete_objects_from_s3("s3://Bucket_1/testfolder/test.zip")
आउटपुट
bucket_name: Bucket_1 object: testfolder/test.zip