Aturan Linter - tidak ada ekspresi lokasi di luar nilai default parameter
Aturan ini menemukan resourceGroup().location
atau deployment().location
digunakan di luar nilai default parameter.
Kode aturan Linter
Gunakan nilai berikut pada file konfigurasi Bicep untuk menyesuaikan pengaturan aturan:
no-loc-expr-outside-params
Solusi
resourceGroup().location
dan deployment().location
hanya boleh digunakan sebagai nilai default parameter.
Pengguna templat mungkin memiliki akses terbatas ke wilayah di mana mereka dapat membuat sumber daya. Ekspresi resourceGroup().location
atau deployment().location
dapat memblokir pengguna jika grup sumber daya atau penyebaran dibuat di wilayah yang tidak dapat diakses pengguna, sehingga mencegah mereka menggunakan templat.
Praktik terbaik menyarankan bahwa untuk mengatur lokasi sumber daya Anda, templat Anda harus memiliki parameter untai (karakter) bernama location
. Jika Anda mengatur default location
parameter ke resourceGroup().location
atau deployment().location
daripada menggunakan fungsi-fungsi ini di tempat lain dalam templat, pengguna templat dapat menggunakan nilai default bila nyaman tetapi juga menentukan lokasi yang berbeda bila diperlukan.
resource storageaccount 'Microsoft.Storage/storageAccounts@2021-02-01' = {
location: resourceGroup().location
}
Anda dapat memperbaiki kegagalan dengan membuat location
properti default resourceGroup().location
dan menggunakan parameter baru ini sebagai gantinya:
param location string = resourceGroup().location
resource storageaccount 'Microsoft.Storage/storageAccounts@2021-02-01' = {
location: location
}
Contoh berikut gagal dalam pengujian ini karena location
tidak menggunakan resourceGroup().location
parameter:
var location = resourceGroup().location
Anda dapat memperbaiki kegagalan dengan mengubah variabel menjadi parameter:
param location string = resourceGroup().location
Jika Anda menggunakan Azure PowerShell untuk menyebarkan ke langganan, grup manajemen, atau penyewa, Anda harus menggunakan nama parameter selain location
. Perintah New-AzDeployment, New-AzManagementGroupDeployment, dan New-AzTenantDeployment memiliki parameter bernama location
. Parameter perintah ini bertentangan dengan parameter dalam file Bicep Anda. Anda dapat menghindari konflik ini dengan menggunakan nama seperti rgLocation
.
Anda dapat menggunakan location
untuk nama parameter saat menyebarkan ke grup sumber daya, karena New-AzResourceGroupDeployment tidak memiliki parameter bernama location
.
Langkah berikutnya
Untuk informasi selengkapnya tentang linter, lihat Menggunakan linter Bicep.