Regra de Linter - use valores explícitos para parâmetros de localização do módulo
Esta regra localiza parâmetros de módulo que são usados para locais de recursos e podem inadvertidamente usar como padrão um valor inesperado.
Código da regra de linha
Use o seguinte valor no arquivo de configuração do Bicep para personalizar as configurações da regra:
explicit-values-for-loc-params
Solução
Quando você consome um módulo, quaisquer parâmetros relacionados ao local que tenham um valor padrão devem receber um valor explícito. Os parâmetros relacionados ao local incluem parâmetros que têm uma referência de resourceGroup().location
valor padrão ou deployment().location
também qualquer parâmetro que é referenciado a partir da propriedade location de um recurso.
Um parâmetro que assume como padrão o local de um grupo de recursos ou implantação é conveniente quando um arquivo bicep é usado como um modelo de implantação principal. No entanto, quando esse valor padrão é usado em um módulo, ele pode causar um comportamento inesperado se os recursos do modelo principal não estiverem localizados na mesma região que o grupo de recursos.
Exemplos
O exemplo a seguir falha neste teste. O parâmetro do módulo m1
não recebe um valor explícito, portanto, o padrão é resourceGroup().location
, conforme especificado em module1.bicep.location
Mas usar o local do grupo de recursos pode não ser o comportamento pretendido, uma vez que outros recursos em main.bicep podem ser criados em um local diferente do local do grupo de recursos.
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'
}
}
módulo1.bíceps:
param location string = resourceGroup().location
resource stg 'Microsoft.Storage/storageAccounts@2024-03-01' = {
name: 'stg'
location: location
kind: 'StorageV2'
sku: {
name: 'Premium_LRS'
}
}
Você pode corrigir a falha passando explicitamente um valor para a propriedade do location
módulo:
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'
}
}
Próximos passos
Para obter mais informações sobre o linter, consulte Usar binter linter.