Freigeben über


Linter-Regel – keine Standortausdrücke außerhalb von Parameterstandardwerten

Diese Regel findet resourceGroup().___location oder deployment().___location wird außerhalb eines Parameterstandardwerts verwendet.

Hinweis

Diese Regel ist standardmäßig deaktiviert. Ändern Sie die Ebene in bicepconfig.json , um sie zu aktivieren.

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 sollte 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 verhindert wird, dass sie die Vorlage verwenden.

Bewährte Methode empfiehlt, die Speicherorte Ihrer Ressourcen festzulegen, sollte ihre Vorlage über einen Zeichenfolgenparameter mit dem Namen verfügen ___location. Wenn Sie den ___location Parameter standardmäßig an resourceGroup().___location oder deployment().___location statt diese Funktionen an anderer Stelle in der Vorlage verwenden, können Benutzer der Vorlage den Standardwert bei Bedarf verwenden, aber auch einen anderen Speicherort 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 standardmäßig diesen neuen Parameter verwendet und stattdessen resourceGroup().___location verwendet:

param ___location string = resourceGroup().___location

resource storageaccount 'Microsoft.Storage/storageAccounts@2023-04-01' = {
  ___location: ___location
}

Das folgende Beispiel schlägt diesen Test fehl, da ___location er verwendet resourceGroup().___location , 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. Die Befehle New-AzDeployment, New-AzManagementGroupDeployment und New-AzTenantDeployment haben einen Parameter namens ___location. Dieser Befehlsparameter hat einen Konflikt mit dem Parameter in der Bicep-Datei. Sie können diesen Konflikt vermeiden, indem Sie einen Namen wie rgLocationz. B. .

Sie können beim Bereitstellen in einer Ressourcengruppe für einen Parameternamen verwenden ___location , da New-AzResourceGroupDeployment keinen Parameter mit dem Namen ___locationhat.

Nächste Schritte

Weitere Informationen über den Linter finden Sie unter Verwendung des Bicep-Linters.