次の方法で共有


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

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

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

リンター ルールのコード

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

explicit-values-for-loc-params

解決策

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

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

例示

次の例では、このテストは失敗します。 モジュール m1のパラメーター ___locationには明示的な値が割り当てられていないため、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 リンターの使用方法」を参照してください。