Dans AWS API Gateway, j'ai un point de terminaison défini comme "/ users/{userId}/someAction" et j'essaie de le recréer avec terraform.
Je voudrais commencer à avoir une sorte de chaîne liée gateway_resource comme si ...
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"
}
Dans lequel je définis ensuite aws_api_gateway_method et tout le reste.
Comment définir ce point de terminaison dans terraform? La documentation et les exemples de terraform ne couvrent pas ce cas d'utilisation.
Vous devez définir un ressource dont path_part
est le paramètre que vous souhaitez utiliser:
// 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}"
}
Ensuite, vous créez les paramètres méthode et enable the 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
}
}
Et enfin, vous pouvez créer avec succès le mappage dans la intégration :
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"
}
}
La méthode doit être présente - et avec le paramètre activé - pour que le mappage d'intégration fonctionne.
Je ne peux pas commenter à cause de moins de réputation, mais en ajoutant à la réponse ci-dessus, vous pouvez changer le parent_id pour qu'il pointe vers le aws_api_gateway_resource
qui contient le paramètre dynamique.