Reguła lintera — brak wyrażeń lokalizacji poza wartościami domyślnymi parametrów
Ta reguła znajduje resourceGroup().location
lub deployment().location
jest używana poza wartością domyślną parametru.
Kod reguły lintera
Użyj następującej wartości w pliku konfiguracji Bicep , aby dostosować ustawienia reguły:
no-loc-expr-outside-params
Rozwiązanie
resourceGroup().location
i deployment().location
powinny być używane tylko jako wartość domyślna parametru.
Użytkownicy szablonów mogą mieć ograniczony dostęp do regionów, w których mogą tworzyć zasoby. Wyrażenia resourceGroup().location
lub deployment().location
mogą blokować użytkowników, jeśli grupa zasobów lub wdrożenie zostało utworzone w regionie, do którego użytkownik nie może uzyskać dostępu, co uniemożliwia im korzystanie z szablonu.
Najlepsze rozwiązanie sugeruje, że aby ustawić lokalizacje zasobów, szablon powinien mieć parametr ciągu o nazwie location
. Jeśli domyślnie parametr ma location
wartość resourceGroup().location
lub deployment().location
zamiast używać tych funkcji w innym miejscu w szablonie, użytkownicy szablonu mogą używać wartości domyślnej, gdy jest to wygodne, ale także określić inną lokalizację w razie potrzeby.
resource storageaccount 'Microsoft.Storage/storageAccounts@2021-02-01' = {
location: resourceGroup().location
}
Ten błąd można naprawić, tworząc właściwość domyślną location
dla parametru resourceGroup().location
i zamiast tego użyj tego nowego parametru:
param location string = resourceGroup().location
resource storageaccount 'Microsoft.Storage/storageAccounts@2021-02-01' = {
location: location
}
Poniższy przykład kończy się niepowodzeniem tego testu, ponieważ location
jest używany resourceGroup().location
, ale nie jest parametrem:
var location = resourceGroup().location
Błąd można naprawić, zamieniając zmienną w parametr:
param location string = resourceGroup().location
Jeśli używasz Azure PowerShell do wdrożenia w subskrypcji, grupie zarządzania lub dzierżawie, użyj nazwy parametru innej niż location
. Polecenia New-AzDeployment, New-AzManagementGroupDeployment i New-AzTenantDeployment mają parametr o nazwie location
. Ten parametr polecenia powoduje konflikt z parametrem w pliku Bicep. Ten konflikt można uniknąć, używając nazwy takiej jak rgLocation
.
Nazwę parametru można użyć location
podczas wdrażania w grupie zasobów, ponieważ polecenie New-AzResourceGroupDeployment nie ma parametru o nazwie location
.
Następne kroki
Aby uzyskać więcej informacji na temat linter, zobacz Use Bicep linter (Używanie lintera Bicep).