当模块内有一个计数条件正在检查输入值时,我收到错误。输入值取决于与模块一起创建的资源。
resource "aws_kms_key" "this" {
}
module "service_secret" {
source = "./secret"
name = "foo-bar"
kms_arn = aws_kms_key.this.arn
tags = {}
}
在模块中
secret
:
resource "aws_secretsmanager_secret" "this" {
name = var.name
kms_key_id = var.kms_arn == "" ? aws_kms_key.this[0].arn : var.kms_arn
}
resource "aws_kms_key" "this" {
count = var.kms_arn != "" ? 0 : 1
}
错误:
The "count" value depends on resource attributes that cannot be determined until apply, so Terraform cannot predict how many instances will be created. To work around this, use the -target argument to first apply only the resources that the count depends on. count = var.kms_arn != "" ? 0 : 1
没错。您不能让
count
或 for_each
依赖于应用级变量,例如 aws_kms_key.this.arn
。一切都必须在 plan
时知晓,这意味着您已经明确传递了您想要 count
工作的实例数量,或者使用 -target 首先创建 aws_kms_key.this
,然后再次运行代码以创建其他资源。