boto3 S3:获取对象错误处理

7

在使用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那样进行错误代码检查。

1个回答

8

我认为你的方法已经足够了。如果你能将错误缩小到几个,你可以将其拆分成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:)。你可以在这里找到Amazon S3的所有错误响应。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接