У меня есть настройка Lambda с обработчиком Python, для которого я создал конечную точку API для получения только методов POST. Чего я не могу понять, так это того, как моя лямбда должна сообщать шлюзу API, что все успешно завершено, и возвращать код состояния HTTP 200. Кто-нибудь решился на этот путь?
Возврат кода состояния HTTP из Lambda через шлюз API
Ответы (3)
В Python lambda просто сделайте
raise Exception('notfound')
Вместо notfound используйте любое другое ключевое слово.
Затем в apigateway вам нужно сопоставить 'notfound'
с некоторым кодом состояния ответа. Я использую для этого чванство, вот пример того, как отслеживать 'notfound'
:
"/tags/getById": {
"get": {
"summary": "Find the tag by it's ID",
"produces": [
"application/json"
],
"responses": {
"200": {
"description": "successful operation",
"schema": {
"$ref": "#/definitions/Tag"
}
},
"404": {
"description": "No tag found"
}
},
"parameters": [xxxxxxx],
"x-amazon-apigateway-integration": {
"requestTemplates": {xxxxx},
"uri": {xxxxxx},
"responses": {
"default": {
"statusCode": "200"
},
"notfound": {
"statusCode": "404"
}
},
"httpMethod": "POST",
"type": "aws"
}
}
}
Вы должны быть в состоянии достичь своей цели, используя возвращаемое значение вашего обработчика. См. официальные Типы обработчиков моделей AWS Lambda Python< /а>.
Вам также необходимо правильно настроить API Gateway
для вашего Integration Response
. Дополнительную информацию о том, как это делается, можно найти в официальном Вводный пост в блоге API Gateway, наиболее важным из которых является раздел Integration Response
.
Мне нужны были и другие коды ошибок http, такие как 400 и 500, поэтому я написал ответ здесь. Смотрите его для получения дополнительной информации:
https://stackoverflow.com/a/41343990/984471