Правило Linter — использование функций идентификатора ресурса
Гарантирует, что идентификатор символьного имени ресурса или подходящая функция используется вместо созданного вручную идентификатора, например строки объединения, для всех свойств, представляющих идентификатор ресурса. Используйте символьные имена ресурсов всякий раз, когда это возможно.
Допустимые функции включают:
Код правила анализатора кода
Для настройки параметров правил укажите в файле конфигурации Bicep следующее значение:
use-resource-id-functions
Решение
Следующий пример завершается сбоем этого теста, так как свойство ресурса api/id
использует созданную вручную строку:
@description('description')
param connections_azuremonitorlogs_name string
@description('description')
param location string
@description('description')
param resourceTags object
param tenantId string
resource connections_azuremonitorlogs_name_resource 'Microsoft.Web/connections@2016-06-01' = {
name: connections_azuremonitorlogs_name
location: location
tags: resourceTags
properties: {
displayName: 'azuremonitorlogs'
statuses: [
{
status: 'Connected'
}
]
nonSecretParameterValues: {
'token:TenantId': tenantId
'token:grantType': 'code'
}
api: {
name: connections_azuremonitorlogs_name
displayName: 'Azure Monitor Logs'
description: 'Use this connector to query your Azure Monitor Logs across Log Analytics workspace and Application Insights component, to list or visualize results.'
iconUri: 'https://connectoricons-prod.azureedge.net/releases/v1.0.1501/1.0.1501.2507/${connections_azuremonitorlogs_name}/icon.png'
brandColor: '#0072C6'
id: '/subscriptions/<subscription_id_here>/providers/Microsoft.Web/locations/<region_here>/managedApis/${connections_azuremonitorlogs_name}'
type: 'Microsoft.Web/locations/managedApis'
}
}
}
Ее можно исправить с помощью subscriptionResourceId()
функции:
@description('description')
param connections_azuremonitorlogs_name string
@description('description')
param location string
@description('description')
param resourceTags object
param tenantId string
resource connections_azuremonitorlogs_name_resource 'Microsoft.Web/connections@2016-06-01' = {
name: connections_azuremonitorlogs_name
location: location
tags: resourceTags
properties: {
displayName: 'azuremonitorlogs'
statuses: [
{
status: 'Connected'
}
]
nonSecretParameterValues: {
'token:TenantId': tenantId
'token:grantType': 'code'
}
api: {
name: connections_azuremonitorlogs_name
displayName: 'Azure Monitor Logs'
description: 'Use this connector to query your Azure Monitor Logs across Log Analytics workspace and Application Insights component, to list or visualize results.'
iconUri: 'https://connectoricons-prod.azureedge.net/releases/v1.0.1501/1.0.1501.2507/${connections_azuremonitorlogs_name}/icon.png'
brandColor: '#0072C6'
id: subscriptionResourceId('Microsoft.Web/locations/managedApis', location, connections_azuremonitorlogs_name)
type: 'Microsoft.Web/locations/managedApis'
}
}
}
Следующие шаги
Дополнительные сведения об анализаторе кода Bicep см. в разделе Использование анализатора кода Bicep.