Freigeben über


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 locationresourceGroup().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.