В Terraform как указать конечную точку шлюза API с переменной в пути запроса?
в AWS API Gateway у меня есть конечная точка, определенная как "/ users / {userId} / someAction", и я пытаюсь воссоздать это с помощью terraform
Я бы начал иметь какую-то связанную цепочку gateway_resource, например...
resource "aws_api_gateway_resource" "Users" {
rest_api_id = "${var.rest_api_id}"
parent_id = "${var.parent_id}"
path_part = "users"
}
//{userId} here?
resource "aws_api_gateway_resource" "SomeAction" {
rest_api_id = "${var.rest_api_id}"
parent_id = "${aws_api_gateway_resource.UserIdReference.id}"
path_part = "someAction"
}
в котором я затем определяю aws_api_gateway_method и все остальное.
Как определить эту конечную точку в terraform? Документация и примеры terraform не охватывают этот вариант использования.
2 ответов
вам нужно определить ресурс, чей path_part
- Это параметр, который вы хотите использовать:
// List
resource "aws_api_gateway_resource" "accounts" {
rest_api_id = "${var.gateway_id}"
parent_id = "${aws_api_gateway_resource.finance.id}"
path_part = "accounts"
}
// Unit
resource "aws_api_gateway_resource" "account" {
rest_api_id = "${var.gateway_id}"
parent_id = "${aws_api_gateway_resource.accounts.id}"
path_part = "{accountId}"
}
затем вы создаете метод и включить параметр path:
resource "aws_api_gateway_method" "get-account" {
rest_api_id = "${var.gateway_id}"
resource_id = "${var.resource_id}"
http_method = "GET"
authorization = "NONE"
request_parameters {
"method.request.path.accountId" = true
}
}
и, наконец, вы можете успешно создать отображение в интеграции:
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"
}
}
метод должен быть там - и с включенным параметром-для работы сопоставления интеграции.
Я не могу комментировать из-за меньшей репутации, но, добавив к ответу выше, вы можете изменить parent_id, чтобы указать на aws_api_gateway_resource
Это имеет динамический параметр.