Bicep için kaynak işlevleri
Bu makalede kaynak değerlerini almaya yönelik Bicep işlevleri açıklanmaktadır.
Geçerli dağıtımdan değer almak için bkz . Dağıtım değeri işlevleri.
extensionResourceId
extensionResourceId(resourceId, resourceType, resourceName1, [resourceName2], ...)
Uzantı kaynağının kaynak kimliğini döndürür. Uzantı kaynağı, özelliklerine eklemek için başka bir kaynağa uygulanan bir kaynak türüdür.
Ad alanı: az.
extensionResourceId
İşlev, Bicep dosyalarında kullanılabilir, ancak normalde buna ihtiyacınız yoktur. Bunun yerine, kaynak için sembolik adı kullanın ve özelliğine erişin id
.
Bu işlev tarafından döndürülen kaynak kimliğinin temel biçimi:
{scope}/providers/{extensionResourceProviderNamespace}/{extensionResourceType}/{extensionResourceName}
Kapsam kesimi, genişletilmekte olan kaynağa göre değişir.
Uzantı kaynağı bir kaynağa uygulandığında, kaynak kimliği aşağıdaki biçimde döndürülür:
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{baseResourceProviderNamespace}/{baseResourceType}/{baseResourceName}/providers/{extensionResourceProviderNamespace}/{extensionResourceType}/{extensionResourceName}
Uzantı kaynağı bir kaynak grubuna uygulandığında, biçim şu şekildedir:
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{extensionResourceProviderNamespace}/{extensionResourceType}/{extensionResourceName}
Uzantı kaynağı bir aboneliğe uygulandığında, biçim şu şekildedir:
/subscriptions/{subscriptionId}/providers/{extensionResourceProviderNamespace}/{extensionResourceType}/{extensionResourceName}
Uzantı kaynağı bir yönetim grubuna uygulandığında, biçim şu şekildedir:
/providers/Microsoft.Management/managementGroups/{managementGroupName}/providers/{extensionResourceProviderNamespace}/{extensionResourceType}/{extensionResourceName}
Bir yönetim grubuna dağıtılan özel ilke tanımı, uzantı kaynağı olarak uygulanır. İlke oluşturmak ve atamak için aşağıdaki Bicep dosyasını bir yönetim grubuna dağıtın.
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@2023-04-01' = {
name: 'locationRestriction'
properties: {
policyType: 'Custom'
mode: 'All'
parameters: {}
policyRule: {
if: {
not: {
field: 'location'
in: allowedLocations
}
}
then: {
effect: 'deny'
}
}
}
}
resource policyAssignment 'Microsoft.Authorization/policyAssignments@2024-04-01' = {
name: 'locationAssignment'
properties: {
policyDefinitionId: policyDefinition.id
}
}
Yerleşik ilke tanımları kiracı düzeyinde kaynaklardır. Yerleşik ilke tanımı dağıtma örneği için bkz . tenantResourceId.
getSecret
keyVaultName.getSecret(secretName)
Azure Key Vault'tan bir gizli dizi döndürür. Bicep modülünün güvenli dize parametresine gizli dizi geçirmek için bu işlevi kullanın.
Not
az.getSecret(subscriptionId, resourceGroupName, keyVaultName, secretName, secretVersion)
işlevi, anahtar kasası gizli dizilerini almak için dosyalarda .bicepparam
kullanılabilir. Daha fazla bilgi için bkz . getSecret.
işlevini yalnızca modülün params
bölümünden kullanabilirsinizgetSecret
. Bunu yalnızca bir Microsoft.KeyVault/vaults
kaynakla kullanabilirsiniz.
module sql './sql.bicep' = {
name: 'deploySQL'
params: {
adminPassword: keyVault.getSecret('vmAdminPassword')
}
}
Bu işlevi Bicep dosyasının başka bir bölümünde kullanmayı denerseniz hata alırsınız. Ayrıca, bu işlevi parametreler bölümünde kullanıldığında bile dize ilişkilendirmesi ile kullanırsanız bir hata alırsınız.
İşlev yalnızca dekoratöre sahip @secure()
bir modül parametresiyle kullanılabilir.
Anahtar kasası olarak true
ayarlanmış olmalıdırenabledForTemplateDeployment
. Bicep dosyasını dağıtan kullanıcının gizli diziye erişimi olmalıdır. Daha fazla bilgi için bkz . Bicep dağıtımı sırasında güvenli parametre değeri geçirmek için Azure Key Vault kullanma.
İşlev bir kaynak türüyle kullanıldığından ad alanı niteleyicisi gerekli değildir.
Parametreler
Parametre | Zorunlu | Türü | Açıklama |
---|---|---|---|
secretName | Yes | Dize | Anahtar kasasında depolanan gizli dizinin adı. |
Dönüş değeri
Gizli dizi adının gizli dizi değeri.
Örnek
Aşağıdaki Bicep dosyası modül olarak kullanılır. Dekoratör ile @secure()
tanımlanmış bir adminPassword
parametresi vardır.
param sqlServerName string
param adminLogin string
@secure()
param adminPassword string
resource sqlServer 'Microsoft.Sql/servers@2023-08-01-preview' = {
...
}
Aşağıdaki Bicep dosyası, önceki Bicep dosyasını modül olarak tüketir. Bicep dosyası mevcut bir anahtar kasasına getSecret
başvurur ve anahtar kasası gizli dizisini almak için işlevini çağırır ve ardından değeri modüle parametre olarak geçirir.
param sqlServerName string
param adminLogin string
param subscriptionId string
param kvResourceGroup string
param kvName string
resource keyVault 'Microsoft.KeyVault/vaults@2023-07-01' existing = {
name: kvName
scope: resourceGroup(subscriptionId, kvResourceGroup )
}
module sql './sql.bicep' = {
name: 'deploySQL'
params: {
sqlServerName: sqlServerName
adminLogin: adminLogin
adminPassword: keyVault.getSecret('vmAdminPassword')
}
}
Liste*
resourceName.list([apiVersion], [functionValues])
ile list
başlayan bir işlemle herhangi bir kaynak türü için bir liste işlevi çağırabilirsiniz. Bazı yaygın kullanımlar , listKeys
, listKeyValue
ve listSecrets
şeklindedirlist
.
Bu işlevin söz dizimi, liste işleminin adına göre değişir. Döndürülen değerler de işleme göre değişir. Bicep şu anda işlevler için list*
tamamlamaları ve doğrulamayı desteklememektedir.
Bicep CLI sürüm 0.4.X veya üzeri ile, erişimci işlecini kullanarak list işlevini çağırırsınız. Örneğin, storageAccount.listKeys()
.
İşlev bir kaynak türüyle kullanıldığından ad alanı niteleyicisi gerekli değildir.
Parametreler
Parametre | Zorunlu | Türü | Açıklama |
---|---|---|---|
apiVersion | Hayır | Dize | Bu parametreyi sağlamazsanız, kaynağın API sürümü kullanılır. Yalnızca işlevin belirli bir sürümle çalıştırılması gerektiğinde özel bir API sürümü sağlayın. y-mm-dd biçimini kullanın. |
functionValues | Hayır | nesne | İşlev için değerleri olan bir nesne. Bu nesneyi yalnızca depolama hesabı gibi listAccountSas parametre değerlerine sahip bir nesne almayı destekleyen işlevler için sağlayın. Bu makalede işlev değerlerini geçirme örneği gösterilmiştir. |
Geçerli kullanımlar
list
İşlevler bir kaynak tanımının özelliklerinde kullanılabilir. Bicep dosyasının çıkışlar bölümünde hassas bilgileri kullanıma sunan bir işlev kullanmayın list
. Çıkış değerleri dağıtım geçmişinde depolanır ve kötü amaçlı bir kullanıcı tarafından alınabilir.
Yinelemeli bir döngüyle kullanıldığında, ifadesi kaynak özelliğine atandığından için input
işlevlerini kullanabilirsinizlist
. İşlev çözümlenmeden önce sayımın belirlenmesi gerektiğinden list
bunları ile count
kullanamazsınız.
Koşullu olarak dağıtılan bir kaynakta işlev kullanırsanız list
, kaynak dağıtılmasa bile işlev değerlendirilir. İşlev var olmayan bir kaynağa başvuruyorsa list
bir hata alırsınız. İşlevin yalnızca kaynak dağıtılırken değerlendirildiğinden emin olmak için koşullu ifade ?: işlecini kullanın.
Dönüş değeri
Döndürülen nesne, kullandığınız liste işlevine göre değişir. Örneğin, listKeys
bir depolama hesabı için aşağıdaki biçimi döndürür:
{
"keys": [
{
"keyName": "key1",
"permissions": "Full",
"value": "{value}"
},
{
"keyName": "key2",
"permissions": "Full",
"value": "{value}"
}
]
}
Diğer list
işlevlerin farklı dönüş biçimleri vardır. İşlevin biçimini görmek için, örnek Bicep dosyasında gösterildiği gibi çıkışlar bölümüne ekleyin.
Liste örneği
Aşağıdaki örnek bir depolama hesabı dağıtır ve ardından bu depolama hesabını çağırır listKeys
. Anahtar, dağıtım betikleri için bir değer ayarlanırken kullanılır.
resource storageAccount 'Microsoft.Storage/storageAccounts@2023-04-01' = {
name: 'dscript${uniqueString(resourceGroup().id)}'
location: location
kind: 'StorageV2'
sku: {
name: 'Standard_LRS'
}
}
resource dScript 'Microsoft.Resources/deploymentScripts@2023-08-01' = {
name: 'scriptWithStorage'
location: location
...
properties: {
azCliVersion: '2.0.80'
storageAccountSettings: {
storageAccountName: storageAccount.name
storageAccountKey: storageAccount.listKeys().keys[0].value
}
...
}
}
Sonraki örnekte parametre alan bir list
işlev gösterilmektedir. Bu durumda işlevi olur listAccountSas
. Bitiş süresi için bir nesne geçirin. Süre sonu süresi gelecekte olmalıdır.
param accountSasProperties object {
default: {
signedServices: 'b'
signedPermission: 'r'
signedExpiry: '2020-08-20T11:00:00Z'
signedResourceTypes: 's'
}
}
...
sasToken: storageAccount.listAccountSas('2021-04-01', accountSasProperties).accountSasToken
Uygulamalar
olası kullanımları list*
aşağıdaki tabloda gösterilmiştir.
Kaynak türü | İşlev adı |
---|---|
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/openid Bağlan Providers | listSecrets |
Microsoft.ApiManagement/service/subscriptions | listSecrets |
Microsoft.AppConfiguration/configurationStores | ListKeys |
Microsoft.AppPlatform/Spring | listTestKeys |
Microsoft.Automation/automationAccounts | listKeys |
Microsoft.Batch/batchAccounts | listkeys |
Microsoft.BatchAI/çalışma alanları/denemeler/işler | listoutputfiles |
Microsoft.BotService/botServices/channels | listChannelWithKeys |
Microsoft.Cache/redis | listKeys |
Microsoft.CognitiveServices/accounts | listKeys |
Microsoft.ContainerRegistry/kayıt defterleri | listCredentials |
Microsoft.ContainerRegistry/kayıt defterleri | 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/web kancaları | listEvents |
Microsoft.ContainerRegistry/kayıt defterleri/çalıştırmaları | listLogSasUrl |
Microsoft.ContainerRegistry/kayıt defterleri/görevler | listDetails |
Microsoft.ContainerService/managedClusters | listCluster Yönetici Credential |
Microsoft.ContainerService/managedClusters | listClusterMonitoringUserCredential |
Microsoft.ContainerService/managedClusters | listClusterUserCredential |
Microsoft.ContainerService/managedClusters/accessProfiles | listCredential |
Microsoft.DataBox/jobs | listCredentials |
Microsoft.DataFactory/datafactories/gateways | listauthkeys |
Microsoft.DataFactory/factory/integrationruntimes | listauthkeys |
Microsoft.DataLakeAnalytics/accounts/storageAccounts/Containers | listSasTokens |
Microsoft.DataShare/accounts/shares | listSynchronizations |
Microsoft.DataShare/accounts/shareSubscriptions | listSourceShareSynchronization Ayarlar |
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 | list Bağlan ionInfo |
Microsoft.DomainRegistration | listDomain Öneriler |
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 | listele |
Microsoft.LabServices/labs/virtualMachines | listele |
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/iş akışları | listCallbackUrl |
Microsoft.Logic/iş akışları | 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. Haritalar/hesaplar | 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.Operational Analizler/workspaces | listele |
Microsoft.Operational Analizler/workspaces | listKeys |
Microsoft.Policy Analizler/düzeltmeler | listDeployments |
Microsoft.RedHatOpenShift/openShiftClusters | listCredentials |
Microsoft.Relay/namespaces/disasterRecoveryConfigs/authorizationRules | listkeys |
Microsoft.Search/searchServices | list Yönetici Keys |
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 | listele |
Microsoft.Web/sites/config | listele |
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 | listele |
Microsoft.Web/sites/slots/config | listele |
microsoft.web/sites/slots/functions | listsecrets |
Hangi kaynak türlerinin liste işlemi olduğunu belirlemek için aşağıdaki seçeneklere sahipsiniz:
Bir kaynak sağlayıcısı için REST API işlemlerini görüntüleyin ve liste işlemlerini arayın. Örneğin, depolama hesaplarının listKeys işlemi vardır.
Get-AzProviderOperation PowerShell cmdlet'ini kullanın. Aşağıdaki örnek, depolama hesapları için tüm liste işlemlerini alır:
Get-AzProviderOperation -OperationSearchString "Microsoft.Storage/*" | where {$_.Operation -like "*list*"} | FT Operation
Yalnızca liste işlemlerini filtrelemek için aşağıdaki Azure CLI komutunu kullanın:
az provider operation show --namespace Microsoft.Storage --query "resourceTypes[?name=='storageAccounts'].operations[].name | [?contains(@, 'list')]"
managementGroupResourceId
managementGroupResourceId(resourceType, resourceName1, [resourceName2], ...)
Yönetim grubu düzeyinde dağıtılan bir kaynağın benzersiz tanımlayıcısını döndürür.
Ad alanı: az.
managementGroupResourceId
İşlev, Bicep dosyalarında kullanılabilir, ancak normalde buna ihtiyacınız yoktur. Bunun yerine, kaynak için sembolik adı kullanın ve özelliğine erişin id
.
Tanımlayıcı aşağıdaki biçimde döndürülür:
/providers/Microsoft.Management/managementGroups/{managementGroupName}/providers/{resourceType}/{resourceName}
Açıklamalar
Bu işlevi, bir kaynak grubu yerine yönetim grubuna dağıtılan kaynakların kaynak kimliğini almak için kullanırsınız. Döndürülen kimlik, abonelik kimliği ve kaynak grubu değeri eklemeyerek resourceId işlevi tarafından döndürülen değerden farklıdır.
managementGroupResourceID örneği
Aşağıdaki şablon bir ilke tanımı oluşturur ve atar. İlke tanımının managementGroupResourceId
kaynak kimliğini almak için işlevini kullanır.
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@2023-04-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@2024-04-01' = {
name: 'location-lock'
properties: {
scope: mgScope
policyDefinitionId: managementGroupResourceId('Microsoft.Authorization/policyDefinitions', policyDefinitionName)
}
dependsOn: [
policyDefinition
]
}
pickZones
pickZones(providerNamespace, resourceType, location, [numberOfZones], [offset])
Kaynak türünün bir bölge için bölgeleri destekleyip desteklemediğini belirler. Bu işlev yalnızca bölgesel kaynakları destekler. Alanlar arası yedekli hizmetler boş bir dizi döndürür. Daha fazla bilgi için bkz. Kullanılabilirlik Alanları destekleyen Azure Hizmetleri.
Ad alanı: az.
Parametreler
Parametre | Zorunlu | Türü | Açıklama |
---|---|---|---|
providerNamespace | Yes | Dize | Bölge desteğini denetlemek için kaynak türünün kaynak sağlayıcısı ad alanı. |
resourceType | Yes | Dize | Bölge desteğini denetlemek için kaynak türü. |
konum | Yes | Dize | Bölge desteği denetlenecek bölge. |
numberOfZones | Hayır | integer | Döndürülecek mantıksal bölge sayısı. Varsayılan değer 1'dir. Sayı 1 ile 3 arasından pozitif bir tamsayı olmalıdır. Tek bölgeli kaynaklar için 1 kullanın. Çok bölgeli kaynaklar için değerin desteklenen bölgelerin sayısından küçük veya buna eşit olması gerekir. |
fark | Hayır | integer | Başlangıç mantıksal bölgesinden uzaklık. offset plus numberOfZones değeri desteklenen bölgelerin sayısını aşarsa işlev bir hata döndürür. |
Dönüş değeri
Desteklenen bölgelere sahip bir dizi. ve numberOfZones
için varsayılan değerleri kullanırken, bölgeleri destekleyen bir kaynak türü ve bölgesi aşağıdaki diziyi döndürür:
[
"1"
]
numberOfZones
Parametre 3 olarak ayarlandığında şunu döndürür:
[
"1",
"2",
"3"
]
Kaynak türü veya bölge bölgeleri desteklemediğinde boş bir dizi döndürülür.
[
]
Açıklamalar
Azure Kullanılabilirlik Alanları için farklı kategoriler vardır: bölgesel ve alanlar arası yedekli. İşlev, pickZones
bölgesel bir kaynağın kullanılabilirlik alanını döndürmek için kullanılabilir. Alanlar arası yedekli hizmetler (ZRS) için işlev boş bir dizi döndürür. Bölgesel kaynaklar genellikle kaynak tanımının en üst düzeyinde bir zones
özelliğe sahiptir. Kullanılabilirlik alanları için destek kategorisini belirlemek için bkz. Kullanılabilirlik Alanları destekleyen Azure Hizmetleri.
Belirli bir Azure bölgesinin veya konumunun kullanılabilirlik alanlarını desteklenip desteklemediğini belirlemek için gibi bölgesel bir kaynak türüyle Microsoft.Network/publicIPAddresses
işlevini çağırınpickZones
. Yanıt boş değilse, bölge kullanılabilirlik alanlarını destekler.
pickZones örneği
Aşağıdaki Bicep dosyasında işlevi kullanmaya yönelik üç sonuç gösterilmektedir 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')
Önceki örneklerden alınan çıkış üç dizi döndürür.
Adı | Tür | Değer |
---|---|---|
destekleniyor | dizi | [ "1" ] |
notSupportedRegion | dizi | [] |
notSupportedType | dizi | [] |
alanlar için null sağlamayı veya sanal makineleri farklı bölgelere atamayı belirlemek için 'den pickZones
yanıtını kullanabilirsiniz.
Sağlayıcı
Sağlayıcılar işlevi Bicep'te kullanım dışı bırakıldı. Artık kullanmanızı önermeyiz. Bu işlevi kaynak sağlayıcısına yönelik bir API sürümü almak için kullandıysanız, Bicep dosyanızda belirli bir API sürümü sağlamanız önerilir. Özellikler sürümler arasında değişirse dinamik olarak döndürülen bir API sürümünü kullanmak şablonunuzu bozabilir.
Sağlayıcılar işlemi REST API aracılığıyla hala kullanılabilir. Kaynak sağlayıcısı hakkında bilgi almak için Bicep dosyasının dışında kullanılabilir.
Ad alanı: az.
reference
reference(resourceName or resourceIdentifier, [apiVersion], ['Full'])
Kaynağın çalışma zamanı durumunu temsil eden bir nesne döndürür. İşlevin çıkışı ve davranışı, her kaynak sağlayıcısının reference
(RP) PUT ve GET yanıtlarını nasıl uyguladığına bağlıdır.
Ad alanı: az.
Bicep dosyaları genellikle gereksiz olsa da başvuru işlevine erişim sağlar. Bunun yerine kaynağın sembolik adını kullanmanız önerilir. Başvuru işlevi yalnızca bir kaynağın properties
nesnesi içinde kullanılabilir ve veya location
gibi name
üst düzey özellikler için kullanılamaz. Aynı durum genellikle sembolik adı kullanan başvurular için de geçerlidir. Ancak, gibi name
özellikler için başvuru işlevini kullanmadan bir şablon oluşturmak mümkündür. Kaynak adıyla ilgili yeterli bilginin adı doğrudan yaydığı bilinmektedir. Derleme zamanı özellikleri olarak adlandırılır. Bicep doğrulaması sembolik adın yanlış kullanımını belirleyebilir.
Aşağıdaki örnek bir depolama hesabı dağıtır. İlk iki çıkış size aynı sonuçları verir.
param storageAccountName string = uniqueString(resourceGroup().id)
param location string = resourceGroup().location
resource storageAccount 'Microsoft.Storage/storageAccounts@2023-04-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
Şablonda dağıtılmayan mevcut bir kaynaktan özellik almak için anahtar sözcüğünü existing
kullanın:
param storageAccountName string
resource storageAccount 'Microsoft.Storage/storageAccounts@2023-04-01' existing = {
name: storageAccountName
}
// use later in template as often as needed
output blobAddress string = storageAccount.properties.primaryEndpoints.blob
Üst kaynağın içinde iç içe yerleştirilmiş bir kaynağa başvurmak için iç içe erişimciyi (::
kullanın). Bu söz dizimini yalnızca iç içe kaynağa üst kaynağın dışından erişirken kullanırsınız.
vNet1::subnet1.properties.addressPrefix
Var olmayan bir kaynağa başvurmaya çalışırsanız hatayla NotFound
karşılaşırsınız ve dağıtımınız başarısız olur.
resourceId
resourceId([subscriptionId], [resourceGroupName], resourceType, resourceName1, [resourceName2], ...)
Kaynağın benzersiz tanımlayıcısını döndürür.
Ad alanı: az.
resourceId
İşlev, Bicep dosyalarında kullanılabilir, ancak normalde buna ihtiyacınız yoktur. Bunun yerine, kaynak için sembolik adı kullanın ve özelliğine erişin id
.
Kaynak adı belirsiz olduğunda veya aynı Bicep dosyasında sağlanmadığında bu işlevi kullanırsınız. Döndürülen tanımlayıcının biçimi, dağıtımın bir kaynak grubu, abonelik, yönetim grubu veya kiracı kapsamında olup olmadığına bağlı olarak değişir.
Örneğin:
param storageAccountName string
param location string = resourceGroup().location
resource storageAccount 'Microsoft.Storage/storageAccounts@2023-04-01' = {
name: storageAccountName
location: location
kind: 'Storage'
sku: {
name: 'Standard_LRS'
}
}
output storageID string = storageAccount.id
Bicep dosyasında dağıtılmayan bir kaynağın kaynak kimliğini almak için mevcut anahtar sözcüğünü kullanın.
param storageAccountName string
resource storageAccount 'Microsoft.Storage/storageAccounts@2023-04-01' existing = {
name: storageAccountName
}
output storageID string = storageAccount.id
Daha fazla bilgi için bkz . JSON şablonu resourceId işlevi.
subscriptionResourceId
subscriptionResourceId([subscriptionId], resourceType, resourceName1, [resourceName2], ...)
Abonelik düzeyinde dağıtılan bir kaynağın benzersiz tanımlayıcısını döndürür.
Ad alanı: az.
subscriptionResourceId
İşlev, Bicep dosyalarında kullanılabilir, ancak normalde buna ihtiyacınız yoktur. Bunun yerine, kaynak için sembolik adı kullanın ve özelliğine erişin id
.
Tanımlayıcı aşağıdaki biçimde döndürülür:
/subscriptions/{subscriptionId}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}
Açıklamalar
Bu işlevi, bir kaynak grubu yerine aboneliğe dağıtılan kaynakların kaynak kimliğini almak için kullanırsınız. Döndürülen kimlik, kaynak grubu değeri eklemeyerek resourceId işlevi tarafından döndürülen değerden farklıdır.
subscriptionResourceID örneği
Aşağıdaki Bicep dosyası yerleşik bir rol atar. Bunu bir kaynak grubuna veya aboneliğe dağıtabilirsiniz. Yerleşik rollerin subscriptionResourceId
kaynak kimliğini almak için işlevini kullanır.
@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
}
}
tenantResourceId
tenantResourceId(resourceType, resourceName1, [resourceName2], ...)
Kiracı düzeyinde dağıtılan bir kaynağın benzersiz tanımlayıcısını döndürür.
Ad alanı: az.
tenantResourceId
İşlev, Bicep dosyalarında kullanılabilir, ancak normalde buna ihtiyacınız yoktur. Bunun yerine, kaynak için sembolik adı kullanın ve özelliğine erişin id
.
Tanımlayıcı aşağıdaki biçimde döndürülür:
/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}
Yerleşik ilke tanımları kiracı düzeyinde kaynaklardır. Yerleşik ilke tanımına başvuran bir ilke ataması tenantResourceId
dağıtmak için işlevini kullanın.
@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@2024-04-01' = {
name: policyAssignmentName
properties: {
scope: subscriptionResourceId('Microsoft.Resources/resourceGroups', resourceGroup().name)
policyDefinitionId: tenantResourceId('Microsoft.Authorization/policyDefinitions', policyDefinitionID)
}
}
Sonraki adımlar
- Geçerli dağıtımdan değer almak için bkz . Dağıtım değeri işlevleri.
- Kaynak türü oluştururken belirtilen sayıda yineleme yapmak için bkz . Bicep'te yinelemeli döngüler.