这是因为所有的HTTP API在默认情况下只在$default 阶段处于激活状态。所以,如果您要在其他阶段和自定义域上使用API,则需要在每个阶段为API添加路由,以便API可以在这些阶段和自定义域上工作。
以下是将HTTP API设置为可在任何阶段使用的示例代码:
resource "aws_apigatewayv2_api" "example_api" {
name = "example-api"
protocol_type = "HTTP"
}
resource "aws_apigatewayv2_stage" "staging" {
api_id = aws_apigatewayv2_api.example_api.id
name = "staging"
auto_deploy = true
default_route_settings {
detailed_metrics_enabled = true
}
}
resource "aws_apigatewayv2_stage" "production" {
api_id = aws_apigatewayv2_api.example_api.id
name = "production"
auto_deploy = true
default_route_settings {
detailed_metrics_enabled = true
}
}
resource "aws_apigatewayv2_api_mapping" "staging_mapping" {
api_id = aws_apigatewayv2_api.example_api.id
domain_name = var.staging_domain_name
stage = aws_apigatewayv2_stage.staging.name
}
resource "aws_apigatewayv2_api_mapping" "production_mapping" {
api_id = aws_apigatewayv2_api.example_api.id
domain_name = var.production_domain_name
stage = aws_apigatewayv2_stage.production.name
}
resource "aws_apigatewayv2_route" "example_route" {
api_id = aws_apigatewayv2_api.example_api.id
route_key = "GET /example"
target = "integrations/${aws_apigatewayv2_integration.example_integration.id}"
}
resource "aws_apigatewayv2_integration" "example_integration" {
api_id = aws_apigatewayv2_api.example_api.id
integration_type = "HTTP_PROXY"
integration_uri = var.example_integration_uri
passthrough_behavior = "WHEN_NO_MATCH"
}
在这个示例中,我们在每个阶段创建一个路由,然后将这些路由的集成指向我们的后端URI。最后,为每个阶段创建了一个API映射来将自定义域名与API和阶段相关联。这样