Boto 2 के boto.s3.key.Key
ऑब्जेक्ट में एक exists
विधि होती थी जो यह जांचती थी कि कुंजी S3 में HEAD अनुरोध करके और परिणाम को देखते हुए अस्तित्व में है, लेकिन ऐसा लगता है कि अब मौजूद नहीं है। आपको इसे स्वयं करना होगा:
import boto3
import botocore
s3 = boto3.resource('s3')
try:
s3.Object('my-bucket', 'dootdoot.jpg').load()
except botocore.exceptions.ClientError as e:
if e.response['Error']['Code'] == "404":
# The object does not exist.
...
else:
# Something else has gone wrong.
raise
else:
# The object does exist.
...
load()
एक एकल कुंजी के लिए HEAD अनुरोध करता है, जो तेज है, भले ही प्रश्न में वस्तु बड़ी हो या आपकी बाल्टी में कई वस्तुएं हों।
बेशक, आप जाँच सकते हैं कि क्या वस्तु मौजूद है क्योंकि आप इसका उपयोग करने की योजना बना रहे हैं। अगर ऐसा है, तो आप बस के बारे में भूल सकते हैं load()
और एक get()
या download_file()
सीधे कर सकते हैं, फिर वहां त्रुटि मामले को संभालें।