AWS Lambda Proxy引发异常

时间:2017-12-20 06:08:59

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

我正在编写一个AWS Lambda Python 3.6函数,用作API网关中API的Lambda代理。在编写Lambda时,我正在调用辅助函数,如果出现错误,则会引发异常。 API Gateway并不是这样,因为它预期" body," "的StatusCode"和#34;标题"在Lambda的响应中,当Python中引发异常时,不提供这些键。

我想知道是否有可能在使用Lambda代理时提升我的自定义异常,以便我能够摆脱我所处的任何被调用者并从程序中流畅地返回,而无需检查来自的错误呼叫者中的被叫者。基本上,我想引发异常,提供我的状态代码,标题和正文,并完全从Lambda函数返回,并使用API​​网关识别错误。

2 个答案:

答案 0 :(得分:4)

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

您可以通过捕获异常来实现此目的。

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'
            })
        }

答案 1 :(得分:0)

你可以在node.js中使用

callback(null, RESPONSE_NO_SUCCESS);

其中RESPONSE_NO_SUCCESS是这样的:

import json
return {
  statusCode: 200,
  body: json.dumps({YOUR_ERROR_HERE})
};

这应该可以正常工作,只需要查看回调在python中的工作原理