def handle_client_exception()

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