azure 将模块输出分配给Bicep中资源的“name”属性时出错

2cmtqfgy  于 2023-08-07  发布在  其他
关注(0)|答案(1)|浏览(79)

我有一个二头肌模块,它输出一些前缀和其他一些功能类似的前缀。我想使用此模块的输出动态构造变量,如appResourceGroupName,并设置Microsoft.Resources/resourceGroups资源的“name”属性。但是,当我尝试这样做时,我遇到了以下错误:
第一个月
这是我二头肌代码的样本

resourcePrefixesModule

var resourcePrefixes = {
  storageAccount: 'st'
}

output resourcePrefixes object = resourcePrefixes

字符串

肱二头肌

module resourcePrefixesModule 'infrastructure/modules/resourcePrefixesModule.bicep' = {
  name: 'resourcePrefixes'
  scope: resourceGroup('subscription')
}

var resourcePrefixes = resourcePrefixesModule.outputs.resourcePrefixes

var appResourceGroupName = toLower('${resourcePrefixes.resourceGroup}-${thisEnvironment.environmentShortName}-${thisLocation.shortName}-${appName}')

// App-specific resources
resource appResourceGroup 'Microsoft.Resources/resourceGroups@2021-04-01' = {
  name: appResourceGroupName
  location: location
  tags: {
    environment: environment
  }
  dependsOn: [
    resourcePrefixesModule
  ]  
}


我知道,该错误是因为Microsoft.Resources/resourceGroups的“name”属性需要一个可以在部署开始时计算的值,并且我知道在并发运行时无法解析“appInfrustructureModule”输出的值。
是否有任何方法可以使用模块的输出动态设置Bicep中资源的“name”属性?如果不是,有什么可行的变通方法来实现这种行为?我尝试使用dependsOn将它们关联起来,这样资源在模块完成之前不会被创建,但这并不奏效。

dl5txlt9

dl5txlt91#

您的问题看起来像shared variable file pattern.
而不是使用模块来定义资源前缀。使用包含资源前缀的共享json文件,然后使用loadJsonContent将其加载到变量中,类似于下面的示例。

相关问题