Aturan Linter - tidak ada URL lingkungan yang di-hardcode
Aturan ini menemukan URL berkode permanen yang bervariasi menurut lingkungan cloud.
Kode aturan Linter
Gunakan nilai berikut pada file konfigurasi Bicep untuk menyesuaikan pengaturan aturan:
no-hardcoded-env-urls
Solusi
Alih-alih menggunakan URL kode permanen di file Bicep Anda, gunakan fungsi lingkungan untuk mendapatkan URL ini secara dinamis selama penyebaran. Fungsi lingkungan mengembalikan URL yang berbeda berdasarkan lingkungan cloud tempat Anda menyebarkan.
Contoh berikut gagal dalam pengujian ini karena URL dikodekan secara permanen.
var managementURL = 'https://management.azure.com'
Pengujian juga gagal ketika digunakan dengan concat atau uri.
var galleryURL1 = concat('https://','gallery.azure.com')
var galleryURL2 = uri('gallery.azure.com','test')
Anda dapat memperbaikinya dengan mengganti URL yang dikodekan secara permanen dengan fungsi environment()
.
var galleryURL = environment().gallery
Dalam beberapa kasus, Anda dapat memperbaikinya dengan mendapatkan properti dari sumber daya yang telah Anda sebarkan. Misalnya, alih-alih membangun titik akhir untuk akun penyimpanan Anda, ambil dengan .properties.primaryEndpoints
.
param storageAccountName string
param location string = resourceGroup().location
resource sa 'Microsoft.Storage/storageAccounts@2022-09-01' = {
name: storageAccountName
location: location
sku: {
name: 'Standard_LRS'
}
kind: 'StorageV2'
properties: {
accessTier: 'Hot'
}
}
output endpoint string = sa.properties.primaryEndpoints.web
Konfigurasi
Secara default, aturan ini menggunakan pengaturan berikut untuk menentukan URL mana yang dianulir.
"analyzers": {
"core": {
"verbose": false,
"enabled": true,
"rules": {
"no-hardcoded-env-urls": {
"level": "warning",
"disallowedhosts": [
"gallery.azure.com",
"management.core.windows.net",
"management.azure.com",
"database.windows.net",
"core.windows.net",
"login.microsoftonline.com",
"graph.windows.net",
"trafficmanager.net",
"datalake.azure.net",
"azuredatalakestore.net",
"azuredatalakeanalytics.net",
"vault.azure.net",
"api.loganalytics.io",
"asazure.windows.net",
"region.asazure.windows.net",
"batch.core.windows.net"
],
"excludedhosts": [
"schema.management.azure.com"
]
}
}
}
}
Anda dapat menyesuaikannya dengan menambahkan file bicepconfig.json dan menerapkan pengaturan baru.
Langkah berikutnya
Untuk informasi selengkapnya tentang linter, lihat Menggunakan linter Bicep.