Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

วิธีใช้ Boto3 Library ใน Python ลบ Object จาก S3 โดยใช้ AWS Resource


ในบทความนี้ เราจะดูวิธีลบ Object จาก S3 โดยใช้ Boto3 Library ของ Python

ตัวอย่าง

ลบ test.zip จาก Bucket_1/testfolder ของ S3

ขั้นตอนการแก้ปัญหา

  1. ขั้นตอนที่ 1 – นำเข้า boto3 และ botocore.exceptions เพื่อจัดการข้อยกเว้น
  2. ขั้นตอนที่ 2 – s3_files_path เป็นพารามิเตอร์ในฟังก์ชัน
  3. ขั้นตอนที่ 3 – ตรวจสอบว่า s3_files_path ถูกส่งในรูปแบบ AWS คือ s3://bucket_name/key
  4. ขั้นตอนที่ 4 – สร้าง AWS Session ด้วย Boto3
  5. ขั้นตอนที่ 5 – สร้าง AWS Resource สำหรับ S3
  6. ขั้นตอนที่ 6 – แยก S3 Path และดำเนินการเพื่อแยก Root Bucket Name และ Object Path ที่จะลบ
  7. ขั้นตอนที่ 7 – ใช้ฟังก์ชัน delete_object ส่ง Bucket Name และ Key เพื่อลบ
  8. ขั้นตอนที่ 8 – Object เป็น Dictionary ที่มีรายละเอียดทั้งหมดของไฟล์ ตอนนี้ ดึงรายละเอียด LastModified ของแต่ละไฟล์และเปรียบเทียบกับ Date Timestamp ที่กำหนด
  9. ขั้นตอนที่ 9 – จัดการข้อยกเว้นทั่วไปหากเกิดข้อผิดพลาดขณะลบไฟล์

ตัวอย่างโค้ด

ใช้โค้ดต่อไปนี้เพื่อลบ Object จาก 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