Regra linter – sem expressões de localização fora dos valores padrão do parâmetro
Essa regra localiza o resourceGroup().location
ou o deployment().location
usado fora de um valor padrão do parâmetro.
Código de regra linter
Use o seguinte valor no arquivo de configuração Bicep para personalizar as configurações de regra:
no-loc-expr-outside-params
Solução
O resourceGroup().location
e o deployment().location
só devem ser usados como o valor padrão de um parâmetro.
Os usuários do modelo podem ter acesso limitado a regiões em que podem criar recursos. As expressões resourceGroup().location
ou deployment().location
podem bloquear os usuários, se a implantação ou o grupo de recursos foi criado em uma região que o usuário não pode acessar, impedindo que ele use o modelo.
A melhor prática sugere que, para definir a localização dos recursos, o modelo deve ter um parâmetro de cadeia de caracteres chamado location
. Se o padrão do parâmetro location
for resourceGroup().location
ou deployment().location
, em vez de usar essas funções em outro lugar no modelo, os usuários do modelo poderão usar o valor padrão quando oportuno, mas também especificar um local diferente quando necessário.
resource storageaccount 'Microsoft.Storage/storageAccounts@2023-04-01' = {
location: resourceGroup().location
}
Você pode corrigir a falha criando uma propriedade location
cujo padrão é resourceGroup().location
e usar esse novo parâmetro:
param location string = resourceGroup().location
resource storageaccount 'Microsoft.Storage/storageAccounts@2023-04-01' = {
location: location
}
O exemplo a seguir falha nesse teste porque location
está usando resourceGroup().location
, mas não é um parâmetro:
var location = resourceGroup().location
Você pode corrigir essa falha transformando a variável em um parâmetro:
param location string = resourceGroup().location
Se você estiver usando o Azure PowerShell para implantar em uma assinatura, grupo de gerenciamento ou locatário, use um nome de parâmetro diferente de location
. Os comandos New-AzDeployment, New-AzManagementGroupDeployment e New-AzTenantDeployment têm um parâmetro chamado location
. Esse parâmetro de comando entra em conflito com o parâmetro no arquivo Bicep. Você pode evitar esse conflito usando um nome como rgLocation
.
Você pode usar location
para um nome de parâmetro ao implantar em um grupo de recursos, porque New-AzResourceGroupDeployment não tem um parâmetro chamado location
.
Próximas etapas
Para saber mais sobre o linter, confira Usar o linter do Bicep.