in src/aws/common.py [0:0]
def handle_client_exception(func):
"""Handle Boto3 errors, can be used as a decorator."""
@functools.wraps(func)
def wrapper(*args, **kwargs):
try:
return func(*args, **kwargs)
except ParamValidationError as validation_error:
error = BadRequestError(
func.__name__,
"Error validating parameter. Failed with exception: {0}".format(str(validation_error)),
)
except BotoCoreError as e:
error = AWSClientError(func.__name__, str(e))
except ClientError as e:
# add request id
message = e.response["Error"]["Message"]
error_code = e.response["Error"]["Code"]
if error_code in AWSClientError.ErrorCode.throttling_error_codes():
error = LimitExceededError(func.__name__, message, error_code)
elif error_code == AWSClientError.ErrorCode.VALIDATION_ERROR:
error = BadRequestError(func.__name__, message, error_code)
else:
error = AWSClientError(func.__name__, message, error_code)
LOGGER.error("Encountered error when performing boto3 call in %s: %s", error.function_name, error.message)
raise error
return wrapper