Для того, чтобы отправить пользовательский код ошибки AWS API GW вы должны использовать шаблон отображения ответа в ответ интеграции. В основном вы определяете регулярное выражение для каждого кода состояния, который вы хотите вернуть из API GW.
Шаги:
- Определить метод ответа для каждого кода состояния AWS Documentation
- Определение интеграции ответа RegEx для каждого отображения состояния на правильный метод реагирования AWS Documentation
Использование этой конфигурации HTTP код возврата возвращенный API GW клиенту, соответствует правильному выражению в «selectionPattern».
Наконец, я настоятельно рекомендую использовать интерфейс API GW для обработки этих конфигураций, Serverless - очень хорошая структура.
Использование Servereless вы можете определить шаблон следующим образом (бессерверной 0,5 сниппет):
myResponseTemplate:
application/json;charset=UTF-8: |
#set ($errorMessageObj = $util.parseJson($input.path('$.errorMessage'))) {
"status" : $errorMessageObj.status,
"error":{
"error_message":"$errorMessageObj.error.message",
"details":"$errorMessageObj.error.custom_message"
}
}
responsesValues:
'202':
selectionPattern: '.*"status": 202.*'
statusCode: '202'
responseParameters: {}
responseModels: {}
responseTemplates: '$${myResponseTemplate}'
'400':
selectionPattern: '.*"status": 400.*'
statusCode: '400'
responseParameters: {}
responseModels: {}
responseTemplates: '$${myResponseTemplate}'
Тогда просто возвращает объект JSON из вашего лямбда, как в следующем питона сниппета (вы можете использовать аналогичный подход в nodejs):
def handler(event, context):
# Your function code ...
response = {
'status':400,
'error':{
'error_message' : 'your message',
'details' : 'your details'
}
}
return response
Я надеюсь, что это помогает.
G.
http://stackoverflow.com/a/31371862/1428388 Полезно? – jbird