このルールは、リソースの場所に使用されるモジュール パラメーターを検索し、予期しない値に誤って既定になる可能性があります。
注
このルールは、既定ではオフになっています。 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 リンターの使用方法」を参照してください。