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

如何在Bicep中无感知透传Module1的输出至Module2?

实现Bicep模块输出的无感知透传方案

可以通过以下两种方案实现Module1输出的自动透传,无需手动逐个映射输出项:

方法1:通过参数传入+对象展开合并输出

在Module2中定义一个接收Module1输出的对象参数,然后将该参数直接作为输出项,或者与Module2自身输出合并后输出。

示例代码:

// Module2.bicep
param module1Outputs object

// 定义Module2自身资源
resource module2Resource 'Microsoft.Example/resource@2024-01-01' = {
  name: 'module2-resource'
  // 资源配置逻辑...
}

// 输出自身值
output module2OwnValue string = module2Resource.properties.targetValue
// 直接透传Module1的所有输出
output module1TransmittedOutputs object = module1Outputs

// 可选:合并为统一输出对象
output combinedOutputs object = {
  module2: {
    ownValue: module2Resource.properties.targetValue
  }
  module1: module1Outputs
}

在调用Module2的父模板中,直接将Module1的输出整体传入参数:

// 父模板.bicep
module module1 './Module1.bicep' = {
  name: 'module1'
  // Module1的参数配置...
}

module module2 './Module2.bicep' = {
  name: 'module2'
  params: {
    module1Outputs: module1.outputs
  }
}

这种方式的核心是利用Bicep的对象类型参数,直接承接Module1的完整输出对象,后续Module1新增或修改输出项时,Module2无需任何代码调整即可自动同步透传。

方法2:Module2内部直接引用Module1实例的输出

如果Module2内部直接实例化Module1,可以直接引用其outputs对象并输出,无需额外参数传递。

示例代码:

// Module2.bicep
// 内部实例化Module1
module module1 './Module1.bicep' = {
  name: 'module1'
  // Module1的参数配置...
}

// 定义Module2自身资源
resource module2Resource 'Microsoft.Example/resource@2024-01-01' = {
  name: 'module2-resource'
  // 资源配置逻辑...
}

// 输出自身值
output module2OwnValue string = module2Resource.properties.targetValue
// 直接透传Module1的所有输出
output module1AllOutputs object = module1.outputs

这种方式适用于Module2与Module1强绑定的场景,同样能自动同步Module1的输出变更,无需手动维护映射关系。

注意事项

  • 若Module1输出包含敏感信息,需确认透传后不会造成信息泄露,必要时可通过对象解构筛选需要透传的字段。
  • Bicep会自动处理输出对象的类型推导,无需手动声明每个输出项的类型,降低维护成本。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 15:43:14