example aws amazon-web-services aws-api-gateway terraform

amazon web services - aws - En Terraform, ¿cómo se especifica un punto final de la puerta de enlace API con una variable en la ruta de solicitud?



terraform aws example (2)

En AWS API Gateway, tengo un punto final definido como ''/ users / {userId} / someAction'', y estoy tratando de recrear esto con terraform

Empezaría a tener algún tipo de cadena de gateway_resource enlazada como ...

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" }

En el cual luego defino el aws_api_gateway_method y todo lo demás.

¿Cómo defino este punto final en terraform? La documentación y los ejemplos de terraform no cubren este caso de uso.


No puedo hacer comentarios debido a una menor reputación, pero al agregar a la respuesta anterior, puede cambiar el parent_id para que apunte al aws_api_gateway_resource que tiene el aws_api_gateway_resource dinámico.


path_part definir un resource cuyo path_part es el parámetro que desea usar:

// 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}" }

Luego creas el method y habilitas el parámetro de ruta:

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 } }

Y, finalmente, puede crear correctamente la asignación dentro de la 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" } }

El método debe estar allí, y con el parámetro habilitado, para que funcione la asignación de integración.