AWS Lambda Proxy引发异常

问题描述 投票:2回答:2

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

我想知道是否有可能在使用Lambda代理时提高我的自定义异常,以便我可以突破我所处的任何被调用者并从程序中流畅地返回,而无需在调用者中检查来自被调用者的错误。基本上,我想提出一个异常,提供我的状态代码,标题和正文,并完全从Lambda函数返回API Gateway识别错误。

python amazon-web-services exception aws-lambda aws-api-gateway
2个回答
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'
            })
        }

0
投票

在node.js中你可以使用:

callback(null, RESPONSE_NO_SUCCESS);

其中RESPONSE_NO_SUCCESS是这样的:

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

这应该工作,你只需要查看回调如何在python中工作

© www.soinside.com 2019 - 2024. All rights reserved.