python中的AWS lambda无一例外地失败



我编写了一个小型lambda函数,并将其连接到API网关。我添加了一个错误regex来匹配API网关中的.*Error.*和返回状态400。我面临的问题是,正则表达式似乎只有在lambda失败时才匹配,正如本线程所建议的那样。

我的lambda函数:

import logging
import boto3
logger = logging.getLogger()
logger.setLevel(logging.INFO)
def lambda_handler(event, context):
if int(event['event_id']) == 1:
return {
'statusCode': 200,
"status": "success"
}
elif int(event['event_id']) == 2:
return {
'statusCode': 400,
"status": "Error"
}
else:
raise Exception("Error")

看起来情况1运行良好,默认情况下返回状态200。对于event_id=3,它从API网关返回状态400(数据中包含堆栈跟踪,我希望避免(,但对于event_id=2,它返回状态200,数据中包含Error字符串。

如何在不引发异常的情况下将lambda标记为失败?

失败的Lambda意味着Lambda函数中有一些代码段无法执行。在当前代码中,只有第三个路径具有这样的代码段(人为生成的Exception(。

不可能在Lambda中执行所有代码段,但仍然失败。

若您想通过程序处理API网关返回状态代码,您必须使用Lambda集成。使用Lambda集成,您可能会返回如下响应:

{
"statusCode": "400",
body: json.dumps({ "error": "you messed up!" }),
headers: {
"Content-Type": "application/json",
}
}

你会得到400的API响应。

最新更新