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@2023-04-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@2023-04-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.