我正尝试使用Terraform部署API网关,以将流量路由到我的域google.com
中。
我使用aws_apigatewayv2_api创建用于集成的HTTP_PROXY类型。我浏览了文档,但仍然找不到将集成附加到路由GET /sitemap.xml
的方法。该如何处理?
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"
}
答案 0 :(得分:2)
您缺少几个组件。最重要的是,您的aws_apigatewayv2_route
和aws_apigatewayv2_integration
之间没有没有链接。
使用target参数建立链接。
类似地,aws_apigatewayv2_stage
和aws_apigatewayv2_deployment
之间没有链接。
您可以查看以下版本的代码:
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
}
上面的代码正确创建了集成: