boto3 S3:get_object错误处理

问题描述:

使用Python boto3从S3获取对象时执行错误处理的最佳方式是什么?boto3 S3:get_object错误处理

我的方法:

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的错误代码检查。

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