Bagikan melalui


Operator aksesor Bicep

Operator aksesor digunakan untuk mengakses sumber daya anak, properti pada objek, dan elemen dalam array. Anda juga dapat menggunakan aksesor properti untuk menggunakan beberapa fungsi.

Pengoperasi Nama
[] Aksesor indeks
[^index] Aksesor indeks terbalik
. Pengaktor fungsi
:: Aksesor sumber daya berlapis
. Aksesor properti

Aksesor indeks

array[integerIndex]

object['stringIndex']

Gunakan pengakses indeks untuk mendapatkan elemen dari array atau properti dari objek.

Untuk array, berikan indeks sebagai bilangan bulat. Bilangan bulat cocok dengan posisi elemen berbasis nol yang akan diambil.

Untuk objek, berikan indeks sebagai string. String cocok dengan nama objek yang akan diambil.

Contoh berikut mendapatkan elemen dalam array.

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

output accessorResult string = arrayVar[1]

Output dari contoh:

Nama Tipe Nilai
accessorResult benang 'Contoso'

Contoh berikutnya mendapatkan properti pada objek.

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

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

Output dari contoh:

Nama Tipe Nilai
accessorResult benang 'Pengembangan'

Aksesor indeks terbalik

Dimulai dengan Bicep CLI versi 0.34.x, operator pengakses indeks terbalik (^) memungkinkan Anda mengambil elemen dari array dengan menghitung dari akhir. Indeks berbasis satu ini berarti ^1 mengembalikan item terakhir, ^2 kedua hingga terakhir, dan sebagainya. Indeks harus berupa bilangan bulat positif yang lebih besar dari nol dan dapat ditentukan sebagai literal atau ekspresi yang mengevaluasi ke bilangan bulat.

array[^index]

Jika indeks melebihi panjang array, kesalahan kompilasi terjadi untuk indeks statis, atau kesalahan runtime terjadi untuk indeks dinamis.

Untuk array konstanta, operator dievaluasi pada waktu kompilasi. Untuk input dinamis, seperti parameter, evaluasi terjadi pada waktu penyebaran.

Contoh

var items = [
  'apple'
  'banana'
  'orange'
  'grape'
]

output secondToLast string = items[^2]

Output dari contoh:

Nama Tipe Nilai
secondToLast benang 'oranye'

Pengaktor fungsi

resourceName.functionName()

Dua fungsi - getSecret dan list* - mendukung operator aksesor untuk memanggil fungsi. Kedua fungsi ini adalah satu-satunya fungsi yang mendukung operator aksesor.

Contoh

Contoh berikut mereferensikan brankas kunci yang ada, lalu menggunakan getSecret untuk meneruskan rahasia ke modul.

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

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

Aksesor sumber daya berlapis

parentResource::nestedResource

Sumber daya berlapis adalah sumber daya yang dideklarasikan dalam sumber daya lain. Gunakan aksesor :: sumber daya berlapis untuk mengakses sumber daya berlapis tersebut dari luar sumber daya induk.

Dalam sumber daya induk, Anda mereferensikan sumber daya berlapis hanya dengan nama simbolis. Anda hanya perlu menggunakan aksesor sumber daya berlapis saat merujuk sumber daya berlapis dari luar sumber daya induk.

Contoh

Contoh berikut menunjukkan cara mereferensikan sumber daya berlapis dari dalam sumber daya induk dan dari luar sumber daya induk.

resource demoParent 'demo.Rp/parentType@2024-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

Aksesor properti

objectName.propertyName

Gunakan aksesor properti untuk mengakses properti objek. Aksesor properti dapat digunakan dengan objek apa pun, termasuk parameter dan variabel yang merupakan objek. Anda mendapatkan kesalahan saat menggunakan akses properti pada ekspresi yang bukan objek.

Contoh

Contoh berikut menunjukkan variabel objek dan cara mengakses properti.

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

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

Output dari contoh:

Nama Tipe Nilai
outputZ benang 'Halo'
outputQ bilangan bulat 42

Biasanya, Anda menggunakan aksesor properti dengan sumber daya yang disebarkan dalam file Bicep. Contoh berikut membuat alamat IP publik dan menggunakan pengaktor properti untuk mengembalikan nilai dari sumber daya yang disebarkan.

resource publicIp 'Microsoft.Network/publicIPAddresses@2025-01-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

Langkah selanjutnya