Reguła lintera — brak zakodowanego na stałe adresu URL środowiska
Ta reguła znajduje wszelkie zakodowane adresy URL, które różnią się w zależności od środowiska chmury.
Kod reguły Linter
Użyj następującej wartości w pliku konfiguracji Bicep, aby dostosować ustawienia reguły:
no-hardcoded-env-urls
Rozwiązanie
Zamiast trwale kodować adresy URL w pliku Bicep, użyj funkcji środowiska, aby dynamicznie pobierać te adresy URL podczas wdrażania. Funkcja environment zwraca różne adresy URL na podstawie wdrażanego środowiska w chmurze.
Poniższy przykład kończy się niepowodzeniem tego testu, ponieważ adres URL jest zakodowany na stałe.
var managementURL = 'https://management.azure.com'
Test również kończy się niepowodzeniem w przypadku użycia z concat lub uri.
var galleryURL1 = concat('https://','gallery.azure.com')
var galleryURL2 = uri('gallery.azure.com','test')
Można go naprawić, zastępując zakodowany adres URL funkcją environment()
.
var galleryURL = environment().gallery
W niektórych przypadkach można rozwiązać ten problem, uzyskując właściwość z wdrożonego zasobu. Na przykład zamiast konstruowania punktu końcowego dla konta magazynu pobierz go za pomocą polecenia .properties.primaryEndpoints
.
param storageAccountName string
param location string = resourceGroup().location
resource sa 'Microsoft.Storage/storageAccounts@2023-04-01' = {
name: storageAccountName
location: location
sku: {
name: 'Standard_LRS'
}
kind: 'StorageV2'
properties: {
accessTier: 'Hot'
}
}
output endpoint string = sa.properties.primaryEndpoints.web
Konfigurowanie
Domyślnie ta reguła używa następujących ustawień do określania, które adresy URL są niedozwolone.
"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"
]
}
}
}
}
Można go dostosować, dodając plik bicepconfig.json i stosując nowe ustawienia.
Następne kroki
Aby uzyskać więcej informacji na temat lintera, zobacz Use Bicep linter (Używanie lintera Bicep).