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 Linter
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, uniemożliwiając 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 to location
resourceGroup().location
lub deployment().location
zamiast używać tych funkcji w innym miejscu szablonu, 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@2023-04-01' = {
location: resourceGroup().location
}
Możesz naprawić błąd, tworząc właściwość domyślną location
resourceGroup().location
i używając tego nowego parametru:
param location string = resourceGroup().location
resource storageaccount 'Microsoft.Storage/storageAccounts@2023-04-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 programu 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
.
Nazwy 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 lintera, zobacz Use Bicep linter (Używanie lintera Bicep).