【发布时间】:2021-01-22 05:31:53
【问题描述】:
我编写了一个小型 lambda 函数并将其连接到 API 网关。我添加了一个错误正则表达式来匹配 .*Error.* 并在 API 网关中返回状态 400。我面临的问题是,正则表达式似乎只有在 lambda 失败时才匹配,as this thread suggests。
我的 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 Gateway 返回状态 400(数据中包含堆栈跟踪,我想避免这种情况),但使用 event_id=2 它返回状态 200 以及数据中的 Error 字符串。
如何在不引发异常的情况下将 lambda 标记为失败?
【问题讨论】:
-
您不能人为地将 lambda 标记为失败。函数以任何方式干净地返回,都被认为是成功的。
-
@Marcin 谢谢。有没有办法让 api 网关不返回状态 200 而不会在 lambda 代码中引发异常?
标签: python amazon-web-services aws-lambda aws-api-gateway