如果所分配值的类型与属性预期接收的数据类型不一致,则会出现此诊断。
说明
属性<属性名称>应为<数据类型>类型的值,但提供的是<数据类型>类型的值。
Level
警告/错误
解决方案
分配一个具有正确数据类型的值。
示例
以下示例会引发此诊断,因为 sku 定义为字符串,而不是整数:
type storageAccountConfigType = {
name: string
sku: string
}
param foo storageAccountConfigType = {
name: 'myStorage'
sku: 2
}
可以通过将字符串值分配给 sku 来解决此问题:
type storageAccountConfigType = {
name: string
sku: string
}
param foo storageAccountConfigType = {
name: 'myStorage'
sku: 'Standard_LRS'
}
以下示例提出诊断问题,是因为该 accessPolicies 属性期望单个对象数组 AccessPolicyEntry 。 循环内嵌套括号[ ... ]会让它生成一个数组数组。
param principalIds array = [
'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'
'yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy'
]
resource keyVault 'Microsoft.KeyVault/vaults@2021-10-01' = {
name: 'my-kv-001'
location: resourceGroup().location
properties: {
tenantId: subscription().tenantId
sku: {
family: 'A'
name: 'standard'
}
accessPolicies: [
for principalId in principalIds: [ // <--- The extra array brackets here [ ]
{
objectId: principalId
tenantId: subscription().tenantId
permissions: {
secrets: ['Get', 'List']
}
}
]
]
}
}
解决方法是移除循环中生成物品周围不必要的数组括号([])。 这将创建单个 AccessPolicyEntry 对象数组,符合该 accessPolicies 属性的预期。
param principalIds array = [
'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'
'yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy'
]
resource keyVault 'Microsoft.KeyVault/vaults@2021-10-01' = {
name: 'my-kv-001'
location: resourceGroup().location
properties: {
tenantId: subscription().tenantId
sku: {
family: 'A'
name: 'standard'
}
accessPolicies: [
for principalId in principalIds: {
objectId: principalId
tenantId: subscription().tenantId
permissions: {
secrets: ['Get', 'List']
}
}
]
}
}
后续步骤
有关 Bicep 诊断的详细信息,请参阅 Bicep 核心诊断。