2017-10-21 4 views
1

S3에서 Python boto3을 사용하여 개체를 가져올 때 오류 처리를 수행하는 가장 좋은 방법은 무엇입니까?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와 비슷한 오류 코드 검사를 수행 할 수 있다고는 생각하지 않습니다.

답변

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.