python - AWS Lambda 代理引发异常

标签 python amazon-web-services exception aws-lambda aws-api-gateway

我正在编写一个 AWS Lambda Python 3.6 函数,用作 API Gateway 中我的 API 上的 Lambda 代理。在编写 Lambda 时,我调用一个辅助函数,如果出现错误,则会引发异常。 API Gateway 不喜欢这样,因为它期望 Lambda 的响应中包含“body”、“statusCode”和“headers”,而当 Python 中引发异常时,不会提供这些键。

我想知道是否可以在考虑到 Lambda 代理的情况下引发我的自定义异常,以便我可以摆脱我所在的任何被调用者并从程序中流畅地返回,而不必检查来自被调用者的错误调用者。基本上,我想引发异常,提供状态代码、 header 和正文,并通过 API Gateway 识别错误从 Lambda 函数完全返回。

最佳答案

如果您使用 Lambda 代理集成,则您有责任返回正确的响应,无论是成功还是异常。

您可以通过捕获异常来做到这一点。

def handler(event, context):
    try:
        return {
            'statusCode': 200,
            'body': json.dumps({
                'hello': 'world'
            })
        }
    except BadRequestError:
        return {
            'statusCode': 400,
            'body': json.dumps({
                'error': 'Bad Request Error'
            })
        }
    except:
        return {
            'statusCode': 500,
            'body': json.dumps({
                'error': 'Internal Server Error'
            })
        }

关于python - AWS Lambda 代理引发异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47899753/

相关文章:

异常处理 : Contract vs Exceptional approach

Python stream.tell() 返回不正确的位置

python - 使用 float 和整数解析 python 字符串

python - 是否可以使用 Python 元类反向继承?

amazon-web-services - 用于 lambda 函数中 api 键的 aws appsync 环境变量

amazon-web-services - AWS 负载均衡器 502

php - 为什么PHP的 “trigger_error”返回true?

Python psycopg2 cursor.fetchall() 返回空列表但 cursor.rowcount > 1

amazon-web-services - 使用Cloudfront时如何找到真正的主机?

android - "Conversion to Dalvik format failed with error 1"更新到 ADT 14 后