在 Bicep 中,每个资源或模块必须在编译时具有已知的部署范围。 范围必须静态确定。 如果范围依赖于在编译期间无法计算的参数、变量或表达式,Bicep 将引发 BCP420。
DESCRIPTION
在编译时无法解析范围,因为提供的表达式不明确或过于复杂。 范围表达式必须减少到特定的范围,而无需了解参数值。
级别
错误
例子
以下代码触发 BCP420,因为 scope 属性使用一个条件表达式,该表达式依赖于 targetResourceGroupName 参数的运行时值。 Bicep 要求范围表达式在编译时解析为特定范围,而无需依赖参数值或动态逻辑。 由于编译器在评估 targetResourceGroupName 的情况下无法确定范围,因此会引发 BCP420。
param targetResourceGroupName string = 'my-target-rg'
param storageAccountName string = 'mystorageacct'
param location string = 'eastus'
module storageModule './module.bicep' = {
name: 'deployStorage'
scope: empty(targetResourceGroupName) ? resourceGroup() : resourceGroup(targetResourceGroupName)
params: {
storageAccountName: storageAccountName
location: location
}
}
后续步骤
有关 Bicep 诊断的详细信息,请参阅 Bicep 核心诊断。