使用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是否是在此处使用的最佳异常(exception)。我知道有一个Boto3Error类,但我认为您不能像ClientError一样进行错误代码检查。

最佳答案

我认为您的方法就足够了。如果您可以将错误缩小到几个,则可以将其分解为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.

关于python - boto3 S3 : get_object error handling,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46858874/

10-13 07:04