我正在编写一个AWS Lambda Python 3.6函数,用作API网关中API的Lambda代理。在编写Lambda时,我正在调用辅助函数,如果出现错误,则会引发异常。 API Gateway并不是这样,因为它预期" body," "的StatusCode"和#34;标题"在Lambda的响应中,当Python中引发异常时,不提供这些键。
我想知道是否有可能在使用Lambda代理时提升我的自定义异常,以便我能够摆脱我所处的任何被调用者并从程序中流畅地返回,而无需检查来自的错误呼叫者中的被叫者。基本上,我想引发异常,提供我的状态代码,标题和正文,并完全从Lambda函数返回,并使用API网关识别错误。
答案 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)
:
callback(null, RESPONSE_NO_SUCCESS);
其中RESPONSE_NO_SUCCESS是这样的:
import json
return {
statusCode: 200,
body: json.dumps({YOUR_ERROR_HERE})
};
这应该可以正常工作,只需要查看回调在python中的工作原理