Я пытаюсь создать сегменты s3 в aws с помощью Terraform, во всех средах существует несколько блоков (dev, qa и prod), тогда как большинство блоков существует только в 1 или 2 средах. Я использую счетчик, чтобы определить ресурсы выборочно
Итак, в приведенном ниже коде я создаю сегмент в S3, только если среда является dev или qa с использованием счетчиков и условных выражений. Но когда я запускаю код для среды prod, я получаю Error: module 's3-bucket-example': unknown variable referenced: 'lifecycle_rule_s3_bucket_example'; define it with a 'variable' block
lifecycle_rule для каждого сегмента определяется в соответствующем файле var для каждой среды, например lifecycle_rule_s3_bucket_example
определяется в var-file.dev и var-file.qa, но не в var-file.prod, так как сегмент существует в dev и qa. , Но поскольку корзина в prod отсутствует, почему я получаю сообщение об ошибке при определении переменной lifecycle_rule? Я предположил, что, поскольку count = 0 для prod, ни одна из оставшихся переменных не должна иметь значения в модуле.
module "s3-bucket-example" {
source = "./modules/s3"
count = "${var.aws-account == "dev"|| var.aws-account == "qa" ? 1 :0}"
bucketname = "${local.this_env_prefix}-s3-bucket-example"
versioning-enabled = "true"
lifecycle_rule = "${var.lifecycle_rule_s3_bucket_example}"
aws_account = "${var.aws-account}"
}