你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
Linter 规则 - 没有硬编码的环境 URL
此规则查找因云环境而异的任何硬编码 URL。
Linter 规则代码
请在 Bicep 配置文件中使用以下值自定义规则设置:
no-hardcoded-env-urls
解决方案
使用环境函数在部署期间动态获取这些 URL,而不是在 Bicep 文件中硬编码 URL。 环境函数根据要部署到的云环境返回不同的 URL。
下面的示例未通过此测试,因为 URL 已进行硬编码。
var managementURL = 'https://management.azure.com'
与 concat 或 uri 一起使用时,此测试也会失败。
var galleryURL1 = concat('https://','gallery.azure.com')
var galleryURL2 = uri('gallery.azure.com','test')
可以通过将硬编码 URL 替换为 environment()
函数来修复此问题。
var galleryURL = environment().gallery
在某些情况下,可以通过从已部署的资源获取属性来修复此问题。 例如,使用 .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
配置
默认情况下,此规则使用下列设置来确定不允许哪些 URL。
"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"
]
}
}
}
}
可以通过添加 bicepconfig.json 文件并应用新设置来自定义它。
后续步骤
有关 Linter 的详细信息,请参阅使用 Bicep Linter。