Aturan linter - gunakan nilai eksplisit untuk parameter lokasi modul
Aturan ini menemukan parameter modul yang digunakan untuk lokasi sumber daya dan mungkin secara tidak sengaja default ke nilai yang tidak terduga.
Kode aturan linter
Gunakan nilai berikut pada file konfigurasi Bicep untuk menyesuaikan pengaturan aturan:
explicit-values-for-loc-params
Solusi
Saat Anda mengonsumsi modul, parameter terkait lokasi apa pun yang memiliki nilai default harus diberi nilai eksplisit. Parameter terkait lokasi mencakup parameter yang memiliki referensi nilai default resourceGroup().location
atau deployment().location
dan juga parameter apa pun yang dirujuk dari properti lokasi sumber daya.
Parameter yang default ke lokasi grup sumber daya atau penyebaran nyaman ketika file bicep digunakan sebagai templat penyebaran utama. Namun, ketika nilai default tersebut digunakan dalam modul, itu dapat menyebabkan perilaku tak terduga jika sumber daya templat utama tidak terletak di wilayah yang sama dengan grup sumber daya.
Contoh
Contoh berikut gagal dalam pengujian ini. Parameter location
modul m1
tidak diberi nilai eksplisit, sehingga defaultnya ke resourceGroup().location
, seperti yang ditentukan dalam module1.bicep. Tetapi menggunakan lokasi grup sumber daya mungkin bukan perilaku yang dimaksudkan, karena sumber daya lain di main.bicep mungkin dibuat di lokasi yang berbeda dari lokasi grup sumber daya.
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'
}
}
Anda dapat memperbaiki kegagalan dengan secara eksplisit meneruskan nilai untuk properti modul 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'
}
}
Langkah berikutnya
Untuk informasi selengkapnya tentang linter, lihat Menggunakan linter Bicep.
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk