Terraform模块天蓝色事件订阅可选字段

时间:2019-11-13 16:48:13

标签: azure terraform azure-resource-manager terraform-provider-azure

我正在尝试与terraform模块一起创建事件订阅,该事件订阅指向存储队列作为其端点。

下面是模块

  resource "azurerm_eventgrid_event_subscription" "events" {
  name                      = var.name
  scope                     = var.scope
  subject_filter            = var.subject_filter
  storage_queue_endpoint    = var.storage_queue_endpoint
  }

terraterra是

module "storage_account__event_subscription" {
  source       = "../modules/event"
  name         = "testevent"
  scope        = test
  subject_filter = {
    subject_begins_with = "/blobServices/default/containers/test/blobs/in"
  }

  storage_queue_endpoint = {
    storage_account_id = test
    queue_name         = test
  }
}

错误消息:

  
    

:subject_filter {     这里不希望使用“ subject_filter”类型的块。     错误:不支持的块类型     在azure.tf行90上的模块“ storage_account__event_subscription”中:      :storage_queue_endpoint {     这里不应该使用“ storage_queue_endpoint”类型的块。

  

如何在terraform模块中正确解析可选字段?

1 个答案:

答案 0 :(得分:0)

在您的模块中:

  resource "azurerm_eventgrid_event_subscription" "events" {
  name                      = var.name
  scope                     = var.scope
  subject_filter            = {
    subject_begins_with = var.subject_begins_with
}
  storage_queue_endpoint    = var.storage_queue_endpoint
  }

此处的格式已关闭,因此请确保运行terraform fmt来解决我的格式不正确的问题。还将变量添加到variables.tf文件中。

您的Terraform文件:

module "storage_account__event_subscription" {
  source       = "../modules/event"
  name         = "testevent"
  scope        = test
  subject_begins_with = "/blobServices/default/containers/test/blobs/in"

  storage_queue_endpoint = {
    storage_account_id = test
    queue_name         = test
  }
}

您在模块中创建完整结构,然后在terraform文件中分配变量。

任何具有相同或大致相同值的东西也可以在variables.tf中设置默认值,以便在TF文件中获得较小的块。