リンター ルール - モジュールの場所のパラメーターに明示的な値を使用します

このルールは、リソースの場所に使用されるモジュール パラメーターのうち、誤って予期しない値を規定値にしてしまう可能性のあるモジュール パラメーターを検出します。

リンター ルールのコード

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

explicit-values-for-loc-params

解決策

モジュールを使用する際、既定値を持つ場所に関連するパラメーターには、明示的な値を割り当てる必要があります。 場所に関連するパラメーターには、規定値がresourceGroup().locationまたはdeployment().locationを参照するパラメーターや、リソースの場所プロパティから参照される任意のパラメーターがあります。

リソース グループまたはデプロイの場所を既定値で指定するパラメーターは、Bicep ファイルがメインのデプロイ テンプレートとして使用される場合に便利です。 ただし、このような既定値がモジュールで使用されている場合、メイン テンプレートのリソースがリソース グループと同じ場所に存在しない場合、予期しない動作が発生する可能性があります。

次の例は、このテストで不合格になります。 モジュール m1 のパラメーター location に明示的な値が割り当てられていないため、module1.bicep で指定されているように、既定で resourceGroup().location に設定されます。 ただし、 main.bicep の他のリソースは、リソース グループの場所とは異なる場所に作成される可能性があるため、リソース グループの場所の使用は意図した動作ではない場合があります。

main.bicep:

param location string = 'eastus'

module m1 'module1.bicep' = {
 name: 'm1'
}

resource storageaccount 'Microsoft.Storage/storageAccounts@2024-03-01' = {
  name: 'storageaccount'
  location: location
  kind: 'StorageV2'
  sku: {
    name: 'Standard_LRS'
  }
}

module1.bicep:

param location string = resourceGroup().location

resource stg 'Microsoft.Storage/storageAccounts@2024-03-01' = {
  name: 'stg'
  location: location
  kind: 'StorageV2'
  sku: {
    name: 'Premium_LRS'
  }
}

この失敗を修正するには、モジュールのlocation プロパティの値を明示的に渡します。

main.bicep:

param location string = 'eastus'

module m1 'module1.bicep' = {
  name: 'm1'
  params: {
   location: location // An explicit value will override the default value specified in module1.bicep
  }
}

resource storageaccount 'Microsoft.Storage/storageAccounts@2024-03-01' = {
  name: 'storageaccount'
  location: location
  kind: 'StorageV2'
  sku: {
    name: 'Standard_LRS'
  }
}

次のステップ

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