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"
        }
    }
}