Я пишу Terraform для развертывания AWS API Gateway с интеграцией AWS Lambda. Я хотел бы указать необязательный параметр пути в URL, на который я могу ссылаться из лямбды. Я не могу понять, как это указать в терраформе AWS API Gateway.
Единственная информация, которую я могу найти для переменных пути, - это сообщение SO: Как в Terraform указать конечную точку шлюза API с переменной в пути запроса?
В нем в ответе указывается переменная пути в поле uri функции aws_api_gateway_integration:
resource "aws_api_gateway_integration" "get-account-integration" {
rest_api_id = "${var.gateway_id}"
resource_id = "${var.resource_id}"
http_method = "${aws_api_gateway_method.get-account.http_method}"
type = "HTTP"
integration_http_method = "GET"
uri = "/integration/accounts/{id}" # <--
passthrough_behavior = "WHEN_NO_MATCH"
request_parameters {
"integration.request.path.id" = "method.request.path.accountId"
}
}
К сожалению, при интеграции AWS Lambda это поле URI используется для ARN лямбды. Вот как я ссылаюсь на лямбду в моей интеграции:
resource "aws_api_gateway_integration" "books_lambda" {
rest_api_id = "${var.gateway.id}"
resource_id = "${var.resource_id}"
http_method = "${aws_api_gateway_method.books.http_method}"
type = "AWS_PROXY"
integration_http_method = "POST"
uri = "${var.books_invoke_arn}" # <--
credentials = "${aws_iam_role.books_gateway.arn}"
request_parameters {
"integration.request.path.id" = "method.request.path.bookId"
}
}
Поскольку arn находится на месте поля uri, я не знаю, где определить расположение параметра path.
Я пытался добавить переменную path в поле uri (${var.books_invoke_arn}/{bookId}
), но это просто создает ошибку. Где я могу указать переменную пути, когда поле uri занято лямбда-арн?
Во-вторых, возможно ли сделать эту переменную необязательной, или мне нужно иметь второй набор терраформ (один с переменной, другой без)?
Спасибо!