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

如何用Terraform在单个Azure Logic App中创建多个工作流?

在同一个Azure Standard Logic App内创建多个工作流的Terraform配置

你之前的Terraform代码创建的是两个独立的Consumption型Logic App(每个工作流对应一个独立的azurerm_logic_app_workflow资源),但你要的是在Standard型Logic App的同一个宿主资源下创建多个工作流。

Azure Logic App分两种核心模式:

  • Consumption模式:每个工作流都是独立的顶层资源,对应azurerm_logic_app_workflow资源
  • Standard模式:一个Logic App宿主资源下可包含多个工作流,宿主用azurerm_logic_app_standard定义,工作流作为子资源用azurerm_logic_app_standard_workflow定义

以下是实现需求的完整Terraform配置:

# 创建基础资源组
resource "azurerm_resource_group" "example" {
  name     = "workflow-resources"
  location = "West Europe"
}

# 创建Standard Logic App依赖的存储账户(Standard模式必填)
resource "azurerm_storage_account" "example" {
  name                     = "mystorageaccount001" # 需全局唯一
  resource_group_name      = azurerm_resource_group.example.name
  location                 = azurerm_resource_group.example.location
  account_tier             = "Standard"
  account_replication_type = "LRS"
}

# 创建Standard Logic App宿主(所有工作流的容器)
resource "azurerm_logic_app_standard" "example" {
  name                = "my-standard-logic-app"
  resource_group_name = azurerm_resource_group.example.name
  location            = azurerm_resource_group.example.location
  sku_name            = "Standard"
  storage_account_id  = azurerm_storage_account.example.id

  # 启用默认工作流运行时
  workflow_runtime {
    name = "Default"
  }
}

# 创建第一个工作流(关联到Standard宿主)
resource "azurerm_logic_app_standard_workflow" "workflow1" {
  name                = "workflow1"
  logic_app_id        = azurerm_logic_app_standard.example.id
  workflow_definition = jsonencode({
    "$schema"        = "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#"
    "contentVersion" = "1.0.0.0"
    "parameters"     = {}
    "triggers"       = {}
    "actions"        = {}
    "outputs"        = {}
  })
}

# 创建第二个工作流(同一个Standard宿主下)
resource "azurerm_logic_app_standard_workflow" "workflow2" {
  name                = "workflow2"
  logic_app_id        = azurerm_logic_app_standard.example.id
  workflow_definition = jsonencode({
    "$schema"        = "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#"
    "contentVersion" = "1.0.0.0"
    "parameters"     = {}
    "triggers"       = {}
    "actions"        = {}
    "outputs"        = {}
  })
}

关键注意点:

  1. 存储账户是硬性要求:Standard模式的Logic App必须关联存储账户,用于存储工作流定义和运行数据
  2. 工作流是子资源:所有工作流通过logic_app_id绑定到同一个Standard宿主,实现“同一Logic App内多工作流”的需求
  3. 资源名唯一性:你之前的代码中两个azurerm_logic_app_workflow用了相同的资源名example,这会触发Terraform报错,每个资源必须有唯一标识名

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 11:48:37