Fungsi sumber daya untuk Bicep

Artikel ini menjelaskan fungsi Bicep untuk mendapatkan nilai sumber daya.

Untuk mendapatkan nilai dari penyebaran saat ini, lihat Fungsi nilai penyebaran.

extensionResourceId

extensionResourceId(resourceId, resourceType, resourceName1, [resourceName2], ...)

Menampilkan ID sumber daya untuk sumber daya ekstensi. Sumber daya ekstensi adalah jenis sumber daya yang diterapkan ke sumber daya lainnya untuk menambah kapabilitasnya.

Namespace layanan: az.

Fungsi extensionResourceId tersedia dalam file Bicep, tetapi biasanya Anda tidak membutuhkannya. Sebagai gantinya, gunakan nama simbolis untuk sumber daya dan akses id properti.

Format dasar ID sumber daya yang dikembalikan oleh fungsi ini adalah:

{scope}/providers/{extensionResourceProviderNamespace}/{extensionResourceType}/{extensionResourceName}

Segmen cakupan bervariasi menurut sumber daya yang diperluas.

Ketika sumber daya ekstensi diterapkan ke sumber daya, ID sumber daya dikembalikan dalam format berikut:

/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{baseResourceProviderNamespace}/{baseResourceType}/{baseResourceName}/providers/{extensionResourceProviderNamespace}/{extensionResourceType}/{extensionResourceName}

Ketika sumber daya ekstensi diterapkan ke grup sumber daya, formatnya adalah:

/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{extensionResourceProviderNamespace}/{extensionResourceType}/{extensionResourceName}

Ketika sumber daya ekstensi diterapkan ke langganan, formatnya adalah:

/subscriptions/{subscriptionId}/providers/{extensionResourceProviderNamespace}/{extensionResourceType}/{extensionResourceName}

Ketika sumber daya ekstensi diterapkan ke grup manajemen, formatnya adalah:

/providers/Microsoft.Management/managementGroups/{managementGroupName}/providers/{extensionResourceProviderNamespace}/{extensionResourceType}/{extensionResourceName}

Definisi kebijakan kustom yang disebarkan ke grup manajemen diimplementasikan sebagai sumber daya ekstensi. Untuk membuat dan menetapkan kebijakan, sebarkan file Bicep berikut ini ke grup manajemen.

targetScope = 'managementGroup'

@description('An array of the allowed locations, all other locations will be denied by the created policy.')
param allowedLocations array = [
  'australiaeast'
  'australiasoutheast'
  'australiacentral'
]

resource policyDefinition 'Microsoft.Authorization/policyDefinitions@2021-06-01' = {
  name: 'locationRestriction'
  properties: {
    policyType: 'Custom'
    mode: 'All'
    parameters: {}
    policyRule: {
      if: {
        not: {
          field: 'location'
          in: allowedLocations
        }
      }
      then: {
        effect: 'deny'
      }
    }
  }
}

resource policyAssignment 'Microsoft.Authorization/policyAssignments@2022-06-01' = {
  name: 'locationAssignment'
  properties: {
    policyDefinitionId: policyDefinition.id
  }
}

Definisi kebijakan bawaan adalah sumber daya tingkat penyewa. Untuk contoh penyebaran definisi kebijakan bawaan, lihat tenantResourceId.

getSecret

keyVaultName.getSecret(secretName)

Menampilkan rahasia dari Azure Key Vault. Gunakan fungsi ini untuk meneruskan rahasia ke parameter string aman dari modul Bicep.

Catatan

az.getSecret(subscriptionId, resourceGroupName, keyVaultName, secretName, secretVersion) fungsi dapat digunakan dalam .bicepparam file untuk mengambil rahasia brankas kunci. Untuk informasi selengkapnya, lihat getSecret.

Anda hanya dapat menggunakan fungsi getSecret dari dalam bagian params suatu modul. Anda hanya dapat menggunakannya dengan sumber daya Microsoft.KeyVault/vaults.

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

Anda mendapatkan kesalahan jika Anda mencoba menggunakan fungsi ini di bagian lain dari file Bicep. Anda juga mendapatkan kesalahan jika Anda menggunakan fungsi ini dengan interpolasi string, bahkan ketika digunakan di bagian param.

Fungsi hanya dapat digunakan dengan parameter modul yang memiliki dekorator @secure().

Brankas kunci harus membuat enabledForTemplateDeployment diatur ke true. Pengguna yang menyebarkan file Bicep harus memiliki akses ke rahasia. Untuk informasi lebih lanjut, lihat Gunakan Azure Key Vault untuk meneruskan nilai parameter aman selama penyebaran Bicep.

Kualifikasi namespace layanan tidak diperlukan karena fungsi digunakan dengan jenis sumber daya.

Parameter

Parameter Wajib Tipe Deskripsi
secretName Ya string Nama rahasia yang tersimpan di brankas kunci.

Nilai hasil

Nilai rahasia untuk nama rahasia.

Contoh

File Bicep berikut digunakan sebagai modul. File ini memiliki parameter adminPassword yang didefinisikan dengan dekorator @secure().

param sqlServerName string
param adminLogin string

@secure()
param adminPassword string

resource sqlServer 'Microsoft.Sql/servers@2022-08-01-preview' = {
  ...
}

File Bicep berikut menggunakan file Bicep sebelumnya sebagai modul. File Bicep mereferensikan brankas kunci yang ada, dan memanggil fungsi getSecret untuk mengambil rahasia brankas kunci, dan kemudian meneruskan nilainya sebagai parameter ke modul.

param sqlServerName string
param adminLogin string

param subscriptionId string
param kvResourceGroup string
param kvName string

resource keyVault '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: keyVault.getSecret('vmAdminPassword')
  }
}

daftar*

resourceName.list([apiVersion], [functionValues])

Anda dapat menggunakan fungsi daftar untuk semua jenis sumber daya dengan operasi yang dimulai dengan list. Beberapa penggunaan umum adalah list, listKeys, listKeyValue, dan listSecrets.

Sintaks untuk fungsi ini bervariasi menurut nama operasi daftar. Nilai yang ditampilkan juga bervariasi menurut operasi. Bicep saat ini tidak mendukung penyelesaian dan validasi untuk fungsi list*.

Dengan Bicep CLI versi 0.4.X atau yang lebih tinggi, Anda memanggil fungsi daftar dengan menggunakan operator aksesor. Contohnya,storageAccount.listKeys().

Kualifikasi namespace layanan tidak diperlukan karena fungsi digunakan dengan jenis sumber daya.

Parameter

Parameter Wajib Tipe Deskripsi
apiVersion No string Jika Anda tidak memberikan parameter ini, versi API untuk sumber daya akan digunakan. Hanya sediakan versi API khusus saat Anda membutuhkan fungsi untuk dijalankan dengan versi tertentu. Gunakan format, yyyy-mm-dd.
functionValues No object Objek yang memiliki nilai untuk fungsi tersebut. Sediakan objek ini hanya untuk fungsi yang mendukung penerimaan objek dengan nilai parameter, seperti listAccountSas pada akun penyimpanan. Contoh nilai fungsi meneruskan ditunjukkan dalam artikel ini.

Penggunaan yang valid

Fungsi list dapat digunakan dalam properti definisi sumber daya. Jangan gunakan fungsi list yang memaparkan informasi sensitif di bagian output file Bicep. Nilai output disimpan dalam riwayat penyebaran dan dapat diambil oleh pengguna berbahaya.

Saat digunakan dengan perulangan berulang, Anda dapat menggunakan fungsi list untuk input karena ekspresi ditetapkan ke properti sumber daya. Anda tidak dapat menggunakannya dengan count karena hitungan harus ditentukan sebelum fungsi list diselesaikan.

Jika Anda menggunakan ungsi listdi sumber daya yang disebarkan secara kondisional, fungsi tersebut dievaluasi meskipun sumber daya tidak disebarkan. Anda mendapatkan kesalahan jika fungsi list merujuk ke sumber daya yang tidak ada. Gunakan ungkapan bersyarat ?: operator untuk memastikan fungsi hanya dievaluasi saat sumber daya sedang disebarkan.

Nilai hasil

Objek yang dikembalikan bervariasi menurut fungsi daftar yang Anda gunakan. Misalnya, listKeys untuk akun penyimpanan menampilkan format berikut:

{
  "keys": [
    {
      "keyName": "key1",
      "permissions": "Full",
      "value": "{value}"
    },
    {
      "keyName": "key2",
      "permissions": "Full",
      "value": "{value}"
    }
  ]
}

Fungsi list lainnya memiliki format tampilan yang berbeda. Untuk melihat format fungsi, sertakan dalam bagian output seperti yang ditunjukkan dalam contoh file Bicep.

Contoh daftar

Contoh berikut menyebarkan akun penyimpanan dan kemudian menggunakan listKeys pada akun penyimpanan tersebut. Kunci digunakan saat mengatur nilai untuk skrip penyebaran.

resource storageAccount 'Microsoft.Storage/storageAccounts@2022-09-01' = {
  name: 'dscript${uniqueString(resourceGroup().id)}'
  location: location
  kind: 'StorageV2'
  sku: {
    name: 'Standard_LRS'
  }
}

resource dScript 'Microsoft.Resources/deploymentScripts@2020-10-01' = {
  name: 'scriptWithStorage'
  location: location
  ...
  properties: {
    azCliVersion: '2.0.80'
    storageAccountSettings: {
      storageAccountName: storageAccount.name
      storageAccountKey: storageAccount.listKeys().keys[0].value
    }
    ...
  }
}

Contoh berikutnya memperlihatkan fungsi list yang mengambil parameter. Dalam kasus ini, fungsinya adalah listAccountSas. Teruskan objek untuk waktu kedaluwarsa. Waktu kedaluwarsa harus di masa depan.

param accountSasProperties object {
  default: {
    signedServices: 'b'
    signedPermission: 'r'
    signedExpiry: '2020-08-20T11:00:00Z'
    signedResourceTypes: 's'
  }
}
...
sasToken: storageAccount.listAccountSas('2021-04-01', accountSasProperties).accountSasToken

Implementasi

Kemungkinan penggunaan list* ditunjukkan dalam tabel berikut ini.

Jenis Sumber Daya Nama fungsi
Microsoft.Addons/supportProviders listsupportplaninfo
Microsoft.AnalysisServices/servers listGatewayStatus
Microsoft.ApiManagement/service/authorizationServers listSecrets
Microsoft.ApiManagement/service/gateways listKeys
Microsoft.ApiManagement/service/identityProviders listSecrets
Microsoft.ApiManagement/service/namedValues listValue
Microsoft.ApiManagement/service/openidConnectProviders listSecrets
Microsoft.ApiManagement/service/subscriptions listSecrets
Microsoft.AppConfiguration/configurationStores ListKeys
Microsoft.AppPlatform/Spring listTestKeys
Microsoft.Automation/automationAccounts listKeys
Microsoft.Batch/batchAccounts listkeys
Microsoft.BatchAI/workspaces/experiments/jobs listoutputfiles
Microsoft.BotService/botServices/channels listChannelWithKeys
Microsoft.Cache/redis listKeys
Microsoft.CognitiveServices/accounts listKeys
Microsoft.ContainerRegistry/registries listBuildSourceUploadUrl
Microsoft.ContainerRegistry/registries listCredentials
Microsoft.ContainerRegistry/registries listUsages
Microsoft.ContainerRegistry/registries/agentpools listQueueStatus
Microsoft.ContainerRegistry/registries/buildTasks listSourceRepositoryProperties
Microsoft.ContainerRegistry/registries/buildTasks/steps listBuildArguments
Microsoft.ContainerRegistry/registries/taskruns listDetails
Microsoft.ContainerRegistry/registries/webhooks listEvents
Microsoft.ContainerRegistry/registries/runs listLogSasUrl
Microsoft.ContainerRegistry/registries/tasks listDetails
Microsoft.ContainerService/managedClusters listClusterAdminCredential
Microsoft.ContainerService/managedClusters listClusterMonitoringUserCredential
Microsoft.ContainerService/managedClusters listClusterUserCredential
Microsoft.ContainerService/managedClusters/accessProfiles listCredential
Microsoft.DataBox/jobs listCredentials
Microsoft.DataFactory/datafactories/gateways listauthkeys
Microsoft.DataFactory/factories/integrationruntimes listauthkeys
Microsoft.DataLakeAnalytics/accounts/storageAccounts/Containers listSasTokens
Microsoft.DataShare/accounts/shares listSynchronizations
Microsoft.DataShare/accounts/shareSubscriptions listSourceShareSynchronizationSettings
Microsoft.DataShare/accounts/shareSubscriptions listSynchronizationDetails
Microsoft.DataShare/accounts/shareSubscriptions listSynchronizations
Microsoft.Devices/iotHubs listkeys
Microsoft.Devices/iotHubs/iotHubKeys listkeys
Microsoft.Devices/provisioningServices/keys listkeys
Microsoft.Devices/provisioningServices listkeys
Microsoft.DevTestLab/labs ListVhds
Microsoft.DevTestLab/labs/schedules ListApplicable
Microsoft.DevTestLab/labs/users/serviceFabrics ListApplicableSchedules
Microsoft.DevTestLab/labs/virtualMachines ListApplicableSchedules
Microsoft.DocumentDB/databaseAccounts listKeys
Microsoft.DocumentDB/databaseAccounts/notebookWorkspaces listConnectionInfo
Microsoft.DomainRegistration listDomainRecommendations
Microsoft.DomainRegistration/topLevelDomains listAgreements
Microsoft.EventGrid/domains listKeys
Microsoft.EventGrid/topics listKeys
Microsoft.EventHub/namespaces/authorizationRules listkeys
Microsoft.EventHub/namespaces/disasterRecoveryConfigs/authorizationRules listkeys
Microsoft.EventHub/namespaces/eventhubs/authorizationRules listkeys
Microsoft.ImportExport/jobs listBitLockerKeys
Microsoft.Kusto/Clusters/Databases ListPrincipals
Microsoft.LabServices/labs/users daftar
Microsoft.LabServices/labs/virtualMachines daftar
Microsoft.Logic/integrationAccounts/agreements listContentCallbackUrl
Microsoft.Logic/integrationAccounts/assemblies listContentCallbackUrl
Microsoft.Logic/integrationAccounts listCallbackUrl
Microsoft.Logic/integrationAccounts listKeyVaultKeys
Microsoft.Logic/integrationAccounts/maps listContentCallbackUrl
Microsoft.Logic/integrationAccounts/partners listContentCallbackUrl
Microsoft.Logic/integrationAccounts/schemas listContentCallbackUrl
Microsoft.Logic/workflows listCallbackUrl
Microsoft.Logic/workflows listSwagger
Microsoft.Logic/workflows/runs/actions listExpressionTraces
Microsoft.Logic/workflows/runs/actions/repetitions listExpressionTraces
Microsoft.Logic/workflows/triggers listCallbackUrl
Microsoft.Logic/workflows/versions/triggers listCallbackUrl
Microsoft.MachineLearning/webServices listkeys
Microsoft.MachineLearning/Workspaces listworkspacekeys
Microsoft.MachineLearningServices/workspaces/computes listKeys
Microsoft.MachineLearningServices/workspaces/computes listNodes
Microsoft.MachineLearningServices/workspaces listKeys
Microsoft.Maps/akun listKeys
Microsoft.Media/mediaservices/assets listContainerSas
Microsoft.Media/mediaservices/assets listStreamingLocators
Microsoft.Media/mediaservices/streamingLocators listContentKeys
Microsoft.Media/mediaservices/streamingLocators listPaths
Microsoft.Network/applicationSecurityGroups listIpConfigurations
Microsoft.NotificationHubs/Namespaces/authorizationRules listkeys
Microsoft.NotificationHubs/Namespaces/NotificationHubs/authorizationRules listkeys
Microsoft.OperationalInsights/workspaces daftar
Microsoft.OperationalInsights/workspaces listKeys
Microsoft.PolicyInsights/remediations listDeployments
Microsoft.RedHatOpenShift/openShiftClusters listCredentials
Microsoft.Relay/namespaces/disasterRecoveryConfigs/authorizationRules listkeys
Microsoft.Search/searchServices listAdminKeys
Microsoft.Search/searchServices listQueryKeys
Microsoft.SignalRService/SignalR listkeys
Microsoft.Storage/storageAccounts listAccountSas
Microsoft.Storage/storageAccounts listkeys
Microsoft.Storage/storageAccounts listServiceSas
Microsoft.StorSimple/managers/devices listFailoverSets
Microsoft.StorSimple/managers/devices listFailoverTargets
Microsoft.StorSimple/managers listActivationKey
Microsoft.StorSimple/managers listPublicEncryptionKey
Microsoft.Synapse/workspaces/integrationRuntimes listAuthKeys
Microsoft.Web/connectionGateways ListStatus
microsoft.web/connections listconsentlinks
Microsoft.Web/customApis listWsdlInterfaces
microsoft.web/locations listwsdlinterfaces
microsoft.web/apimanagementaccounts/apis/connections listconnectionkeys
microsoft.web/apimanagementaccounts/apis/connections listsecrets
microsoft.web/sites/backups daftar
Microsoft.Web/sites/config daftar
microsoft.web/sites/functions listkeys
microsoft.web/sites/functions listsecrets
microsoft.web/sites/hybridconnectionnamespaces/relays listkeys
microsoft.web/sites listsyncfunctiontriggerstatus
microsoft.web/sites/slots/functions listsecrets
microsoft.web/sites/slots/backups daftar
Microsoft.Web/sites/slots/config daftar
microsoft.web/sites/slots/functions listsecrets

Untuk menentukan jenis sumber daya mana yang memiliki operasi daftar, Anda memiliki opsi berikut:

  • Lihat operasi REST API untuk penyedia sumber, dan cari operasi daftar. Misalnya, akun penyimpanan memiliki operasi listKeys.

  • Gunakan cmdlet PowerShell Get-​AzProvider​Operation. Contoh berikut ini mendapatkan semua operasi daftar untuk akun penyimpanan:

    Get-AzProviderOperation -OperationSearchString "Microsoft.Storage/*" | where {$_.Operation -like "*list*"} | FT Operation
    
  • Gunakan perintah Azure CLI berikut ini untuk memfilter hanya operasi daftar:

    az provider operation show --namespace Microsoft.Storage --query "resourceTypes[?name=='storageAccounts'].operations[].name | [?contains(@, 'list')]"
    

pickZones

pickZones(providerNamespace, resourceType, location, [numberOfZones], [offset])

Menentukan apakah jenis sumber daya mendukung zona untuk suatu wilayah. Fungsi ini hanya mendukung sumber daya dalam zona. Layanan dengan redundansi zona menampilkan array kosong. Untuk informasi selengkapnya, lihat Azure Services yang mendukung Zona Ketersediaan.

Namespace layanan: az.

Parameter

Parameter Wajib Tipe Deskripsi
providerNamespace Ya string Namespace layanan penyedia sumber untuk jenis sumber daya untuk memeriksa dukungan zona.
resourceType Ya string Jenis sumber daya untuk memeriksa dukungan zona.
lokasi Ya string Wilayah untuk memeriksa dukungan zona.
numberOfZones No Integer Jumlah zona logika yang dikembalikan. Defaultnya adalah 1. Angka tersebut harus merupakan bilangan bulat positif dari 1 hingga 3. Gunakan 1 untuk sumber daya zona tunggal. Untuk sumber daya multi-zona, nilainya harus kurang dari atau sama dengan jumlah zona yang didukung.
offset No Integer Offset dari zona logika awal. Fungsi mengembalikan kesalahan jika offset plus numberOfZones melebihi jumlah zona yang didukung.

Nilai hasil

Array dengan zona yang didukung. Ketika menggunakan nilai default untuk offset dan numberOfZones, jenis dan wilayah sumber daya yang mendukung zona menampilkan array berikut ini:

[
    "1"
]

Saat parameter numberOfZones diatur ke 3, parameter akan mengembalikan:

[
    "1",
    "2",
    "3"
]

Saat jenis atau wilayah sumber daya tidak mendukung zona, array kosong akan dikembalikan.

[
]

Keterangan

Ada beberapa kategori yang berbeda untuk Azure Availability Zones - zonal dan zona-berlebih. Fungsi pickZones dapat digunakan untuk menampilkan zona ketersediaan untuk sebuah sumber daya dalam zona. Untuk layanan dengan redundansi zona (ZRS), fungsinya akan menampilkan array kosong. Sumber daya dalam zona biasanya memiliki properti zones di tingkat teratas definisi sumber daya. Untuk menentukan kategori dukungan untuk zona ketersediaan, lihat Layanan Azure yang mendukung Zona Ketersediaan.

Untuk menentukan apakah wilayah atau lokasi Azure tertentu mendukung zona ketersediaan, gunakan fungsi pickZones dengan jenis sumber daya dalam zona, misalnya Microsoft.Network/publicIPAddresses. Jika respons tidak kosong, maka wilayah tersebut mendukung zona ketersediaan.

Contoh pickZones

File Bicep berikut ini menunjukkan tiga hasil ketika menggunakan fungsi pickZones.

output supported array = pickZones('Microsoft.Compute', 'virtualMachines', 'westus2')
output notSupportedRegion array = pickZones('Microsoft.Compute', 'virtualMachines', 'westus')
output notSupportedType array = pickZones('Microsoft.Cdn', 'profiles', 'westus2')

Output dari contoh sebelumnya mengembalikan tiga array.

Nama Jenis Nilai
didukung array [ "1" ]
notSupportedRegion array []
notSupportedType array []

Anda dapat menggunakan respons dari pickZones untuk menentukan apakah akan menyediakan null untuk zona atau menetapkan mesin virtual ke zona yang berbeda.

penyedia

Fungsi penyedia telah ditinggalkan di Bicep. Kami tidak lagi merekomendasikan menggunakannya. Jika Anda menggunakan fungsi ini untuk mendapatkan versi API untuk penyedia sumber daya, kami menyarankan Anda menyediakan versi API tertentu di file Bicep Anda. Menggunakan versi API yang dikembalikan secara dinamis dapat merusak templat Anda jika properti berubah antar versi.

Operasi penyedia masih tersedia melalui REST API. Ini dapat digunakan di luar file Bicep untuk mendapatkan informasi tentang penyedia sumber daya.

Namespace layanan: az.

referensi

reference(resourceName or resourceIdentifier, [apiVersion], ['Full'])

Mengembalikan objek yang mewakili status runtime bahasa umum sumber daya. Output dan perilaku reference fungsi sangat bergantung pada bagaimana setiap penyedia sumber daya (RP) mengimplementasikan respons PUT dan GET-nya.

Namespace layanan: az.

File Bicep menyediakan akses ke fungsi referensi, meskipun biasanya tidak perlu. Sebagai gantinya, disarankan untuk menggunakan nama simbolis sumber daya. Fungsi referensi hanya dapat digunakan dalam properties objek sumber daya dan tidak dapat digunakan untuk properti tingkat atas seperti name atau location. Hal yang sama umumnya berlaku untuk referensi menggunakan nama simbolis. Namun, untuk properti seperti name, dimungkinkan untuk menghasilkan templat tanpa menggunakan fungsi referensi. Informasi yang memadai tentang nama sumber daya diketahui secara langsung memancarkan nama. Ini disebut sebagai properti waktu kompilasi. Validasi Bicep dapat mengidentifikasi penggunaan nama simbolis yang salah.

Contoh berikut menyebarkan dua akun penyimpanan. Dua output pertama memberi Anda hasil yang sama.

param storageAccountName string = uniqueString(resourceGroup().id)
param location string = resourceGroup().location

resource storageAccount 'Microsoft.Storage/storageAccounts@2022-09-01' = {
  name: storageAccountName
  location: location
  kind: 'Storage'
  sku: {
    name: 'Standard_LRS'
  }
}

output storageObjectSymbolic object = storageAccount.properties
output storageObjectReference object = reference('storageAccount')
output storageName string = storageAccount.name
output storageLocation string = storageAccount.location

Untuk mendapatkan properti dari sumber daya yang sudah ada yang tidak disebarkan dalam templat, gunakan existingkata kunci:

param storageAccountName string

resource storageAccount 'Microsoft.Storage/storageAccounts@2022-09-01' existing = {
  name: storageAccountName
}

// use later in template as often as needed
output blobAddress string = storageAccount.properties.primaryEndpoints.blob

Untuk mereferensikan sumber daya yang disarangkan di dalam sumber daya induk, gunakan pengakses bersarang (::). Anda hanya dapat menggunakan sintaksis ini saat mengakses sumber daya bersarang dari luar sumber daya induk.

vNet1::subnet1.properties.addressPrefix

Jika Anda mencoba mereferensikan sumber daya yang tidak ada, Anda mendapatkan kesalahan NotFound dan penyebaran Anda gagal.

resourceId

resourceId([subscriptionId], [resourceGroupName], resourceType, resourceName1, [resourceName2], ...)

Mengembalikan pengidentifikasi unik sumber daya.

Namespace layanan: az.

Fungsi resourceId tersedia dalam file Bicep, tetapi biasanya Anda tidak membutuhkannya. Sebagai gantinya, gunakan nama simbolis untuk sumber daya dan akses id properti.

Anda menggunakan fungsi ini ketika nama sumber daya ambigu atau tidak tersedia dalam file Bicep yang sama. Format pengidentifikasi yang dikembalikan bervariasi berdasarkan apakah penyebaran terjadi di cakupan grup sumber daya, langganan, grup manajemen, atau penyewa.

Contohnya:

param storageAccountName string
param location string = resourceGroup().location

resource storageAccount 'Microsoft.Storage/storageAccounts@2022-09-01' = {
  name: storageAccountName
  location: location
  kind: 'Storage'
  sku: {
    name: 'Standard_LRS'
  }
}

output storageID string = storageAccount.id

Untuk mendapatkan ID sumber daya untuk sumber daya yang tidak digunakan dalam file Bicep, gunakan kata kunci yang ada.

param storageAccountName string

resource storageAccount 'Microsoft.Storage/storageAccounts@2022-09-01' existing = {
    name: storageAccountName
}

output storageID string = storageAccount.id

Untuk informasi selengkapnya, lihat fungsi resourceId templat JSON.

subscriptionResourceId

subscriptionResourceId([subscriptionId], resourceType, resourceName1, [resourceName2], ...)

Mengembalikan pengidentifikasi unik untuk sumber daya yang disebarkan di tingkat langganan.

Namespace layanan: az.

Fungsi subscriptionResourceId tersedia dalam file Bicep, tetapi biasanya Anda tidak membutuhkannya. Sebagai gantinya, gunakan nama simbolis untuk sumber daya dan akses id properti.

Pengidentifikasi dikembalikan dalam format berikut:

/subscriptions/{subscriptionId}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}

Keterangan

Anda gunakan fungsi ini untuk mendapatkan ID sumber daya untuk sumber daya yang disebarkan ke langganan daripada grup sumber daya. ID yang dikembalikan berbeda dari nilai yang dikembalikan oleh fungsi resourceId dengan tidak menyertakan nilai grup sumber daya.

Contoh subscriptionResourceID

File Bicep berikut menetapkan peran bawaan. Anda dapat menyebarkannya ke grup sumber daya atau langganan. Ini menggunakan fungsi subscriptionResourceId untuk mendapatkan ID sumber daya untuk peran bawaan.

@description('Principal Id')
param principalId string

@allowed([
  'Owner'
  'Contributor'
  'Reader'
])
@description('Built-in role to assign')
param builtInRoleType string

var roleDefinitionId = {
  Owner: {
    id: subscriptionResourceId('Microsoft.Authorization/roleDefinitions', '8e3af657-a8ff-443c-a75c-2fe8c4bcb635')
  }
  Contributor: {
    id: subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'b24988ac-6180-42a0-ab88-20f7382dd24c')
  }
  Reader: {
    id: subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'acdd72a7-3385-48ef-bd42-f606fba81ae7')
  }
}

resource roleAssignment 'Microsoft.Authorization/roleAssignments@2022-04-01' = {
  name: guid(resourceGroup().id, principalId, roleDefinitionId[builtInRoleType].id)
  properties: {
    roleDefinitionId: roleDefinitionId[builtInRoleType].id
    principalId: principalId
  }
}

managementGroupResourceId

managementGroupResourceId(resourceType, resourceName1, [resourceName2], ...)

Mengembalikan pengidentifikasi unik untuk sumber daya yang digunakan di tingkat grup manajemen.

Namespace layanan: az.

Fungsi managementGroupResourceId tersedia dalam file Bicep, tetapi biasanya Anda tidak membutuhkannya. Sebagai gantinya, gunakan nama simbolis untuk sumber daya dan akses id properti.

Pengidentifikasi dikembalikan dalam format berikut:

/providers/Microsoft.Management/managementGroups/{managementGroupName}/providers/{resourceType}/{resourceName}

Keterangan

Anda menggunakan fungsi ini untuk mendapatkan ID sumber daya untuk sumber daya yang disebarkan ke grup manajemen, bukan grup sumber daya. ID yang dikembalikan berbeda dari nilai yang dikembalikan oleh fungsi resourceId dengan tidak menyertakan ID langganan dan nilai grup sumber daya.

contoh managementGroupResourceID

Templat berikut membuat dan menetapkan definisi kebijakan. Ini menggunakan fungsi managementGroupResourceId untuk mendapatkan ID sumber daya untuk definisi kebijakan.

targetScope = 'managementGroup'

@description('Target Management Group')
param targetMG string

@description('An array of the allowed locations, all other locations will be denied by the created policy.')
param allowedLocations array = [
  'australiaeast'
  'australiasoutheast'
  'australiacentral'
]

var mgScope = tenantResourceId('Microsoft.Management/managementGroups', targetMG)
var policyDefinitionName = 'LocationRestriction'

resource policyDefinition 'Microsoft.Authorization/policyDefinitions@2021-06-01' = {
  name: policyDefinitionName
  properties: {
    policyType: 'Custom'
    mode: 'All'
    parameters: {}
    policyRule: {
      if: {
        not: {
          field: 'location'
          in: allowedLocations
        }
      }
      then: {
        effect: 'deny'
      }
    }
  }
}

resource location_lock 'Microsoft.Authorization/policyAssignments@2021-06-01' = {
  name: 'location-lock'
  properties: {
    scope: mgScope
    policyDefinitionId: managementGroupResourceId('Microsoft.Authorization/policyDefinitions', policyDefinitionName)
  }
  dependsOn: [
    policyDefinition
  ]
}

tenantResourceId

tenantResourceId(resourceType, resourceName1, [resourceName2], ...)

Mengembalikan pengidentifikasi unik untuk sumber daya yang disebarkan di tingkat penyewa.

Namespace layanan: az.

Fungsi tenantResourceId tersedia dalam file Bicep, tetapi biasanya Anda tidak membutuhkannya. Sebagai gantinya, gunakan nama simbolis untuk sumber daya dan akses id properti.

Pengidentifikasi dikembalikan dalam format berikut:

/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}

Definisi kebijakan bawaan adalah sumber daya tingkat penyewa. Untuk menyebarkan penetapan kebijakan yang mereferensikan definisi kebijakan bawaan, gunakan fungsi tenantResourceId.

@description('Specifies the ID of the policy definition or policy set definition being assigned.')
param policyDefinitionID string = '0a914e76-4921-4c19-b460-a2d36003525a'

@description('Specifies the name of the policy assignment, can be used defined or an idempotent name as the defaultValue provides.')
param policyAssignmentName string = guid(policyDefinitionID, resourceGroup().name)

resource policyAssignment 'Microsoft.Authorization/policyAssignments@2022-06-01' = {
  name: policyAssignmentName
  properties: {
    scope: subscriptionResourceId('Microsoft.Resources/resourceGroups', resourceGroup().name)
    policyDefinitionId: tenantResourceId('Microsoft.Authorization/policyDefinitions', policyDefinitionID)
  }
}

Langkah berikutnya