你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
此规则查找用于资源位置的模块参数,并且可能会无意中默认为意外值。
注释
此规则默认处于关闭状态。 更改 bicepconfig.json 中的级别以启用它。
Linter 规则代码
请在 Bicep 配置文件中使用以下值自定义规则设置:
explicit-values-for-loc-params
解决方案
使用模块时,应为具有默认值的任何与位置相关的参数分配显式值。 与位置相关的参数包括具有引用默认值 resourceGroup().___location
的参数, deployment().___location
以及从资源的位置属性引用的任何参数。
将 bicep 文件用作主部署模板时,默认为资源组或部署位置的参数很方便。 但是,在模块中使用此类默认值时,如果主模板的资源不位于资源组所在的同一区域,则可能会导致意外行为。
例子
以下示例未通过此测试。 模块m1
的参数___location
未分配显式值,因此默认为 resourceGroup().___location
module1.bicep 中指定的参数。 但是,使用资源组位置可能不是预期行为,因为 main.bicep 中的其他资源可能在与资源组的位置不同的位置创建。
main.bicep:
param ___location string = 'eastus'
module m1 'module1.bicep' = {
name: 'm1'
}
resource storageaccount 'Microsoft.Storage/storageAccounts@2024-03-01' = {
name: 'storageaccount'
___location: ___location
kind: 'StorageV2'
sku: {
name: 'Standard_LRS'
}
}
module1.bicep:
param ___location string = resourceGroup().___location
resource stg 'Microsoft.Storage/storageAccounts@2024-03-01' = {
name: 'stg'
___location: ___location
kind: 'StorageV2'
sku: {
name: 'Premium_LRS'
}
}
可以通过显式传入模块 ___location
属性的值来修复失败:
main.bicep:
param ___location string = 'eastus'
module m1 'module1.bicep' = {
name: 'm1'
params: {
___location: ___location // An explicit value will override the default value specified in module1.bicep
}
}
resource storageaccount 'Microsoft.Storage/storageAccounts@2024-03-01' = {
name: 'storageaccount'
___location: ___location
kind: 'StorageV2'
sku: {
name: 'Standard_LRS'
}
}
后续步骤
有关 Linter 的详细信息,请参阅使用 Bicep Linter。