リンター ルール - パラメーターの既定値以外の場所の式はありません

このルールは、パラメーターの既定値以外で使用 resourceGroup().location または deployment().location を検索します。

このルールは、既定ではオフになっています。 bicepconfig.json のレベルを変更して有効にします。

リンター ルールのコード

ルール設定をカスタマイズするには、Bicep 構成ファイルで次の値を使用します。

no-loc-expr-outside-params

解決策

resourceGroup().location および deployment().location は、パラメーターの既定値としてのみ使用する必要があります。

テンプレート ユーザーは、リソースを作成できるリージョンへのアクセスが制限される場合があります。 resourceGroup().locationまたはdeployment().location式は、ユーザーがアクセスできないリージョンにリソース グループまたはデプロイが作成された場合にユーザーをブロックする可能性があるため、テンプレートを使用できません。

ベスト プラクティスとして、リソースの場所を設定するには、テンプレートに location という名前の文字列パラメーターが必要です。 テンプレート内の他の場所でこれらの関数を使用する代わりに、 location パラメーターを resourceGroup().location または deployment().location する場合、テンプレートのユーザーは便利な場合に既定値を使用できますが、必要に応じて別の場所を指定することもできます。

resource storageaccount 'Microsoft.Storage/storageAccounts@2025-06-01' = {
  location: resourceGroup().location
}

既定で location に設定されている resourceGroup().location プロパティを作成し、代わりにこの新しいパラメーターを使用することで、エラーを修正できます。

param location string = resourceGroup().location

resource storageaccount 'Microsoft.Storage/storageAccounts@2025-06-01' = {
  location: location
}

次の例では、 locationresourceGroup().location を使用していますが、パラメーターではないので、このテストは失敗します。

  var location = resourceGroup().location

変数をパラメーターに変換することで、エラーを修正できます。

  param location string  = resourceGroup().location

Azure PowerShell を使用してサブスクリプション、管理グループ、またはテナントにデプロイする場合は、 location以外のパラメーター名を使用する必要があります。 New-AzDeploymentNew-AzManagementGroupDeployment、および New-AzTenantDeployment コマンドには、locationという名前のパラメーターがあります。 このコマンド パラメーターは、Bicep ファイル内のパラメーターと競合します。 rgLocationなどの名前を使用すると、この競合を回避できます。

location には という名前のパラメーターがないため、リソース グループにデプロイするときにパラメーター名にlocationを使用できます。

次のステップ

リンターの詳細については、「Bicep リンターの使用方法」を参照してください。