使用Python boto3从S3获取对象时进行错误处理的最佳方法是什么?
我的方法:
from botocore.exceptions import ClientError
import boto3
s3_client = boto3.client('s3')
try:
s3_object = s3_client.get_object("MY_BUCKET", "MY_KEY")
except ClientError, e:
error_code = e.response["Error"]["Code"]
# do error code checks here
我不确定ClientError是否是此处使用的最佳例外。我知道有一个Boto3Error类,但我认为你不能像ClientError那样进行错误代码检查。
答案 0 :(得分:0)
我认为你的方法已经足够了。如果您可以将错误范围缩小到几个,则可以将其分解为if
块,并进行相应处理。
except ClientError as e:
error_code = e.response["Error"]["Code"]
if error_code == "AccessDenied":
# do code
elif error_code == "InvalidLocationConstraint":
# do more code
这只是一种实验方法。因为大多数错误响应是由API驱动的,所以我认为您不会直接在代码中找到它们(即:执行except AccessDenied:
)。您可以找到所有error responses for Amazon S3 here.