如何用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" = {} }) }
关键注意点:
- 存储账户是硬性要求:Standard模式的Logic App必须关联存储账户,用于存储工作流定义和运行数据
- 工作流是子资源:所有工作流通过
logic_app_id绑定到同一个Standard宿主,实现“同一Logic App内多工作流”的需求 - 资源名唯一性:你之前的代码中两个
azurerm_logic_app_workflow用了相同的资源名example,这会触发Terraform报错,每个资源必须有唯一标识名
内容的提问来源于stack exchange,提问作者Armand
相关产品推荐
相关产品推荐

