Operatory akcesorów Bicep

Operatory dostępu służą do uzyskiwania dostępu do zasobów podrzędnych, właściwości obiektów i elementów w tablicy. Możesz również użyć metody dostępu do właściwości, aby użyć niektórych funkcji.

Operator Nazwisko
[] Akcesorium indeksu
. Akcesorium funkcji
:: Akcesorium zagnieżdżonego zasobu
. Akcesorium do właściwości

Akcesorium indeksu

array[integerIndex]

object['stringIndex']

Użyj metody dostępu indeksu, aby uzyskać element z tablicy lub właściwości z obiektu.

W przypadku tablicy podaj indeks jako liczbę całkowitą. Liczba całkowita odpowiada pozycji zerowej elementu do pobrania.

W przypadku obiektu podaj indeks jako ciąg. Ciąg pasuje do nazwy obiektu do pobrania.

Poniższy przykład pobiera element w tablicy.

var arrayVar = [
  'Coho'
  'Contoso'
  'Fabrikan'
]

output accessorResult string = arrayVar[1]

Dane wyjściowe z przykładu:

Nazwisko Typ Wartość
accessorResult string "Contoso"

Następny przykład pobiera właściwość na obiekcie.

var environmentSettings = {
  dev: {
    name: 'Development'
  }
  prod: {
    name: 'Production'
  }
}

output accessorResult string = environmentSettings['dev'].name

Dane wyjściowe z przykładu:

Nazwisko Typ Wartość
accessorResult string "Programowanie"

Akcesorium funkcji

resourceName.functionName()

Dwie funkcje — getSecret i list* — obsługują operator dostępu do wywoływania funkcji. Te dwie funkcje są jedynymi funkcjami obsługującymi operator dostępu.

Przykład

Poniższy przykład odwołuje się do istniejącego magazynu kluczy, a następnie używa getSecret go do przekazania wpisu tajnego do modułu.

resource kv 'Microsoft.KeyVault/vaults@2023-02-01' existing = {
  name: kvName
  scope: resourceGroup(subscriptionId, kvResourceGroup )
}

module sql './sql.bicep' = {
  name: 'deploySQL'
  params: {
    sqlServerName: sqlServerName
    adminLogin: adminLogin
    adminPassword: kv.getSecret('vmAdminPassword')
  }
}

Akcesorium zagnieżdżonego zasobu

parentResource::nestedResource

Zagnieżdżony zasób to zasób zadeklarowany w ramach innego zasobu. Użyj metody dostępu :: do zagnieżdżonego zasobu, aby uzyskać dostęp do tych zagnieżdżonych zasobów spoza zasobu nadrzędnego.

W ramach zasobu nadrzędnego odwołujesz się do zagnieżdżonego zasobu z tylko nazwą symboliczną. Przy odwoływania się do zagnieżdżonego zasobu należy używać tylko wtedy, gdy odwołujesz się do zagnieżdżonego zasobu spoza zasobu nadrzędnego.

Przykład

W poniższym przykładzie pokazano, jak odwoływać się do zagnieżdżonego zasobu z zasobu nadrzędnego i spoza zasobu nadrzędnego.

resource demoParent 'demo.Rp/parentType@2023-01-01' = {
  name: 'demoParent'
  location: 'West US'

  // Declare a nested resource within 'demoParent'
  resource demoNested 'childType' = {
    name: 'demoNested'
    properties: {
      displayName: 'The nested instance.'
    }
  }

  // Declare another nested resource
  resource demoSibling 'childType' = {
    name: 'demoSibling'
    properties: {
      // Use symbolic name to reference because this line is within demoParent
      displayName: 'Sibling of ${demoNested.properties.displayName}'
    }
  }
}

// Use nested accessor to reference because this line is outside of demoParent
output displayName string = demoParent::demoNested.properties.displayName

Akcesorium do właściwości

objectName.propertyName

Użyj metod dostępu właściwości, aby uzyskać dostęp do właściwości obiektu. Metody dostępu do właściwości mogą być używane z dowolnym obiektem, w tym parametrami i zmiennymi, które są obiektami. Podczas korzystania z dostępu do właściwości w wyrażeniu, które nie jest obiektem, występuje błąd.

Przykład

W poniższym przykładzie przedstawiono zmienną obiektu i sposób uzyskiwania dostępu do właściwości.

var x = {
  y: {
    z: 'Hello'
    a: true
  }
  q: 42
}

output outputZ string = x.y.z
output outputQ int = x.q

Dane wyjściowe z przykładu:

Nazwisko Typ Wartość
outputZ string "Hello"
outputQ integer 42

Zazwyczaj używasz metody dostępu właściwości z zasobem wdrożonym w pliku Bicep. Poniższy przykład tworzy publiczny adres IP i używa metod dostępu do właściwości w celu zwrócenia wartości z wdrożonego zasobu.

resource publicIp 'Microsoft.Network/publicIPAddresses@2022-11-01' = {
  name: publicIpResourceName
  location: location
  properties: {
    publicIPAllocationMethod: dynamicAllocation ? 'Dynamic' : 'Static'
    dnsSettings: {
      domainNameLabel: publicIpDnsLabel
    }
  }
}

// Use property accessor to get value
output ipFqdn string = publicIp.properties.dnsSettings.fqdn

Następne kroki