我需要忽略blob属性,如果帐户类型是文件存储,我已经尝试使用每个动态,但它一直给出错误。
resource "azurerm_storage_account" "sa" {
name = var.name
location = var.location
resource_group_name = var.resource_group_name
account_kind = var.account_kind
account_tier = var.account_tier
account_replication_type = var.replication_type
min_tls_version = "TLS1_2"
enable_https_traffic_only = true
blob_properties {
dynamic "ignore_filestorage" {
for_each = var.account_kind == FileStorage ? 0 : 1
delete_retention_policy {
days = var.blob_retention_days
}
container_delete_retention_policy {
days = var.container_retention_days
}
}
}
错误-块类型为"ignore_filestorage"不会在这里出现。错误-对资源类型的引用必须后跟至少一个属性访问,指定资源名称。
如果"account_kind"指定为"filestorage"在var.tf中,blob属性需要忽略。
我尝试使用动态,但不断得到错误,不能使用计数内嵌套块。
根据注释和资源文档,您可能需要这样的内容:
resource "azurerm_storage_account" "sa" {
name = var.name
location = var.location
resource_group_name = var.resource_group_name
account_kind = var.account_kind
account_tier = var.account_tier
account_replication_type = var.replication_type
min_tls_version = "TLS1_2"
enable_https_traffic_only = true
dynamic "blob_properties" {
for_each = var.account_kind == "FileStorage" ? [] : [1]
content {
delete_retention_policy {
days = var.blob_retention_days
}
container_delete_retention_policy {
days = var.container_retention_days
}
}
}
}
for_each
取一个集合,而不是一个数字。你不能给它传递值0或1。您需要传递给它一个空列表,或者一个您想要创建的大小的列表。
请花点时间看看文档,了解count
和for_each
之间的区别。
例子:
for_each = var.account_kind == FileStorage ? [] : [1]
如果var.account_kind == FileStorage
将创建0个动态块,如果var.account_kind != FileStorage
将创建1个动态块。
注意[1]
中的值只是一个占位符,使列表的大小为1
。该值可以是任何值,如["stackoverflow"]
。