boto3 S3:get_object 错误处理

JHu*_*nnh 6 python error-handling amazon-s3 boto3

使用 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
Run Code Online (Sandbox Code Playgroud)

我不确定 ClientError 是否是此处使用的最佳异常。我知道有一个 Boto3Error 类,但我认为您不能像 ClientError 那样进行错误代码检查。

Man*_*ro1 7

我认为你的方法已经足够了。如果您可以将错误缩小到几个,则可以将其分解为if块,并进行相应的处理。

except ClientError as e:
    error_code = e.response["Error"]["Code"]
    if error_code == "AccessDenied":
         # do code
    elif error_code == "InvalidLocationConstraint":
         # do more code
Run Code Online (Sandbox Code Playgroud)

这只是一种实验方法。因为大多数错误响应都是 API 驱动的,我认为您不会直接在代码中的任何地方找到它们(即:doing except AccessDenied:)。您可以在此处找到Amazon S3 的所有错误响应。