terraform aws s3 根据条件应用复制规则
terraform aws s3 apply replication rule based on condition
我是 terraform 的新手,需要一些帮助。
我有如下 replication_configuration,我想根据特定条件应用特定规则。
resource "aws_s3_bucket" "bucket" {
replication_configuration {
rules {
id = "rule1"
}
rules {
id = "rule2"
}
rules {
id = "rule3"
}
}
}
我希望规则 1 仅适用于开发环境,规则 2 适用于阶段,规则 3 适用于生产环境,我已经有一个环境变量,它将指示该脚本来自哪个环境 运行。我怎样才能做到这一点?
编辑:
我不希望 terraform 在开发环境的情况下执行 rule2 和 rule3,类似地,对于其他 2 个环境。
我可以在 replication_configuration 中的每个规则之前提到 if 条件之类的东西来实现这一点。
首先,请注意 AWS 提供商版本 4 中的资源发生了变化 !!!
从 Terraform AWS Provider 4.0 版开始,replication_configuration
参数是 read-only。开始使用单独的资源 aws_s3_bucket_replication_configuration
获取配置详细信息。
关于你的问题..在规则中,你可以enable/disable基于你的环境的规则。
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"
}
}
}
我是 terraform 的新手,需要一些帮助。
我有如下 replication_configuration,我想根据特定条件应用特定规则。
resource "aws_s3_bucket" "bucket" {
replication_configuration {
rules {
id = "rule1"
}
rules {
id = "rule2"
}
rules {
id = "rule3"
}
}
}
我希望规则 1 仅适用于开发环境,规则 2 适用于阶段,规则 3 适用于生产环境,我已经有一个环境变量,它将指示该脚本来自哪个环境 运行。我怎样才能做到这一点?
编辑: 我不希望 terraform 在开发环境的情况下执行 rule2 和 rule3,类似地,对于其他 2 个环境。 我可以在 replication_configuration 中的每个规则之前提到 if 条件之类的东西来实现这一点。
首先,请注意 AWS 提供商版本 4 中的资源发生了变化 !!!
从 Terraform AWS Provider 4.0 版开始,replication_configuration
参数是 read-only。开始使用单独的资源 aws_s3_bucket_replication_configuration
获取配置详细信息。
关于你的问题..在规则中,你可以enable/disable基于你的环境的规则。
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"
}
}
}