Terraform:如果字符串的属性列表为空,如何忽略可选块

Terraform:如果字符串的属性列表为空,如何忽略可选块,terraform,terraform-provider-azure,Terraform,Terraform Provider Azure,我只是从地形开始,下面是我的地形代码。下面是一个可选块,其中它具有允许的来源属性,即字符串列表(URL或*) Varilabe.tf: variable "allowed_origins" { type = "list" description = "A list of origins which should be able to make cross-origin calls. * can be used to allow all c

我只是从地形开始,下面是我的地形代码。下面是一个可选块,其中它具有允许的来源属性,即字符串列表(URL或*)

Varilabe.tf:

variable "allowed_origins" {
  type = "list"
  description = "A list of origins which should be able to make cross-origin calls. * can be used to allow all calls"
  default = []
}
用户可以/不可以提供
允许的源代码
,如果他们提供没有问题,但是如果他们不提供

  • 默认为空列表[]:当我传递空列表时,
    allowed_u u origns
    会失败,并指出不是有效的URL
  • 默认为
    null
    :如果我作为null传递,
    allowed_origin
    单独获取null,cors作为空块传递,即,
    cors{}
    ,由于属性丢失错误,它也会失败
  • 现在我的问题是,如果用户没有向
    允许的\u来源提供任何值,如何使整个cors块忽略,我应该使用什么默认值?

    您可以使用它使cors块成为可选的:

    resource "azurerm_signalr_service" "signalr_service" {
      
      name="${var.signalr_name}"
      location = "${var.resource_location}"
      resource_group_name = "${var.resource_group_name}"
    
      sku {
        name     = "${var.sku_name}"
        capacity = "${var.sku_capacity}"
      }
            
      dynamic "cors" {
        for_each = length(var.cors_allowed_origins) > 0 ? [1] : []
        content {
            allowed_origins = "${var.cors_allowed_origins}"
        }
      }
    }
    
    []
    的默认值可以

    resource "azurerm_signalr_service" "signalr_service" {
      
      name="${var.signalr_name}"
      location = "${var.resource_location}"
      resource_group_name = "${var.resource_group_name}"
    
      sku {
        name     = "${var.sku_name}"
        capacity = "${var.sku_capacity}"
      }
            
      dynamic "cors" {
        for_each = length(var.cors_allowed_origins) > 0 ? [1] : []
        content {
            allowed_origins = "${var.cors_allowed_origins}"
        }
      }
    }