我正在使用Hashicorp Terraform定义AWS API网关来命中Lambda函数 . 我要求我需要使用特定标记标记我的AWS资源,以便跟踪成本 . Terraform似乎允许大多数资源 . 但是,使用aws_api_gateway_deployment创建API网关阶段时,我没有指定标记的选项 .
我看到Terraform最近添加了资源aws_api_gateway_stage . 这个允许指定标签 . 但是, aws_api_gateway_stage 需要 aws_api_gateway_deployment . 如果我给他们相同的"stage_name"如下:
resource "aws_api_gateway_stage" "PlayLambdaApiGatewayStage" {
stage_name = "${environment}"
rest_api_id = "${aws_api_gateway_rest_api.PlayLambdaApiGateway.id}"
deployment_id = "${aws_api_gateway_deployment.PlayLambdaApiGatewayDeployment.id}"
tags = {
cost-allocation = "play-${var.environment}"
}
}
resource "aws_api_gateway_deployment" "PlayLambdaApiGatewayDeployment" {
depends_on = [
"aws_api_gateway_integration.PlayLambdaApiLambdaIntegration",
"aws_api_gateway_integration.PlayLambdaApiLambdaIntegrationRoot"
]
rest_api_id = "${aws_api_gateway_rest_api.PlayLambdaApiGateway.id}"
stage_name = "${var.environment}"
}
然后他们两个资源都试图创建舞台,我得到一个错误:
aws_api_gateway_stage.PlayLambdaApiGatewayStage: Error creating API Gateway Stage: ConflictException: Stage already exists status code: 409, request id: f67a10c4-8aad-11e8-b486-c337ea2d214f
这里似乎 aws_api_gateway_deployment 已经创建了阶段,因此 aws_api_gateway_stage 资源也无法创建它 . 如果我将阶段添加到部署的"depends_on"以便首先创建阶段,它会抱怨两者之间存在循环 .
所以,似乎:
-
aws_api_gateway_stage 仅用于向部署添加其他阶段,而不是创建用于部署的阶段
-
aws_api_gateway_deployment 不允许在创建阶段时指定标记 .
有任何想法吗?我错过了什么?