Terraform 模块 azure 事件订阅可选字段

Posted

技术标签:

【中文标题】Terraform 模块 azure 事件订阅可选字段【英文标题】:Terraform modules azure event subscription optional fields 【发布时间】:2020-03-09 12:41:20 【问题描述】:

我正在尝试使用 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
  

而 terraform 是

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

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

【问题讨论】:

【参考方案1】:

在你的模块中:

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

【讨论】:

以上是关于Terraform 模块 azure 事件订阅可选字段的主要内容,如果未能解决你的问题,请参考以下文章

sh 使用Terraform导出Azure的订阅和租户ID。

使用 Azure 提供程序的 Terraform “AuthorizationFailed”

terraform 模块依赖于 Azure

Terraform - Azure 作为提供者和受限访问帐户

如何使用 Terraform 在管理组范围上定义和分配 Azure 策略?

Terraform azure 不兼容的提供程序版本