我是地形的新手,需要一些帮助。
我有下面这样的replication_configuration,我想根据特定条件应用特定规则。
resource "aws_s3_bucket" "bucket" {
replication_configuration {
rules {
id = "rule1"
}
rules {
id = "rule2"
}
rules {
id = "rule3"
}
}
}
我希望规则1只适用于dev-environment,规则2适用于stage,规则3适用于prod,并且我已经有了一个环境变量,它将指示这个脚本是从哪个环境运行的。我怎样才能做到这一点?
编辑:我不希望terraform在开发环境的情况下执行rule2和rule3,类似地,对于其他2个环境。我可以在replication_configuration中的每个规则之前提到一个if条件来实现这一点吗。
首先,请注意,AWS提供商版本4的资源发生了更改!!!
从Terraform AWS Provider的4.0版本起,replication_configuration
参数是只读的。开始使用单独的资源aws_s3_bucket_replication_configuration
获取配置详细信息。
说到你的问题。。在rule中,您可以根据您的env启用/禁用该规则。
variable "env" {
description = "Env type"
type = string
default = "dev"
}
resource "aws_s3_bucket" "bucket" {
replication_configuration {
rules {
id = "rule1"
status = var.env == "dev" ? "Enabled" : "Disabled"
}
rules {
id = "rule2"
status = var.env == "stage" ? "Enabled" : "Disabled"
}
rules {
id = "rule3"
status = var.env == "prod" ? "Enabled" : "Disabled"
}
}
}