リンター ルール - パラメーターの既定値以外の位置表現は不可
このルールは、パラメーターの既定値以外で使用されるresourceGroup().location
またはdeployment().location
を検出します。
リンター ルールのコード
ルール設定をカスタマイズするには、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@2023-04-01' = {
location: resourceGroup().location
}
規定でresourceGroup().location
になるlocation
プロパティを作成し、代わりにこの新しいパラメータを使用することで、失敗を修正できます。
param location string = resourceGroup().location
resource storageaccount 'Microsoft.Storage/storageAccounts@2023-04-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
のような名前を使用して回避できます。
New-AzResourceGroupDeployment には location
という名前のパラメーターがないため、リソース グループにデプロイするときはパラメーター名に location
を使用できます。
次のステップ
リンターの詳細については、「Bicep リンターの使用方法」を参照してください。