Linter 规则 - 嵌套部署模板范围

Microsoft.Resources/deployments 资源使用内部作用域表达式求值,并包含对父模板中定义的符号的任何引用时,此 Linter 规则会触发诊断。

Linter 规则代码

请在 Bicep 配置文件中使用以下值自定义规则设置:

nested-deployment-template-scoping

解决方案

以下示例不会通过此测试,因为 fizz 是在父模板的命名空间中定义的。

var fizz = 'buzz'

resource nested 'Microsoft.Resources/deployments@2020-10-01' = {
  name: 'name'
  properties: {
    mode: 'Incremental'
    expressionEvaluationOptions: {
      scope: 'inner'
    }
    template: {
      '$schema': 'https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#'
      contentVersion: '1.0.0.0'
      resources: [
        {
          apiVersion: '2022-09-01'
          type: 'Microsoft.Resources/tags'
          name: 'default'
          properties: {
            tags: {
              tag1: fizz // <-- Error! `fizz` is defined in the parent template's namespace
            }
          }
        }
      ]
    }
  }
}

后续步骤

有关 Linter 的详细信息,请参阅使用 Bicep Linter