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