Я хочу развернуть свой шлюз API с помощью terraform, используя файл swagger для описания моего API. Swagger.yaml выглядит так:
swagger: '2.0'
info:
version: '1.0'
title: "CodingTips"
schemes:
- https
paths:
"/api":
get:
description: "Get coding tips"
produces:
- application/json
x-amazon-apigateway-integration: ${apiIntegration}
responses:
'200':
description: "Codingtips were successfully requested"
Terraform дает мне BadRequestException
, говоря, что The REST API doesn't contain any methods
.
Из-за этого я думаю, что он пытается развернуть API REST, не дожидаясь создания методов и интеграций этого API.
Это заставило меня задуматься о том, чтобы добавить DEPENDS_ON
к aws_api_gateway_deployment
. Однако я не знаю, от чего зависеть, так как я не определяю метод и ресурс интеграции с помощью сваггера. Они должны автоматически вычитаться из определения чванства.
Думал ли я в правильном направлении, и если да, то от чего я должен зависеть aws_api_gateway_deployment
? Или что-то не так с тем, как я пытаюсь развернуть этот API.
Мой apigateway.tf
файл выглядит так:
resource "aws_api_gateway_rest_api" "codingtips-api-gateway" {
name = "ServerlessExample"
description = "Terraform Serverless Application Example"
body = "${data.template_file.codingtips_api_swagger.rendered}"
}
locals{
"get_codingtips_arn" = "${aws_lambda_function.get-tips-lambda.invoke_arn}"
"x-amazon-coding-tips-apigateway-integration" = <<EOF
#
uri = "${local.get_codingtips_arn}"
passthroughBehavior: when_no_match
httpMethod: POST
type: aws_proxy
credentials: "${aws_iam_role.api_gateway_role.arn}"
EOF
}
data "template_file" codingtips_api_swagger{
template = "${file("./swagger.yaml")}"
vars {
apiIntegration = "${indent(8, local.x-amazon-coding-tips-apigateway-integration)}"
}
}
resource "aws_api_gateway_deployment" "codingtips-api-gateway-deployment" {
rest_api_id = "${aws_api_gateway_rest_api.codingtips-api-gateway.id}"
stage_name = "test"
}
Как мне починить BadRequestException: The REST API doesn't contain any methods
?