Udostępnij przez


Kod diagnostyczny bicepsa - BCP036

Ta diagnostyka zachodzi, gdy przypisujesz wartość właściwości, której oczekiwany typ danych nie jest zgodny z typem przypisanej wartości.

Description

Własność-nazwa <> oczekiwała wartości typu <data-type>, ale podana wartość to typ <data-type>.

Level

Ostrzeżenie / Błąd

Rozwiązanie

Przypisz wartość z poprawnym typem danych.

Przykłady

Poniższy przykład podnosi problem diagnostyczny, ponieważ sku jest definiowany jako ciąg znaków, a nie liczba całkowita:

type storageAccountConfigType = {
  name: string
  sku: string
}

param foo storageAccountConfigType = {
  name: 'myStorage'
  sku: 2
}

Problem można rozwiązać, przypisując wartość ciągu do sku:

type storageAccountConfigType = {
  name: string
  sku: string
}

param foo storageAccountConfigType = {
  name: 'myStorage'
  sku: 'Standard_LRS' 
}

Poniższy przykład podnosi poziom diagnostyczny, ponieważ accessPolicies własność oczekuje tablicy pojedynczych AccessPolicyEntry obiektów. Zagnieżdżone nawiasy [ ... ] wewnątrz pętli powodują, że tworzy ona tablicę tablic.

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']
          }
        }
      ]
    ]
  }
}

Rozwiązaniem jest usunięcie niepotrzebnych nawiasów tablicowych ([]) wokół przedmiotu generowanego wewnątrz pętli. To utworzy tablicę pojedynczych obiektów AccessPolicyEntry, zgodnie z oczekiwaniami tej accessPolicies właściwości.

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']
        }
      }
    ]
  }
}

Następne kroki

Aby uzyskać więcej informacji na temat diagnostyki Bicep, zobacz Diagnostyka rdzenia Bicep.