Правильная обработка ошибки разбора запроса в AWS Lambda?(Джава) - PullRequest
0 голосов
/ 10 мая 2019

Я изучаю AWS Lambda для проекта, над которым я работаю на Java.Одним из требований является то, что мы возвращаем большинство ошибок, используя наш пользовательский тип ответа (вместо того, чтобы использовать обработку лямбда-ошибок AWS по умолчанию), но мне интересно, можно ли было бы также генерировать исключение после записи в выходной поток,Мне это кажется странным, но это то, что я имею до сих пор:

@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);
}

Все, что я пытаюсь сделать, - это уловить любые проблемы десериализации при считывании значения из запроса и ответить этой ошибкой.ответ, если там есть исключение.В противном случае продолжите и обработайте запрос и получите «нормальный» ответ.Но это кажется немного странным / грязным для меня.

Есть какие-нибудь предложения о том, как лучше справиться с этой ситуацией?

Для вызывающего абонента, вызывающего лямбду, они получают только тот ответ, который мы отправили?Или они также получают лямбда-вывод по умолчанию, брошенный в поток (из исключения)?(Мы просто хотим, чтобы исключение отображалось в журналах, а не возвращалось клиенту.)

1 Ответ

0 голосов
/ 14 мая 2019

Исходя из этой документации , кажется, что рекомендуемый подход для них состоит в том, чтобы включить детали в полезную нагрузку ошибки и включить их как часть выданного исключения.

Таким образом,исключение по-прежнему выдается, и Lambda может правильно пометить ответ как ошибку, вместо того чтобы вручную обрабатывать индикаторы успеха / неудачи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...