Linter 规则 - 没有硬编码的环境 URL
此规则查找因云环境而异的任何硬编码 URL。
Linter 规则代码
请在 Bicep 配置文件中使用以下值自定义规则设置:
no-hardcoded-env-urls
解决方案
使用环境函数在部署期间动态获取这些 URL,而不是在 Bicep 文件中硬编码 URL。 环境函数根据要部署到的云环境返回不同的 URL。
下面的示例未通过此测试,因为 URL 已进行硬编码。
var managementURL = 'https://management.chinacloudapi.cn'
与 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
resource sa 'Microsoft.Storage/storageAccounts@2021-04-01' = {
name: storageAccountName
location: 'chinanorth'
sku: {
name: 'Standard_LRS'
}
kind: 'StorageV2'
properties: {
accessTier: 'Hot'
}
}
output endpoint string = sa.properties.primaryEndpoints.web
配置
默认情况下,此规则使用以下设置来确定 Azure 中国云中不允许使用哪些 URL。
"analyzers": {
"core": {
"verbose": false,
"enabled": true,
"rules": {
"no-hardcoded-env-urls": {
"level": "warning",
"disallowedhosts": [
"gallery.azure.com",
"management.core.chinacloudapi.cn",
"management.chinacloudapi.cn",
"database.chinacloudapi.cn",
"core.chinacloudapi.cn",
"login.chinacloudapi.cn",
"microsoftgraph.chinacloudapi.cn",
"trafficmanager.cn",
"datalake.chinacloudapi.cn",
"azuredatalakestore.net",
"azuredatalakeanalytics.net",
"vault.azure.cn",
"api.loganalytics.io",
"asazure.chinacloudapi.cn",
"region.asazure.chinacloudapi.cn",
"batch.core.chinacloudapi.cn"
],
"excludedhosts": [
"schema.management.azure.com"
]
}
}
}
}
可以通过添加 bicepconfig.json 文件并应用新设置来自定义它。
后续步骤
有关 Linter 的详细信息,请参阅使用 Bicep Linter。