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

วิธีการใช้ฟังก์ชั่นบริกรสำหรับ bucket_not_exists โดยใช้ Boto3 และ AWS Client


คำชี้แจงปัญหา − ใช้ไลบรารี boto3 ใน Python เพื่อตรวจสอบว่าไม่มีที่ฝากข้อมูลโดยใช้ฟังก์ชันบริกรหรือไม่ ตัวอย่างเช่น ใช้บริกรเพื่อตรวจสอบว่าไม่มี Bucket_2 ใน S3 หรือไม่

แนวทาง/อัลกอริทึมในการแก้ปัญหานี้

ขั้นตอนที่ 1 - นำเข้าข้อยกเว้น boto3 และ botocore เพื่อจัดการกับข้อยกเว้น

ขั้นตอนที่ 2 − ใช้ bucket_name เป็นพารามิเตอร์ในฟังก์ชัน

ขั้นตอนที่ 3 − สร้างเซสชัน AWS โดยใช้ไลบรารี boto3

ขั้นตอนที่ 4 − สร้างไคลเอนต์ AWS สำหรับ S3

ขั้นตอนที่ 5 − ตอนนี้สร้างวัตถุรอสำหรับ bucket_not_exists โดยใช้ get_waiter ฟังก์ชัน

ขั้นตอนที่ 6 − ตอนนี้ ใช้ รอ วัตถุที่จะตรวจสอบว่าไม่มีที่ฝากข้อมูล โดยค่าเริ่มต้น ระบบจะตรวจสอบทุกๆ 5 วินาทีจนกว่าจะถึงสถานะสำเร็จ สถานะที่สำเร็จที่นี่หมายความว่าไม่ควรมีที่ฝากข้อมูลใน S3 ข้อผิดพลาดถูกส่งกลับหลังจาก 20 ตรวจสอบล้มเหลว อย่างไรก็ตาม ผู้ใช้สามารถกำหนดเวลาการสำรวจและความพยายามสูงสุดได้

ขั้นตอนที่ 7 − ส่งคืน None

ขั้นตอนที่ 8 − จัดการข้อยกเว้นทั่วไปหากมีข้อผิดพลาดขณะตรวจสอบที่ฝากข้อมูล

ตัวอย่าง

ใช้รหัสต่อไปนี้เพื่อใช้บริกรเพื่อตรวจสอบว่า bucket_not_exists หรือไม่ -

นำเข้า boto3 จาก botocore.exceptions นำเข้า ClientErrordef use_waiters_check_bucket_not_exists(bucket_name):session =boto3.session.Session() s3_client =session.client('s3') ลอง:waiter =s3_client.get_waiter('bucket wait_not_exists') Bucket=bucket_name, WaiterConfig={ 'Delay':2, 'MaxAttempts':5}) พิมพ์ ('ไม่มีที่เก็บข้อมูล:' + bucket_name) ยกเว้น ClientError เป็น e:ยกข้อยกเว้น ( "ข้อผิดพลาดของไคลเอ็นต์ boto3 ใน use_waiters_check_bucket_not_exists:" + e. __str__()) ยกเว้นข้อยกเว้น e:ยกข้อยกเว้น ( "ข้อผิดพลาดที่ไม่คาดคิดใน use_waiters_check_bucket_not_exists:" + e.__str__())print(use_waiters_check_bucket_not_exists("Bucket_2"))print(use_waiters_check_bucket_not_exists) 

ผลลัพธ์

ไม่มีที่เก็บข้อมูล:Bucket_2Nonebotocore.exceptions.WaiterError:Waiter BucketNotExists ล้มเหลว:Maxattempts เกิน"ข้อผิดพลาดที่ไม่คาดคิดใน use_waiters_check_bucket_not_exists:" +e.__str__()) ข้อยกเว้น:ข้อผิดพลาดที่ไม่คาดคิดในการใช้งาน use_waiters_check_bucket_not_exists สูงสุด:Wai> 

สำหรับ Bucket_2 ผลลัพธ์คือคำสั่งพิมพ์และไม่มี เนื่องจากไม่มีการตอบกลับใดๆ จึงพิมพ์ว่าไม่มี

สำหรับ Bucket_1 ผลลัพธ์จะเป็นข้อยกเว้น เนื่องจากที่เก็บข้อมูลนี้มีอยู่แม้ว่าจะพยายามตรวจสอบถึงขีดสุดแล้วก็ตาม

ยกเว้น สามารถอ่านได้ว่าความพยายามสูงสุดเกิน