Linter kuralı - modül konumu parametreleri için açık değerler kullanın

Bu kural, kaynak konumları için kullanılan modül parametrelerini bulur ve yanlışlıkla beklenmeyen bir değere varsayılan olarak ayarlanabilir.

Linter kural kodu

Kural ayarlarını özelleştirmek için Bicep yapılandırma dosyasında aşağıdaki değeri kullanın:

explicit-values-for-loc-params

Çözüm

Bir modülü kullandığınızda, varsayılan değere sahip konumla ilgili parametrelere açık bir değer atanmalıdır. Konumla ilgili parametreler, başvuruda resourceGroup().location deployment().location bulunan varsayılan değere sahip parametreleri ve ayrıca kaynağın konum özelliğinden başvurulan parametreleri içerir.

Kaynak grubunun veya dağıtımın konumunu varsayılan olarak belirten bir parametre, bir bicep dosyası ana dağıtım şablonu olarak kullanıldığında kullanışlıdır. Ancak modülde böyle bir varsayılan değer kullanıldığında, ana şablonun kaynakları kaynak grubuyla aynı bölgede yer almıyorsa beklenmeyen davranışlara neden olabilir.

Örnekler

Aşağıdaki örnek bu testi başarısız yapar. Modülün m1parametresine location açık bir değer atanmadığından, module1.bicep'te belirtildiği gibi varsayılan resourceGroup().locationolarak olur. Ancak main.bicep'teki diğer kaynaklar kaynak grubunun konumundan farklı bir konumda oluşturulabileceğinden, kaynak grubu konumunu kullanmak istenen davranış olmayabilir.

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'
  }
}

Modülün location özelliği için açıkça bir değer geçirerek hatayı düzeltebilirsiniz:

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'
  }
}

Sonraki adımlar

Lint hakkında daha fazla bilgi için bkz . Bicep linter'i kullanma.