Linter-Regel: Keine Standortausdrücke außerhalb von Parameterstandardwerten
Diese Regel sucht resourceGroup().location
oder deployment().location
, die außerhalb eines Parameterstandardwerts verwendet werden.
Linter-Regelcode
Verwenden Sie den folgenden Wert in der Bicep-Konfigurationsdatei, um die Regeleinstellungen anzupassen:
no-loc-expr-outside-params
Lösung
resourceGroup().location
und deployment().location
sollten nur als Standardwert eines Parameters verwendet werden.
Vorlagenbenutzer haben möglicherweise eingeschränkten Zugriff auf Regionen, in denen sie Ressourcen erstellen können. Die Ausdrücke resourceGroup().location
oder deployment().location
könnten Benutzer blockieren, wenn die Ressourcengruppe oder Bereitstellung in einer Region erstellt wurde, auf die der Benutzer nicht zugreifen kann, wodurch er an der Verwendung der Vorlage gehindert wird.
Die bewährte Methode schlägt vor, dass Ihre Vorlage zum Festlegen der Standorte Ihrer Ressourcen einen Zeichenfolgenparameter namens location
enthalten sollte. Wenn Sie den location
-Parameter standardmäßig auf resourceGroup().location
oder deployment().location
festlegen, anstatt diese Funktionen an anderer Stelle in der Vorlage zu verwenden, können Benutzer der Vorlage den Standardwert verwenden, wenn dies praktisch ist, aber bei Bedarf auch einen anderen Ort angeben.
resource storageaccount 'Microsoft.Storage/storageAccounts@2023-04-01' = {
location: resourceGroup().location
}
Sie können den Fehler beheben, indem Sie eine location
-Eigenschaft erstellen, die den Standardwert resourceGroup().location
annimmt, und stattdessen diesen neuen Parameter verwenden:
param location string = resourceGroup().location
resource storageaccount 'Microsoft.Storage/storageAccounts@2023-04-01' = {
location: location
}
Im folgenden Beispiel schlägt dieser Test fehl, da location
resourceGroup().location
verwendet, aber kein Parameter ist.
var location = resourceGroup().location
Sie können den Fehler beheben, indem Sie die Variable in einen Parameter umwandeln:
param location string = resourceGroup().location
Wenn Sie Azure PowerShell zum Bereitstellen in einem Abonnement, einer Verwaltungsgruppe oder einem Mandanten verwenden, sollten Sie einen anderen Parameternamen als location
verwenden. Die Befehle New-AzDeployment, New-AzManagementGroupDeployment und New-AzTenantDeployment haben einen Parameter namens location
. Dieser Befehlsparameter steht mit dem Parameter in Ihrer Bicep-Datei in Konflikt. Sie können diesen Konflikt vermeiden, indem Sie einen Namen wie z. B. rgLocation
verwenden.
Sie können beim Bereitstellen in einer Ressourcengruppe location
als Parameternamen verwenden, da New-AzResourceGroupDeployment keinen Parameter namens location
hat.
Nächste Schritte
Weitere Informationen über den Linter finden Sie unter Verwendung des Bicep-Linters.