【问题标题】:Proper handling of request parsing error in AWS Lambda? (Java)正确处理 AWS Lambda 中的请求解析错误? (爪哇)
【发布时间】:2019-05-15 01:30:43
【问题描述】:

我正在为我正在使用 Java 开展的一个项目学习 AWS Lambda。要求之一是我们使用自定义响应类型(而不是使用默认的 AWS Lambda 错误处理)返回大多数错误,但我想知道在写入输出流之后是否也可以抛出异常.对我来说似乎很奇怪,但这是我目前所拥有的:

@Override
public void handleRequest(final InputStream inputStream, 
    final OutputStream outputStream, 
    final Context context) {

  ABCRequest request;
  ABCResponse response;

  try {
      request = this.mapper.readValue(requestStream, ABCRequest.class);
  } catch (final IOException e) {
      response = createResponse(..."error", etc);
      writeResponseToOutput(response, outputStream); //writes the response to the output stream
      throw new SomeCustomException("...", e);
  }

  response = handle(request);
  writeResponseToOutput(response, outputStream);
}

我要做的就是从从请求中读取值来捕获任何反序列化问题,并在出现异常时以该错误响应进行响应。否则继续处理请求并获得“正常”响应。但这对我来说似乎有点奇怪/混乱。

关于如何更好地处理这种情况有什么建议吗?

对于调用 Lambda 的调用者,他们是否只得到我们发送的响应输出?或者他们是否也将默认的 Lambda 输出扔到流中(来自异常)? (我们只是希望异常显示在日志中,而不是返回给客户端。)

【问题讨论】:

    标签: aws-lambda


    【解决方案1】:

    基于this documentation,似乎推荐的方法是将详细信息包含在错误有效负载中,并将其作为抛出异常的一部分。

    这样,异常仍然被抛出,并且 Lambda 可以正确地将响应标记为错误,而不必手动处理成功/失败指示符。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-28
      • 1970-01-01
      • 1970-01-01
      • 2021-01-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多