python - Boto3 Python Lambda自定义返回错误
问题描述
有没有办法以 HTTP 响应的形式自定义 Boto3 Lambda 异常消息并在发送强制失败的同时返回它?
这是一个例子
except Exception as e:
print ('\nException : failed to invoke jobs.')
print ('Error : ' + str(e) + '\n')
return {
'statusCode': 500,
'body': 'Exception : failed to invoke EMR jobs'
}
因此,现在返回了自定义消息,但 Lambda 仍然返回作业成功而不是失败。
为了发送作业失败,异常块可以更改为 -
except Exception as e:
print ('\nException : failed to invoke jobs.')
print ('Error : ' + str(e) + '\n')
raise
但是现在自定义错误消息已经丢失。
有没有办法结合自定义响应错误消息并使 Lambda 作业失败?
解决方案
要获取自定义错误消息作为 lambda 的输出,您需要使用自定义错误消息实际引发异常。
except Exception as e:
custom_error = '\nException : failed to invoke jobs.\n'
custom_error += 'Error : ' + str(e) + '\n'
raise Exception(custom_error)
您将收到如下错误消息:
{
"errorMessage": "Exception : failed to invoke jobs. ....",
"stackTrace": [
[
"/var/task/lambda_function.py",
3,
"my_always_fails_handler",
"raise Exception(custom_error)"
]
],
"errorType": "Exception"
}
您可以在 AWS 文档中找到更多信息,您可以在此处找到Python exceptions in lambdas
推荐阅读
- asp.net-core - DataTable 不显示数据
- install4j - 使用 install4j 直接将组件安装到 /opt
- c# - 缓慢构建 librealsense libusb
- amazon-web-services - 使用 aws wafv2 create-web-acl 时出错
- java - Junit 5 的消费者驱动合同
- react-native - React native正确的方法来取消组件内部的promis确实安装和优化组件
- r - 根据R中的多个条件(时间差和因子)按组折叠行
- javascript - 在 Javascript 中修改此关键字
- wpf - OxyPlot WPF 工具提示和十字线颜色
- html - html/css 页面在移动版中未以全尺寸显示