Я бы хотел, чтобы мои шаблоны ответов в API Gateway имели доступ к полной необработанной ошибке из лямбды. Я хотел бы отформатировать более удобный ответ для моего потребителя API, которому нужны переменные из выполняющейся лямбды. Без ручного перехвата его в коде и JSON его форматирования.
Тем не менее, лямбда автоматически переформатирует любые неперехваченные ошибки соответственно: {errorMessage, errorType, Trace}. Как описано в aws документах по node.js обработке лямбда-ошибок Так что, если моя исходная ошибка содержала множество других свойств, которые не были включены в errorMessage, они теряются и не могут быть доступны для ответа шаблон. Что ограничивает мою способность возвращать полезное тело ответа? Если я не поймаю ее и JSON не зафиксирую всю ошибку, чтобы она помещалась в errorMessage, но если я делаю это, зачем вообще использовать шаблоны ответов?
My Serverless.yml для контекста. Это 200 ответ. Это прекрасно работает, просто у error-response-template.yml нет полной оригинальной ошибки, только переформатированная лямбда-ошибка.
- http:
method: post
path: /api/users
integration: lambda
request:
schema:
application/json: ${file(src/schemas/newUser.json)}
response:
headers:
Content-Type: "'application/json'"
statusCodes:
201:
pattern: ''
200:
pattern: 'ErrorRegexGoesHere'
template:
application/json: ${file(src/errors/error-response-template.yml)} # JSON return object
На основе AWS документов на API шаблоны ответов шлюза ясно, что я не пропускаю ни одну переменную $.
Рассматривая документы по обработке лямбда-ошибок aws nodejs , в ней не описывается ни один способ или альтернатива, чтобы предотвратить переформатирование необработанных ошибок.