我有一个二头肌模块,它输出一些前缀和其他一些功能类似的前缀。我想使用此模块的输出动态构造变量,如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将它们关联起来,这样资源在模块完成之前不会被创建,但这并不奏效。
1条答案
按热度按时间dl5txlt91#
您的问题看起来像shared variable file pattern.
而不是使用模块来定义资源前缀。使用包含资源前缀的共享json文件,然后使用loadJsonContent将其加载到变量中,类似于下面的示例。