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 list
di 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 | 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-AzProviderOperation. 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 existing
kata 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
- Untuk mendapatkan nilai dari penyebaran saat ini, lihat Fungsi nilai penyebaran.
- Untuk melakukan pengulangan dalam jumlah tertentu saat membuat jenis sumber daya, lihat Perulangan sumber daya di Bicep berulang.