Поскольку API Gateway является сложным компонентом AWS, и вы можете контролировать практически все, что находится на нем (практически каждая его часть управляется независимо, что дает вам большой контроль над тем, что вы создаете, но также усложняет работу с ним).
Посмотрите, что там написано "Выберите ответ интеграции", но, поскольку ваш код Terraform не создал его, он пуст.
Я столкнулся с этой же проблемой нескольконедель назад, и я нашел решение на GitHub от Terraform.Я думаю, что Terraform лучше документировать это, поскольку вы не первый, и вы не будете последним, кто задаст этот вопрос.Ну, по крайней мере, у нас есть это задокументировано в StackOverflow:)
Короче говоря, вам нужно добавить ресурс Terraform aws_api_gateway_integration_response
в ваш API-шлюз.
resource "aws_api_gateway_integration_response" "MyDemoIntegrationResponse" {
rest_api_id = "${aws_api_gateway_rest_api.MyDemoAPI.id}"
resource_id = "${aws_api_gateway_resource.MyDemoResource.id}"
http_method = "${aws_api_gateway_method.MyDemoMethod.http_method}"
status_code = "${aws_api_gateway_method_response.200.status_code}"
response_templates = {
"application/json" = ""
}
}
Если вы можететем не менее, я предлагаю вам использовать подходящую среду для привязки событий к вашим функциям Lambda (например, Serverless Framework или AWS SAM ), так как это очень многословно и подвержено ошибкам при их создании в Terraform..
Обычно я объединяю Terraform и Serverless Framework вместе: я использую Terraform для создания ресурсов инфраструктуры - даже если они не содержат сервера - таких как таблицы DynamoDB, очереди SQS, темы SNS и т. Д., А также Serverless Framework для созданияЛямбда-функции и соответствующие им события.