boto.s3.key.Key
Об'єкт Boto 2 використовував 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()
безпосередньо, і потім обробити випадок помилки.