共用方式為

Bicep 诊断代码 - BCP420

在 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 核心诊断