Partilhar via


Regra de Linter - sem expressões de localização fora dos valores padrão do parâmetro

Esta regra localiza resourceGroup().location ou deployment().location é usada fora de um valor padrão de parâmetro.

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-loc-expr-outside-params

Solução

resourceGroup().location e deployment().location só deve ser usado como o valor padrão de um parâmetro.

Os usuários de modelo podem ter acesso limitado a regiões onde podem criar recursos. As expressões resourceGroup().location ou deployment().location podem bloquear usuários se o grupo de recursos ou implantação foi criado em uma região que o usuário não pode acessar, impedindo-os de usar o modelo.

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. Se você definir como padrão o location parâmetro para resourceGroup().location ou deployment().location em vez de usar essas funções em outro lugar do modelo, os usuários do modelo podem usar o valor padrão quando conveniente, mas também especificar um local diferente quando necessário.

resource storageaccount 'Microsoft.Storage/storageAccounts@2021-02-01' = {
  location: resourceGroup().location
}

Você pode corrigir a falha criando uma location propriedade padrão e resourceGroup().location usar esse novo parâmetro em vez disso:

param location string = resourceGroup().location

resource storageaccount 'Microsoft.Storage/storageAccounts@2021-02-01' = {
  location: location
}

O exemplo a seguir falha neste teste porque location está usando resourceGroup().location , mas não é um parâmetro:

  var location = resourceGroup().location

Você pode corrigir a 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, deverá usar um nome de parâmetro diferente de location. Os comandos New-AzDeployment, New-AzManagementGroupDeployment e New-AzTenantDeployment têm um parâmetro chamado location. Este 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óximos passos

Para obter mais informações sobre o linter, consulte Usar binter linter.