catching exceptions from boto3

0

I'm coding a script to upload data to s3 and I'm wondering how I know what exceptions to catch. I've seen the documentation here (https://boto3.amazonaws.com/v1/documentation/api/latest/guide/error-handling.html), but now I'm getting an botocore.exceptions.EndpointConnectionError. How do I know I am catching all the exceptions for boto3 that I need to catch? Please don't tell me it's trial and error.

질문됨 2년 전5260회 조회
2개 답변
1
수락된 답변

The S3 API guide provides all possible error responses thrown by the S3 service. Additionally, the Python package aws-error-utils can streamline some of the error handling in boto3.

lurch
답변함 2년 전
  • Thanks. I'll try and reproduce the problem with that aws_error_utils package being used. I'll see if that helps. Thanks.

1

You could try to catch ClientError and then parse the error response, for example,

import boto3, botocore.exceptions

s3 = boto3.client('s3')
try:
    s3.get_object(Bucket='some-bucket', Key='some key')
except botocore.exceptions.ClientError as error:
    if error.response['Error']['Code'] == 'NoSuchKey':
        print('No such object')
    else: # Unknown exception
        print(error.response)
RoB
답변함 2년 전
  • Oh. Would that ClientError under botocore.exceptions catch a EndpointConnectionError? This job runs for a day or two so it takes a while to reproduce.

  • @jschwar313 You can generate a list of the statically defined botocore exceptions using the following code (taken from boto3 docs

    import botocore.exceptions
    
    for key, value in sorted(botocore.exceptions.__dict__.items()):
        if isinstance(value, type):
            print(key)
    

로그인하지 않았습니다. 로그인해야 답변을 게시할 수 있습니다.

좋은 답변은 질문에 명확하게 답하고 건설적인 피드백을 제공하며 질문자의 전문적인 성장을 장려합니다.

질문 답변하기에 대한 가이드라인

관련 콘텐츠