2016-06-30 1 views
0

У меня есть имя конечной точки http - HE. Эта конечная точка «HE» связана с лямбда-функцией «L».Как преобразовать возвращаемое исключение из функции AWS Java Lambda в шлюз API?

Так HE -> L

На какой-то ситуации 'L' Exception возврата в следующем формате:

{ "ErrorMessage": "Имя John Doe является недействительным Исключение произошло ...", "errorType": "java.lang.Exception", "stackTrace": [ "example.Hello.handler (Hello.java:9)", "sun.reflect.NativeMethodAccessorImpl.invoke0 (собственный метод)", "sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)", "sun.reflect.DelegatingMethodAccesso rImpl.invoke (DelegatingMethodAccessorImpl.java:43)», "java.lang.reflect.Method.invoke (Method.java:497)" ] }

И то же самое, возвращаемый 'ОН' как есть ,

Как я могу использовать Integration Response (AWS API шлюза) на 'HE', поэтому он должен отображаться только следующее:

{ "ErrorMessage":. «Имя John Doe является недействительным Исключение произошло ... " }

ответ

1

Я не уверен, что правильно понял вашу настройку. Я предполагаю, что ваш API-шлюз вызывает вашу функцию Lambda и что ваша функция Lambda возвращает строку, которую вы дали как объект ошибки. В этом случае ...

Добавить новый метод ответа на ваш метод. Установите HTTP-статус ответа метода на код состояния HTTP, который вы хотите вернуть, возможно, 400 для этого случая.

Добавить новый ответ интеграции на ваш метод.

Установите «Lambda Error Regex» ответа интеграции на регулярное выражение, которое однозначно идентифицирует ошибку. "Недействительное имя.. *" Должно работать в этом случае.

Установите «статус ответа метода» на статус HTTP ответа метода (400 в моем примере).

Hit save. Разверните ответ интеграции. Разверните «Шаблоны сопоставления тел». Нажмите «Добавить шаблон сопоставления». Установите Content-Type в «application/json» (или любой другой тип контента, который вы хотите). Установите флажок.

В редакторе поле шаблона отображения, добавить шаблон отображения, как это ...

#set($inputRoot = $input.path('$')) 
 
{"errorMessage" : "$input.path('$.errorMessage')"}

Если я неправильно понял ваш настройки и ваш API шлюз звонит НТТР конечную точку, то подход аналогичен, но терминология некоторых терминов меняется.

Смежные вопросы