0

Я создал простую лямбда-функцию, имеющую следующий код.Ошибки обработки шаблонов в шлюзе API Amazon и AWS Lambda

exports.handler = (event, context, callback) => { 
    const operation = event.body.operation; 
    console.log("operation = ", operation) 
    switch (operation) { 
     case 'add': callback(null, 'post method'); 
      break; 
     case 'add1': callback(null, { 
      status: 0, 
      errorType: "InternalServerError", 
      errorCode: "001", 
      errorMessage: "post method error." 
     } 
     ); 
     default: callback(null, 'Hello from Lambda'); 
      break; 
    } 
}; 

Он будет связан с Gateway API Amazon. Использование клиента REST, способного получить успех & ответы об ошибках. Но код статуса HTTP по-прежнему равен 200. Затем я изменил ответы интеграции API Gateway двумя способами.

1. Selection pattern : “InternalServerError” 
2. Selection pattern : “.*InternalServerError” 
    Method response : 500 

Но у меня все еще есть код статуса HTTP HTTP. Какова фактическая проблема, связанная с этими шаблонами выбора?

+3

ли вам, возможно, нужно использовать [ 'context.fail()'] (http://stackoverflow.com/q/ 31329495/1695906)? (Прокрутите вниз принятый ответ и прочитайте остальные.) –

ответ

1

API Gateway проверяет шаблон ошибки, когда ошибка выбрасывается из функции Lambda, используя context.fail(). Обратитесь к этому article за дополнительной информацией об обработке ошибки Lambda в API GW.

0

В вашем случае вам нужно вернуть правильный ответ HTTP, от моего ответа here: