Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Esta regra localiza usos de valores de local do Azure que não são parametrizados.
Observação
Esta regra está desativada por padrão. Altere o nível no bicepconfig.json para habilitá-lo.
Código da regra de linha
Use o seguinte valor no arquivo de configuração do Bicep para personalizar as configurações da regra:
no-hardcoded-location
Solução
Os usuários de modelo podem ter acesso limitado a regiões onde podem criar recursos. Um local de recurso codificado pode impedir que os usuários criem um recurso, impedindo-os de usar o modelo. Ao fornecer um parâmetro de local que assume como padrão o local do grupo de recursos, os usuários podem usar o valor padrão quando conveniente, mas também especificar um local diferente.
Em vez de usar uma string codificada ou um valor de variável, use um parâmetro, a string 'global' ou uma expressão (mas não resourceGroup().location
ou deployment().location
, veja no-loc-expr-outside-params). As práticas recomendadas sugerem que, para definir os locais dos recursos, o modelo deve ter um parâmetro de cadeia de caracteres chamado location
. Esse parâmetro pode usar como padrão o grupo de recursos ou o local de implantação (resourceGroup().location
ou deployment().location
).
O exemplo a seguir falha nesse teste porque a propriedade do location
recurso usa um literal de cadeia de caracteres:
resource stg 'Microsoft.Storage/storageAccounts@2024-01-01' = {
name: 'stg'
location: 'westus'
kind: 'StorageV2'
sku: {
name: 'Premium_LRS'
}
}
Você pode corrigi-lo criando um novo location
parâmetro string (que opcionalmente pode ter um valor padrão - resourceGroup().location é frequentemente usado como padrão):
param location string = resourceGroup().location
resource stg 'Microsoft.Storage/storageAccounts@2023-04-01' = {
name: 'stg${uniqueString(resourceGroup().id)}'
location: location
kind: 'StorageV2'
sku: {
name: 'Premium_LRS'
}
}
Use a Correção Rápida para criar um parâmetro de local e substituir a cadeia de caracteres literal pelo nome do parâmetro. Veja a seguinte captura de tela:
O exemplo a seguir falha nesse teste porque a propriedade do location
recurso usa uma variável com um literal de cadeia de caracteres.
var location = 'westus'
resource stg 'Microsoft.Storage/storageAccounts@2023-04-01' = {
location: location
}
Você pode corrigi-lo transformando a variável em um parâmetro:
param location string = 'westus'
resource stg 'Microsoft.Storage/storageAccounts@2023-04-01' = {
location: location
}
O exemplo a seguir falha nesse teste porque um literal de cadeia de caracteres está sendo passado para um parâmetro de módulo que, por sua vez, é usado para a propriedade de location
um recurso:
module m1 'module1.bicep' = {
name: 'module1'
params: {
location: 'westus'
}
}
onde module1.bicep é:
param location string
resource storageaccount 'Microsoft.Storage/storageAccounts@2023-04-01' = {
name: 'storageaccount'
location: location
kind: 'StorageV2'
sku: {
name: 'Premium_LRS'
}
}
Você pode corrigir a falha criando um novo parâmetro para o valor:
param location string // optionally with a default value
module m1 'module1.bicep' = {
name: 'module1'
params: {
location: location
}
}
Próximos passos
Para obter mais informações sobre o linter, consulte Usar binter linter.