首页 > 解决方案 > Terraform 模块 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
  }

地形是

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”类型的块。错误:模块“storage_account__event_subscription”中的 azure.tf 第 90 行不支持的块类型:: storage_queue_endpoint { 此处不应出现“storage_queue_endpoint”类型的块。

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

标签: azureterraformazure-resource-managerterraform-provider-azure

解决方案


在你的模块中:

  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 文件中获得更小的块。


推荐阅读