正确处理AWS Lambda中的请求解析错误? (Java)

时间:2019-05-10 17:22:18

标签: aws-lambda

我正在为我正在使用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输出(从异常中)抛出到流中? (我们只希望异常显示在日志中,而不是返回给客户端。)

1 个答案:

答案 0 :(得分:0)

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

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