【发布时间】:2019-10-16 12:33:13
【问题描述】:
我正在尝试使用 Terraform 在 aws 上创建 s3 存储桶,所有环境(dev、qa 和 prod)中都存在少数存储桶,而大多数存储桶仅存在于 1 或 2 个环境中。我正在使用 count 有选择地定义资源
所以在下面的代码中,只有当环境是 dev 或 qa 使用计数和条件时,我才会在 S3 中创建一个存储桶。但是当我运行 prod 环境的代码时,我得到了Error: module 's3-bucket-example': unknown variable referenced: 'lifecycle_rule_s3_bucket_example'; define it with a 'variable' block
每个存储桶的生命周期规则在每个环境的相应 var 文件中定义,例如 lifecycle_rule_s3_bucket_example 在 var-file.dev 和 var-file.qa 中定义,但不在 var-file.prod 中定义,因为存储桶存在于 dev 和 qa .但是由于产品中不存在存储桶,为什么我会收到定义生命周期规则变量的错误?我的猜测是,由于 prod 的 count = 0,因此模块中的任何剩余变量都不重要。
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}"
}
【问题讨论】:
标签: amazon-web-services amazon-s3 terraform terraform-provider-aws