Estoy tratando de usar Terraform para implementar API Gateway que enruta el tráfico a mi dominio google.com como ejemplo.
Uso aws_apigatewayv2_api para crear el tipo HTTP_PROXY para las integraciones. Revisé los documentos pero aún no puedo encontrar la manera de adjuntar una integración en una ruta GET /sitemap.xml . Como lidiar con esto?
resource "aws_api_gateway_deployment" "_" { rest_api_id = aws_api_gateway_rest_api._.id stage_name = "" lifecycle { create_before_destroy = true } } resource "aws_apigatewayv2_api" "_" { name = "example" protocol_type = "HTTP" } resource "aws_apigatewayv2_route" "apigateway_route" { api_id = aws_apigatewayv2_api._.id route_key = "GET /sitemap.xml" } resource "aws_apigatewayv2_integration" "apigateway_intergration" { api_id = aws_apigatewayv2_api._.id integration_type = "HTTP_PROXY" connection_type = "INTERNET" description = "Gateway intergration for EC2" integration_method = "ANY" integration_uri = "https://www.google.com" passthrough_behavior = "WHEN_NO_MATCH" } # resource "aws_apigatewayv2_deployment" "apigateway_deployment" { # api_id = aws_apigatewayv2_route.apigateway_route.api_id # description = "Example deployment" # lifecycle { # create_before_destroy = true # } # } resource "aws_apigatewayv2_stage" "apigateway_stage" { api_id = aws_apigatewayv2_api._.id name = "example-stage" }Le faltan varios componentes. Lo más importante es que no existe un vínculo entre su aws_apigatewayv2_route y aws_apigatewayv2_integration .
El enlace se establece utilizando el argumento de destino .
Del mismo modo, no existe ningún vínculo entre aws_apigatewayv2_stage y aws_apigatewayv2_deployment .
Puedes echar un vistazo a la siguiente versión del código:
resource "aws_apigatewayv2_deployment" "example" { api_id = aws_apigatewayv2_api._.id description = "Example deployment" lifecycle { create_before_destroy = true } depends_on = [ aws_apigatewayv2_route.apigateway_route ] } resource "aws_apigatewayv2_api" "_" { name = "example" protocol_type = "HTTP" } resource "aws_apigatewayv2_route" "apigateway_route" { api_id = aws_apigatewayv2_api._.id route_key = "GET /sitemap.xml" target = "integrations/${aws_apigatewayv2_integration.apigateway_intergration.id}" } resource "aws_apigatewayv2_integration" "apigateway_intergration" { api_id = aws_apigatewayv2_api._.id integration_type = "HTTP_PROXY" connection_type = "INTERNET" description = "Gateway intergration for EC2" integration_method = "ANY" integration_uri = "https://www.google.com" passthrough_behavior = "WHEN_NO_MATCH" } resource "aws_apigatewayv2_stage" "apigateway_stage" { api_id = aws_apigatewayv2_api._.id name = "example-stage" deployment_id = aws_apigatewayv2_deployment.example.id }El código anterior crea correctamente la integración: