You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Terraform导入Azure Logic App时含$的workflow参数未被正确识别

Terraform导入Azure Logic App工作流时$connection参数不一致问题解决

问题场景

使用Terraform导入Azure Logic App工作流后,执行terraform plan发现Terraform计划销毁现有资源中的$connection参数,并创建新的connection参数。需求是让配置与现有资源完全一致,无任何变更操作。

现有相关配置如下:

模块配置

resource "azurerm_logic_app_workflow" "logic_app_workflow" {
  for_each            = var.logic_app_workflows
  name                = each.value["name"]
  location            = each.value["location"]
  resource_group_name = each.value["resource_group_name"]
  enabled             = each.value["enabled"]
  workflow_parameters = { for k,v in each.value["workflow_parameters"] : k =>jsonencode(v) } 
  tags               = each.value["logic_app_workflow_tags"]
}

变量定义

variable "logic_app_workflows" {
  type = map(object({
    name                    = string
    location                = string
    resource_group_name     = string
    enabled                 = bool
    workflow_parameters     = any
    logic_app_workflow_tags = map(string)
  }))
}

原tfvars配置

logic_app_workflows = {
  logic_app_workflow1 = {
    name                = "test-logic"    
    location            = "canadacentral" 
    resource_group_name = "test-rg"       
    enabled             = true
    workflow_parameters = {
      connection = {
        defaultValue = {}
        type         = "Object" 
      }
    }
    logic_app_workflow_tags = {
      applicationName = "Logic App workflow"
    }
  }
}

问题原因

  1. 参数名称不匹配:Azure Logic App中内置的连接参数名称为$connection(带美元符号),但tfvars中配置的是connection,Terraform将其识别为两个不同参数,因此计划删除原$connection并新建connection。
  2. 参数值结构不匹配:现有资源中$connection的defaultValue并非空对象{},而是包含connectionId、connectionName等具体连接信息的结构,tfvars中的空对象与实际资源值不一致。

解决方案

步骤1:修正参数名称为$connection

将tfvars中的connection参数名改为$connection,匹配Azure Logic App的实际参数名称。

步骤2:同步defaultValue与现有资源一致

通过Azure Portal或Azure CLI获取现有Logic App工作流中$connection参数的实际defaultValue内容,替换tfvars中的空对象。

修正后的tfvars示例

logic_app_workflows = {
  logic_app_workflow1 = {
    name                = "test-logic"    
    location            = "canadacentral" 
    resource_group_name = "test-rg"       
    enabled             = true
    workflow_parameters = {
      "$connection" = {
        defaultValue = {
          connectionId = "/subscriptions/<订阅ID>/resourceGroups/test-rg/providers/Microsoft.Web/connections/<连接名称>"
          connectionName = "<连接名称>"
          id = "/subscriptions/<订阅ID>/resourceGroups/test-rg/providers/Microsoft.Web/connections/<连接名称>"
        }
        type         = "Object" 
      }
    }
    logic_app_workflow_tags = {
      applicationName = "Logic App workflow"
    }
  }
}

步骤3:验证配置

执行terraform plan,确认计划中不再有销毁和创建$connection参数的操作,资源配置与现有状态完全匹配。

内容的提问来源于stack exchange,提问作者lviswa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 09:52:22