API Gateway + Lambda не удалось обработать исключение - PullRequest
0 голосов
/ 27 июня 2018

У меня есть Python на основе Python, который интегрирован с API Gateway, и я пытаюсь обработать лямбда-исключение ниже.

{
  "stackTrace": [
    [
      "/var/task/index.py",
      14,
      "handler",
      "raise Exception(err)"
    ]
  ],
  "errorType": "Exception",
  "errorMessage": "device name existed"
}

Я определил статус HTTP 400 ответа метода для исключения.

enter image description here

Я также определил «Регламент лямбда-ошибок» и «Шаблоны отображения тела».

enter image description here

Но API-шлюз по-прежнему отвечает HTTP-статусом 200 вместо 400, когда моя лямбда вызвала исключение.

Каждый имеет представление, что происходит не так. Я что-то пропустил?

1 Ответ

0 голосов
/ 02 июля 2018

Я нашел решение сам.

Вот мой лямбда-код:

    raise Exception({
        "errorType" : "Exception",
        "httpStatus": 400,
        "message": err
    })

API Gateway получит сообщение об ошибке типа

{
   "stackTrace": [["/var/task/index.py", 17, "handler", "\"message\": err"]], 
   "errorType": "Exception", 
   "errorMessage": "{'message': 'device not found', 'errorType': 'Exception', 'httpStatus': 400}"
}

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

После того как я изменил регулярное выражение лямбда-ошибки, как показано ниже, все работает нормально

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