我想在启用了 cloudwatch 指标的阶段部署它。为此,我需要使用 aws_api_gateway_method_settings
这需要艺名。如果不使用 aws_api_gateway_stage
创建舞台它抛出一个错误,说阶段不存在。当我尝试创建一个舞台时,它所说的舞台已经存在。
我尝试过的一种解决方案是使用 aws_api_gateway_deployment
创建两个阶段。另一个使用 aws_api_gateway_stage
有两个不同的名字。有没有其他解决方案?
resource "aws_api_gateway_deployment" "test-deploy" {
depends_on = [ /*something goes here*/]
rest_api_id = "${aws_api_gateway_rest_api.test.id}"
stage_name = "${var.stage_name}"
variables = {
"function" = "${var.lambda_function_name}"
}
}
resource "aws_api_gateway_stage" "test" {
stage_name = "${var.stage_name}"
rest_api_id = "${aws_api_gateway_rest_api.test.id}"
deployment_id = "${aws_api_gateway_deployment.test-deploy.id}"
}
resource "aws_api_gateway_method_settings" "settings" {
rest_api_id = "${aws_api_gateway_rest_api.test.id}"
stage_name = "${aws_api_gateway_stage.test.stage_name}"
method_path = "*/*"
settings {
metrics_enabled = true
logging_level = "INFO"
}
}
异常(exception):
aws_api_gateway_stage.test: Error creating API Gateway Stage: ConflictException: Stage already exists
最佳答案
我发现我们不需要明确地创建一个舞台。 aws_api_gateway_deployment
创建舞台,但需要设置depends_on
.我之前没有尝试过 depends_on
抛出一个错误说 stage not exists
.
resource "aws_api_gateway_deployment" "test-deploy" {
depends_on = [ /*something goes here*/]
rest_api_id = "${aws_api_gateway_rest_api.test.id}"
stage_name = "${var.stage_name}"
variables = {
"function" = "${var.lambda_function_name}"
}
}
resource "aws_api_gateway_method_settings" "settings" {
depends_on = ["aws_api_gateway_deployment.test-deploy"]
rest_api_id = "${aws_api_gateway_rest_api.test.id}"
stage_name = "${var.stage_name}"
method_path = "*/*"
settings {
metrics_enabled = true
logging_level = "INFO"
}
}
关于amazon-web-services - 如何使用 terraform 在启用了 cloudwatch 指标的 API Gateway 中创建阶段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45096307/