我正在使用Hashicorp Terraform定义AWS API Gateway以调用Lambda函数。 我有一个要求,需要使用特定标签对AWS资源进行标记,以便可以跟踪成本。Terraform似乎允许大多数资源进行此操作。 但是,当使用aws_api_gateway_deployment创建API Gateway阶段时,我无法指定标签选项。
我看到Terraform最近添加了资源aws_api_gateway_stage。 这个资源确实允许指定标签。 但是,aws_api_gateway_stage需要一个aws_api_gateway_deployment。 如果我将它们都指定相同的“stage_name”,如下所示:
然后它们两个资源都试图创建舞台,但是出现了错误:
aws_api_gateway_stage.PlayLambdaApiGatewayStage:创建API Gateway Stage时出错:ConflictException:舞台已经存在 状态码:409,请求ID:f67a10c4-8aad-11e8-b486-c337ea2d214f
这里似乎是aws_api_gateway_deployment已经创建了该阶段,因此aws_api_gateway_stage资源也无法创建它。如果我将该阶段添加到部署的“depends_on”中,以便先创建该阶段,则会抱怨两者之间存在循环。
因此,看起来:
1. aws_api_gateway_stage只旨在向部署添加附加阶段,而不是创建用于部署的阶段 2. aws_api_gateway_deployment在创建阶段时不允许指定标签。
有什么想法吗?我错过了什么吗?
我看到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:创建API Gateway Stage时出错:ConflictException:舞台已经存在 状态码:409,请求ID:f67a10c4-8aad-11e8-b486-c337ea2d214f
这里似乎是aws_api_gateway_deployment已经创建了该阶段,因此aws_api_gateway_stage资源也无法创建它。如果我将该阶段添加到部署的“depends_on”中,以便先创建该阶段,则会抱怨两者之间存在循环。
因此,看起来:
1. aws_api_gateway_stage只旨在向部署添加附加阶段,而不是创建用于部署的阶段 2. aws_api_gateway_deployment在创建阶段时不允许指定标签。
有什么想法吗?我错过了什么吗?