このルールは、パラメーターの既定値以外で使用 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
}
次の例では、 location は resourceGroup().location を使用していますが、パラメーターではないので、このテストは失敗します。
var location = resourceGroup().location
変数をパラメーターに変換することで、エラーを修正できます。
param location string = resourceGroup().location
Azure PowerShell を使用してサブスクリプション、管理グループ、またはテナントにデプロイする場合は、 location以外のパラメーター名を使用する必要があります。
New-AzDeployment、New-AzManagementGroupDeployment、および New-AzTenantDeployment コマンドには、locationという名前のパラメーターがあります。 このコマンド パラメーターは、Bicep ファイル内のパラメーターと競合します。
rgLocationなどの名前を使用すると、この競合を回避できます。
location には という名前のパラメーターがないため、リソース グループにデプロイするときにパラメーター名にlocationを使用できます。
次のステップ
リンターの詳細については、「Bicep リンターの使用方法」を参照してください。