首页 > 解决方案 > 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 作业失败?

标签: pythonexceptionlambdaboto3

解决方案


要获取自定义错误消息作为 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


推荐阅读