ARM şablonları için kaynak işlevleri
Resource Manager, Azure Resource Manager şablonunuzda (ARM şablonu) kaynak değerlerini almak için aşağıdaki işlevleri sağlar:
- extensionResourceId
- liste*
- pickZones
- sağlayıcılar (kullanım dışı)
- referans
- Başvuru
- resourceId
- subscriptionResourceId
- managementGroupResourceId
- tenantResourceId
Parametrelerden, değişkenlerden veya geçerli dağıtımdan değer almak için bkz . Dağıtım değeri işlevleri.
Dağıtım kapsamı değerlerini almak için bkz . Kapsam işlevleri.
İpucu
ARM şablonlarıyla aynı özellikleri sunduğundan ve söz diziminin kullanımı daha kolay olduğundan Bicep'i öneririz. Daha fazla bilgi edinmek için bkz . kaynak işlevleri.
extensionResourceId
extensionResourceId(baseResourceId, 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.
Bicep'te extensionResourceId işlevini kullanın.
Parametreler
Parametre | Zorunlu | Türü | Açıklama |
---|---|---|---|
baseResourceId | Yes | Dize | Uzantı kaynağının uygulandığı kaynağın kaynak kimliği. |
resourceType | Yes | Dize | Kaynak sağlayıcısı ad alanı dahil olmak üzere uzantı kaynağının türü. |
resourceName1 | Yes | Dize | Uzantı kaynağının adı. |
resourceName2 | Hayır | Dize | Gerekirse sonraki kaynak adı segmenti. |
Kaynak türü daha fazla segment içerdiğinde kaynak adlarını parametre olarak eklemeye devam edin.
Dönüş değeri
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 temel kaynağa göre değişir. Örneğin, bir aboneliğin kimliği, kaynak grubunun kimliğinden farklı segmentlere sahiptir.
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, döndürülen biçim şöyledir:
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{extensionResourceProviderNamespace}/{extensionResourceType}/{extensionResourceName}
Bu işlevi bir kaynak grubuyla kullanma örneği sonraki bölümde gösterilmiştir.
Uzantı kaynağı bir aboneliğe uygulandığında, döndürülen biçim şöyledir:
/subscriptions/{subscriptionId}/providers/{extensionResourceProviderNamespace}/{extensionResourceType}/{extensionResourceName}
Uzantı kaynağı bir yönetim grubuna uygulandığında, döndürülen biçim şöyledir:
/providers/Microsoft.Management/managementGroups/{managementGroupName}/providers/{extensionResourceProviderNamespace}/{extensionResourceType}/{extensionResourceName}
Bu işlevi bir yönetim grubuyla kullanma örneği sonraki bölümde gösterilmiştir.
extensionResourceId örneği
Aşağıdaki örnek, bir kaynak grubu kilidi için kaynak kimliğini döndürür.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"lockName": {
"type": "string"
}
},
"variables": {},
"resources": [],
"outputs": {
"lockResourceId": {
"type": "string",
"value": "[extensionResourceId(resourceGroup().Id , 'Microsoft.Authorization/locks', parameters('lockName'))]"
}
}
}
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 şablonu bir yönetim grubuna dağıtın.
{
"$schema": "https://schema.management.azure.com/schemas/2019-08-01/managementGroupDeploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"metadata": {
"_generator": {
"name": "bicep",
"version": "0.5.6.12127",
"templateHash": "1532257987028557958"
}
},
"parameters": {
"targetMG": {
"type": "string",
"metadata": {
"description": "Target Management Group"
}
},
"allowedLocations": {
"type": "array",
"defaultValue": [
"australiaeast",
"australiasoutheast",
"australiacentral"
],
"metadata": {
"description": "An array of the allowed locations, all other locations will be denied by the created policy."
}
}
},
"variables": {
"mgScope": "[tenantResourceId('Microsoft.Management/managementGroups', parameters('targetMG'))]",
"policyDefinitionName": "LocationRestriction"
},
"resources": [
{
"type": "Microsoft.Authorization/policyDefinitions",
"apiVersion": "2020-03-01",
"name": "[variables('policyDefinitionName')]",
"properties": {
"policyType": "Custom",
"mode": "All",
"parameters": {},
"policyRule": {
"if": {
"not": {
"field": "location",
"in": "[parameters('allowedLocations')]"
}
},
"then": {
"effect": "deny"
}
}
}
},
{
"type": "Microsoft.Authorization/policyAssignments",
"apiVersion": "2020-03-01",
"name": "location-lock",
"properties": {
"scope": "[variables('mgScope')]",
"policyDefinitionId": "[extensionResourceId(variables('mgScope'), 'Microsoft.Authorization/policyDefinitions', variables('policyDefinitionName'))]"
},
"dependsOn": [
"[extensionResourceId(managementGroup().id, 'Microsoft.Authorization/policyDefinitions', variables('policyDefinitionName'))]"
]
}
]
}
Yerleşik ilke tanımları kiracı düzeyinde kaynaklardır. Yerleşik ilke tanımı dağıtma örneği için bkz . tenantResourceId.
liste*
list{Value}(resourceName or resourceIdentifier, apiVersion, functionValues)
Bu işlevin söz dizimi, liste işlemlerinin adına göre değişir. Her uygulama, bir liste işlemini destekleyen kaynak türü için değerler döndürür. İşlem adı ile list
başlamalıdır ve son eki olabilir. Bazı yaygın kullanımlar , listKeys
, listKeyValue
ve listSecrets
şeklindedirlist
.
Bicep'te list* işlevini kullanın.
Parametreler
Parametre | Zorunlu | Türü | Açıklama |
---|---|---|---|
resourceName veya resourceIdentifier | Yes | Dize | Kaynağın benzersiz tanımlayıcısı. |
apiVersion | Yes | Dize | Kaynak çalışma zamanı durumunun API sürümü. Normalde, biçiminde, yyyy-mm-dd. |
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
Liste işlevleri bir kaynak tanımının özelliklerinde kullanılabilir. Şablonun çıkışlar bölümünde hassas bilgileri kullanıma sunan bir liste işlevi kullanmayın. Çıkış değerleri dağıtım geçmişinde depolanır ve kötü amaçlı bir kullanıcı tarafından alınabilir.
özellik yinelemesi ile kullanıldığında, ifadesi kaynak özelliğine atandığından için input
liste işlevlerini kullanabilirsiniz. Liste işlevi çözümlenmeden önce sayımın belirlenmesi gerektiğinden, bunları ile count
kullanamazsınız.
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/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/ç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 | 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/factory/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/topLevelDomains | listAgreements |
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.Maps/accounts | 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 | listele |
Microsoft.OperationalInsights/workspaces | listKeys |
Microsoft.PolicyInsights/düzeltmeler | listDeployments |
Microsoft.RedHatOpenShift/openShiftClusters | listCredentials |
Microsoft.Relay/namespaces/authorizationRules | listKeys |
Microsoft.Relay/namespaces/disasterRecoveryConfigs/authorizationRules | listKeys |
Microsoft.Relay/ad alanları/HybridConnections/authorizationRules | listKeys |
Microsoft.Relay/ad alanları/WcfRelays/authorizationRules | listkeys |
Microsoft.Search/searchServices | listAdminKeys |
Microsoft.Search/searchServices | listQueryKeys |
Microsoft.ServiceBus/namespaces/authorizationRules | listKeys |
Microsoft.ServiceBus/namespaces/disasterRecoveryConfigs/authorizationRules | listKeys |
Microsoft.ServiceBus/namespaces/queues/authorizationRules | listKeys |
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')]"
Dönüş değeri
Döndürülen nesne, kullandığınız işleve list
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. bir işlevin biçimini görmek için, örnek şablonda gösterildiği gibi çıkışlar bölümüne ekleyin.
Açıklamalar
Kaynak adını veya resourceId işlevini kullanarak kaynağı belirtin. Başvuruda bulunan kaynağı dağıtan aynı şablonda bir list
işlev kullanırken kaynak adını kullanın.
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 if
yalnızca kaynak dağıtılırken değerlendirildiğinden emin olmak için işlevini kullanın. Koşullu olarak dağıtılan bir kaynak kullanan if
örnek list
şablonun if işlevine bakın.
Liste örneği
Aşağıdaki örnek, dağıtım betikleri için bir değer ayarlarken kullanırlistKeys
.
"storageAccountSettings": {
"storageAccountName": "[variables('storageAccountName')]",
"storageAccountKey": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')), '2019-06-01').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.
"parameters": {
"accountSasProperties": {
"type": "object",
"defaultValue": {
"signedServices": "b",
"signedPermission": "r",
"signedExpiry": "2020-08-20T11:00:00Z",
"signedResourceTypes": "s"
}
}
},
...
"sasToken": "[listAccountSas(parameters('storagename'), '2018-02-01', parameters('accountSasProperties')).accountSasToken]"
pickZones
pickZones(providerNamespace, resourceType, location, [numberOfZones], [offset])
Kaynak türünün belirtilen konum veya 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.
Bicep'te pickZones işlevini kullanın.
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. Alanlar arası yedekli hizmetler için boş bir dizi de 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 şablonda işlevi kullanmaya yönelik üç sonuç gösterilmektedir pickZones
.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {},
"functions": [],
"variables": {},
"resources": [],
"outputs": {
"supported": {
"type": "array",
"value": "[pickZones('Microsoft.Compute', 'virtualMachines', 'westus2')]"
},
"notSupportedRegion": {
"type": "array",
"value": "[pickZones('Microsoft.Compute', 'virtualMachines', 'westus')]"
},
"notSupportedType": {
"type": "array",
"value": "[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. Aşağıdaki örnek, bölgelerin kullanılabilirliğine göre bölge için bir değer ayarlar.
"zones": {
"value": "[if(not(empty(pickZones('Microsoft.Compute', 'virtualMachines', 'westus2'))), string(add(mod(copyIndex(),3),1)), json('null'))]"
},
Azure Cosmos DB bölgesel bir kaynak değildir, ancak coğrafi çoğaltma için bölge yedekliliğini etkinleştirip etkinleştirmeyeceğini belirlemek için işlevini kullanabilirsiniz pickZones
. Alanlar arası yedekliliği etkinleştirip etkinleştirmeyeceğini belirlemek için Microsoft.Storage/storageAccounts kaynak türünü geçirin.
"resources": [
{
"type": "Microsoft.DocumentDB/databaseAccounts",
"apiVersion": "2021-04-15",
"name": "[variables('accountName_var')]",
"location": "[parameters('location')]",
"kind": "GlobalDocumentDB",
"properties": {
"consistencyPolicy": "[variables('consistencyPolicy')[parameters('defaultConsistencyLevel')]]",
"locations": [
{
"locationName": "[parameters('primaryRegion')]",
"failoverPriority": 0,
"isZoneRedundant": "[if(empty(pickZones('Microsoft.Storage', 'storageAccounts', parameters('primaryRegion'))), bool('false'), bool('true'))]",
},
{
"locationName": "[parameters('secondaryRegion')]",
"failoverPriority": 1,
"isZoneRedundant": "[if(empty(pickZones('Microsoft.Storage', 'storageAccounts', parameters('secondaryRegion'))), bool('false'), bool('true'))]",
}
],
"databaseAccountOfferType": "Standard",
"enableAutomaticFailover": "[parameters('automaticFailover')]"
}
}
]
Sağlayıcı
ARM şablonlarında sağlayıcılar işlevi kullanım dışı bırakılmıştır. Artık kullanmanızı önermeyiz. Kaynak sağlayıcısı için bir API sürümü almak için bu işlevi kullandıysanız, şablonunuzda belirli bir API sürümü sağlamanızı öneririz. Özellikler sürümler arasında değişirse dinamik olarak döndürülen bir API sürümünü kullanmak şablonunuzu bozabilir.
Bicep'te sağlayıcılar işlevi kullanım dışıdır.
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 ARM şablonunun dışında kullanılabilir.
reference
Sembolik adları olmayan şablonlarda:
reference(resourceName or resourceIdentifier, [apiVersion], ['Full'])
Sembolik adlara sahip şablonlarda:
reference(symbolicName 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. Kaynak koleksiyonlarının çalışma zamanı durumlarını temsil eden bir nesne dizisi döndürmek için başvurulara bakın.
Bicep başvuru işlevini sağlar, ancak çoğu durumda başvuru işlevi gerekli değildir. Bunun yerine kaynak için sembolik adı kullanmanız önerilir. Başvuruya bakın.
Parametreler
Parametre | Zorunlu | Türü | Açıklama |
---|---|---|---|
resourceName/resourceIdentifier veya symbolicName/resourceIdentifier | Yes | Dize | Sembolik adları olmayan şablonlarda, kaynağın adını veya benzersiz tanımlayıcısını belirtin. Geçerli şablondaki bir kaynağa başvururken, parametre olarak yalnızca kaynak adını sağlayın. Daha önce dağıtılan bir kaynağa başvururken veya kaynağın adı belirsiz olduğunda kaynak kimliğini belirtin. Sembolik adlara sahip şablonlarda, bir kaynağın sembolik adını veya benzersiz tanımlayıcısını belirtin. Geçerli şablondaki bir kaynağa başvururken parametre olarak yalnızca kaynak sembolik adını sağlayın. Daha önce dağıtılan bir kaynağa başvururken kaynak kimliğini belirtin. |
apiVersion | Hayır | Dize | Belirtilen kaynağın API sürümü. Kaynak aynı şablon içinde sağlanmamışsa bu parametre gereklidir. Normalde, biçiminde, yyyy-mm-dd. Kaynağınız için geçerli API sürümleri için bkz . şablon başvurusu. |
'Tam' | Hayır | Dize | Tam kaynak nesnesinin döndürülip döndürülmeyeceğini belirten değer. belirtmezseniz 'Full' , yalnızca kaynağın properties nesnesi döndürülür. Tam nesne, kaynak kimliği ve konum gibi değerleri içerir. |
Dönüş değeri
Her kaynak türü, başvuru işlevi için farklı özellikler döndürür. İşlev, önceden tanımlanmış tek bir biçim döndürmez. Ayrıca, döndürülen değer bağımsız değişkenin değerine 'Full'
göre farklılık gösterir. Bir kaynak türünün özelliklerini görmek için çıktılar bölümünde örnekte gösterildiği gibi nesnesini döndürebilirsiniz.
Açıklamalar
Başvuru işlevi, daha önce dağıtılan bir kaynağın veya geçerli şablonda dağıtılan kaynağın çalışma zamanı durumunu alır. Bu makalede her iki senaryo için örnekler gösterilmektedir.
Genellikle blob uç noktası URI'si reference
veya tam etki alanı adı gibi bir nesneden belirli bir değeri döndürmek için işlevini kullanırsınız.
"outputs": {
"BlobUri": {
"type": "string",
"value": "[reference(resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName'))).primaryEndpoints.blob]"
},
"FQDN": {
"type": "string",
"value": "[reference(resourceId('Microsoft.Network/publicIPAddresses', parameters('ipAddressName'))).dnsSettings.fqdn]"
}
}
Özellikler şemasının parçası olmayan kaynak değerlerine ihtiyacınız olduğunda kullanın 'Full'
. Örneğin, anahtar kasası erişim ilkelerini ayarlamak için bir sanal makinenin kimlik özelliklerini alın.
{
"type": "Microsoft.KeyVault/vaults",
"apiVersion": "2022-07-01",
"name": "vaultName",
"properties": {
"tenantId": "[subscription().tenantId]",
"accessPolicies": [
{
"tenantId": "[reference(resourceId('Microsoft.Compute/virtualMachines', variables('vmName')), '2019-03-01', 'Full').identity.tenantId]",
"objectId": "[reference(resourceId('Microsoft.Compute/virtualMachines', variables('vmName')), '2019-03-01', 'Full').identity.principalId]",
"permissions": {
"keys": [
"all"
],
"secrets": [
"all"
]
}
}
],
...
Geçerli kullanımlar
reference
İşlev yalnızca kaynak tanımının bir şablonun veya dağıtım ve özellikler nesnesinin çıkışlar bölümünde kullanılabilir. , gibi kaynak özellikleri type
name
location
ve kaynak tanımının diğer üst düzey özellikleri için kullanılamaz. özellik yinelemesi ile kullanıldığında, ifadesi kaynak özelliğine atandığından işlevini input
kullanabilirsinizreference
.
bir kopyalama döngüsünde reference
özelliğinin count
değerini ayarlamak için işlevini kullanamazsınız. Döngüdeki diğer özellikleri ayarlamak için kullanabilirsiniz. İşlev çözümlenmeden önce bu özelliğin belirlenmesi gerektiğinden count özelliği için reference
başvuru engellendi.
İşlevi reference
veya iç içe bir şablonun çıkışlar bölümündeki herhangi list*
bir işlevi kullanmak için, iç kapsam değerlendirmesini expressionEvaluationOptions
kullanacak veya iç içe yerleştirilmiş şablon yerine bağlantılı bir şablon kullanacak şekilde ayarlamanız gerekir.
İşlevi reference
koşullu olarak dağıtılan bir kaynakta kullanırsanız, kaynak dağıtılmasa bile işlev değerlendirilir. İşlev var olmayan bir kaynağa başvuruyorsa reference
bir hata alırsınız. İşlevin if
yalnızca kaynak dağıtılırken değerlendirildiğinden emin olmak için işlevini kullanın. Koşullu olarak dağıtılan bir kaynak kullanan if
örnek reference
şablonun if işlevine bakın.
Örtük bağımlılık
işlevini kullanarak reference
, başvurulan kaynak aynı şablonda sağlanıyorsa ve kaynağa kaynak kimliğiyle değil adıyla başvuruda bulunursanız, bir kaynağın başka bir kaynağa bağımlı olduğunu örtük olarak bildirirsiniz. Özelliğini de kullanmanız dependsOn
gerekmez. Başvuruda bulunan kaynak dağıtımı tamamlayana kadar işlev değerlendirilmez.
Kaynak adı, Sembolik ad veya tanımlayıcı
Aynı simgesel olmayan-ad şablonunda dağıtılan bir kaynağa başvururken kaynağın adını belirtin.
"value": "[reference(parameters('storageAccountName'))]"
Aynı sembolik ad şablonunda dağıtılan bir kaynağa başvururken kaynağın sembolik adını belirtin.
"value": "[reference('myStorage').primaryEndpoints]"
Or
"value": "[reference('myStorage', '2022-09-01', 'Full').location]"
Aynı şablonda dağıtılmamış bir kaynağa başvururken, ve apiVersion
kaynak kimliğini belirtin.
"value": "[reference(resourceId(parameters('storageResourceGroup'), 'Microsoft.Storage/storageAccounts', parameters('storageAccountName')), '2022-09-01')]"
Hangi kaynağa başvurabileceğiniz konusunda belirsizlik yaşamamak için, tam kaynak tanımlayıcısı sağlayabilirsiniz.
"value": "[reference(resourceId('Microsoft.Network/publicIPAddresses', parameters('ipAddressName')))]"
Bir kaynağa tam başvuru oluştururken, tür ve ad segmentlerini birleştirme sırası yalnızca ikisinin birleştirilmesi değildir. Bunun yerine, ad alanından sonra, en az belirli olandan en belirliye kadar bir tür/ad çifti dizisi kullanın:
{resource-provider-namespace}/{parent-resource-type}/{parent-resource-name}[/{child-resource-type}/{child-resource-name}]
Örneğin:
Microsoft.Compute/virtualMachines/myVM/extensions/myExt
doğru Microsoft.Compute/virtualMachines/extensions/myVM/myExt
değil
Herhangi bir kaynak kimliğinin oluşturulmasını basitleştirmek için işlev yerine concat()
bu belgede açıklanan işlevleri kullanınresourceId()
.
Yönetilen kimliği alma
Azure kaynakları için yönetilen kimlikler, bazı kaynaklar için örtük olarak oluşturulan uzantı kaynak türleridir. Yönetilen kimlik şablonda açıkça tanımlanmadığından, kimliğin uygulandığı kaynağa başvurmanız gerekir. Örtük olarak oluşturulan kimlik de dahil olmak üzere tüm özellikleri almak için kullanın Full
.
Desen şöyledir:
"[reference(resourceId(<resource-provider-namespace>, <resource-name>), <API-version>, 'Full').Identity.propertyName]"
Örneğin, bir sanal makineye uygulanan yönetilen kimliğin asıl kimliğini almak için şunu kullanın:
"[reference(resourceId('Microsoft.Compute/virtualMachines', variables('vmName')),'2019-12-01', 'Full').identity.principalId]",
Veya sanal makine ölçek kümesine uygulanan yönetilen kimliğin kiracı kimliğini almak için şunu kullanın:
"[reference(resourceId('Microsoft.Compute/virtualMachineScaleSets', variables('vmNodeType0Name')), 2019-12-01, 'Full').Identity.tenantId]"
Başvuru örneği
Aşağıdaki örnek bir kaynak dağıtır ve bu kaynağa başvurur.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"storageAccountName": {
"type": "string"
},
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]"
}
},
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2022-09-01",
"name": "[parameters('storageAccountName')]",
"location": "[parameters('location')]",
"sku": {
"name": "Standard_LRS"
},
"kind": "Storage",
"tags": {},
"properties": {
}
}
],
"outputs": {
"referenceOutput": {
"type": "object",
"value": "[reference(parameters('storageAccountName'))]"
},
"fullReferenceOutput": {
"type": "object",
"value": "[reference(parameters('storageAccountName'), '2022-09-01', 'Full')]"
}
}
}
Yukarıdaki örnek iki nesneyi döndürür. Properties nesnesi aşağıdaki biçimdedir:
{
"creationTime": "2017-10-09T18:55:40.5863736Z",
"primaryEndpoints": {
"blob": "https://examplestorage.blob.core.windows.net/",
"file": "https://examplestorage.file.core.windows.net/",
"queue": "https://examplestorage.queue.core.windows.net/",
"table": "https://examplestorage.table.core.windows.net/"
},
"primaryLocation": "southcentralus",
"provisioningState": "Succeeded",
"statusOfPrimary": "available",
"supportsHttpsTrafficOnly": false
}
Nesnenin tamamı aşağıdaki biçimdedir:
{
"apiVersion":"2022-09-01",
"location":"southcentralus",
"sku": {
"name":"Standard_LRS",
"tier":"Standard"
},
"tags":{},
"kind":"Storage",
"properties": {
"creationTime":"2021-10-09T18:55:40.5863736Z",
"primaryEndpoints": {
"blob":"https://examplestorage.blob.core.windows.net/",
"file":"https://examplestorage.file.core.windows.net/",
"queue":"https://examplestorage.queue.core.windows.net/",
"table":"https://examplestorage.table.core.windows.net/"
},
"primaryLocation":"southcentralus",
"provisioningState":"Succeeded",
"statusOfPrimary":"available",
"supportsHttpsTrafficOnly":false
},
"subscriptionId":"<subscription-id>",
"resourceGroupName":"functionexamplegroup",
"resourceId":"Microsoft.Storage/storageAccounts/examplestorage",
"referenceApiVersion":"2021-04-01",
"condition":true,
"isConditionTrue":true,
"isTemplateResource":false,
"isAction":false,
"provisioningOperation":"Read"
}
Aşağıdaki örnek şablon, bu şablonda dağıtılmamış bir depolama hesabına başvurur. Depolama hesabı aynı abonelikte zaten var.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"storageResourceGroup": {
"type": "string"
},
"storageAccountName": {
"type": "string"
}
},
"resources": [],
"outputs": {
"ExistingStorage": {
"type": "object",
"value": "[reference(resourceId(parameters('storageResourceGroup'), 'Microsoft.Storage/storageAccounts', parameters('storageAccountName')), '2021-04-01')]"
}
}
}
başvurular
references(symbolic name of a resource collection, ['Full', 'Properties])
işlevi ile references
benzer şekilde reference
çalışır. İşlev, kaynağın çalışma zamanı durumunu gösteren bir nesneyi döndürmek yerine, references
kaynak koleksiyonunun çalışma zamanı durumlarını temsil eden bir nesne dizisi döndürür. Bu işlev ARM şablonu dil sürümünü 2.0
gerektirir ve sembolik adı etkindir:
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"languageVersion": "2.0",
"contentVersion": "1.0.0.0",
...
}
Bicep'te açık references
bir işlev yoktur. Bunun yerine, sembolik koleksiyon kullanımı doğrudan kullanılır ve kod oluşturma sırasında Bicep bunu ARM şablon işlevini kullanan bir ARM şablonuna references
çevirir. Daha fazla bilgi için bkz . Kaynak/modül koleksiyonları başvurusu.
Parametreler
Parametre | Zorunlu | Türü | Açıklama |
---|---|---|---|
Kaynak koleksiyonunun sembolik adı | Yes | Dize | Geçerli şablonda tanımlanan kaynak koleksiyonunun sembolik adı. İşlev, references geçerli şablon dışındaki kaynaklara başvurmayı desteklemez. |
'Full', 'Properties' | Hayır | Dize | Tam kaynak nesnelerinin dizisinin döndürülip döndürülmeyeceğini belirten değer. Varsayılan değer şudur: 'Properties' . belirtmezseniz 'Full' , yalnızca kaynakların özellik nesneleri döndürülür. Tam nesne, kaynak kimliği ve konum gibi değerleri içerir. |
Dönüş değeri
Kaynak koleksiyonunun dizisi. Her kaynak türü işlev için reference
farklı özellikler döndürür. Ayrıca, döndürülen değer bağımsız değişkenin değerine 'Full'
göre farklılık gösterir. Daha fazla bilgi için bkz . başvuru.
çıkış sırası references
her zaman kopyalama dizinine göre artan düzende düzenlenir. Bu nedenle, dizin 0 içeren koleksiyondaki ilk kaynak önce görüntülenir, ardından dizin 1 vb. görüntülenir. Örneğin, [worker-0, worker-1, worker-2, ...].
Yukarıdaki örnekte, worker-0 ve worker-2 dağıtılırken worker-1 yanlış bir koşuldan kaynaklanmadıysa, çıkışı references
dağıtılmayan kaynağı atlar ve dağıtılanları numaralarına göre sıralanmış olarak görüntüler. çıktısı references
[worker-0, worker-2, ...] olacaktır. Tüm kaynaklar atlanırsa işlev boş bir dizi döndürür.
Geçerli kullanımlar
İşlevreferences
, kaynak kopyalama döngüleri veya Döngü için Bicep içinde kullanılamaz. Örneğin, references
aşağıdaki senaryoda izin verilmez:
{
resources: {
"resourceCollection": {
"copy": { ... },
"properties": {
"prop": "[references(...)]"
}
}
}
}
İşlevi references
veya iç içe bir şablonun çıkışlar bölümündeki herhangi list*
bir işlevi kullanmak için, iç kapsam değerlendirmesini expressionEvaluationOptions
kullanacak veya iç içe yerleştirilmiş şablon yerine bağlantılı bir şablon kullanacak şekilde ayarlamanız gerekir.
Örtük bağımlılık
işlevini kullanarak, bir kaynağın references
başka bir kaynağa bağımlı olduğunu örtük olarak bildirirsiniz. Özelliğini de kullanmanız dependsOn
gerekmez. Başvuruda bulunan kaynak dağıtımı tamamlayana kadar işlev değerlendirilmez.
Başvuru örneği
Aşağıdaki örnek bir kaynak koleksiyonu dağıtır ve bu kaynak koleksiyonuna başvurur.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"languageVersion": "2.0",
"contentVersion": "1.0.0.0",
"parameters": {
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]",
"metadata": {
"description": "Location for all resources."
}
},
"numWorkers": {
"type": "int",
"defaultValue": 4,
"metadata": {
"description": "The number of workers"
}
}
},
"resources": {
"containerWorkers": {
"copy": {
"name": "containerWorkers",
"count": "[length(range(0, parameters('numWorkers')))]"
},
"type": "Microsoft.ContainerInstance/containerGroups",
"apiVersion": "2023-05-01",
"name": "[format('worker-{0}', range(0, parameters('numWorkers'))[copyIndex()])]",
"location": "[parameters('location')]",
"properties": {
"containers": [
{
"name": "[format('worker-container-{0}', range(0, parameters('numWorkers'))[copyIndex()])]",
"properties": {
"image": "mcr.microsoft.com/azuredocs/aci-helloworld",
"ports": [
{
"port": 80,
"protocol": "TCP"
}
],
"resources": {
"requests": {
"cpu": 1,
"memoryInGB": 2
}
}
}
}
],
"osType": "Linux",
"restartPolicy": "Always",
"ipAddress": {
"type": "Public",
"ports": [
{
"port": 80,
"protocol": "TCP"
}
]
}
}
},
"containerController": {
"type": "Microsoft.ContainerInstance/containerGroups",
"apiVersion": "2023-05-01",
"name": "controller",
"location": "[parameters('location')]",
"properties": {
"containers": [
{
"name": "controller-container",
"properties": {
"command": [
"echo",
"[format('Worker IPs are {0}', join(map(references('containerWorkers', 'full'), lambda('w', lambdaVariables('w').properties.ipAddress.ip)), ','))]"
],
"image": "mcr.microsoft.com/azuredocs/aci-helloworld",
"ports": [
{
"port": 80,
"protocol": "TCP"
}
],
"resources": {
"requests": {
"cpu": 1,
"memoryInGB": 2
}
}
}
}
],
"osType": "Linux",
"restartPolicy": "Always",
"ipAddress": {
"type": "Public",
"ports": [
{
"port": 80,
"protocol": "TCP"
}
]
}
},
"dependsOn": [
"containerWorkers"
]
}
},
"outputs": {
"workerIpAddresses": {
"type": "string",
"value": "[join(map(references('containerWorkers', 'full'), lambda('w', lambdaVariables('w').properties.ipAddress.ip)), ',')]"
},
"containersFull": {
"type": "array",
"value": "[references('containerWorkers', 'full')]"
},
"container": {
"type": "array",
"value": "[references('containerWorkers')]"
}
}
}
Yukarıdaki örnek üç nesneyi döndürür.
"outputs": {
"workerIpAddresses": {
"type": "String",
"value": "20.66.74.26,20.245.100.10,13.91.86.58,40.83.249.30"
},
"containersFull": {
"type": "Array",
"value": [
{
"apiVersion": "2023-05-01",
"condition": true,
"copyContext": {
"copyIndex": 0,
"copyIndexes": {
"": 0,
"containerWorkers": 0
},
"name": "containerWorkers"
},
"copyLoopSymbolicName": "containerWorkers",
"deploymentResourceLineInfo": {
"lineNumber": 30,
"linePosition": 25
},
"existing": false,
"isAction": false,
"isConditionTrue": true,
"isTemplateResource": true,
"location": "westus",
"properties": {
"containers": [
{
"name": "worker-container-0",
"properties": {
"environmentVariables": [],
"image": "mcr.microsoft.com/azuredocs/aci-helloworld",
"instanceView": {
"currentState": {
"detailStatus": "",
"startTime": "2023-07-31T19:25:31.996Z",
"state": "Running"
},
"restartCount": 0
},
"ports": [
{
"port": 80,
"protocol": "TCP"
}
],
"resources": {
"requests": {
"cpu": 1.0,
"memoryInGB": 2.0
}
}
}
}
],
"initContainers": [],
"instanceView": {
"events": [],
"state": "Running"
},
"ipAddress": {
"ip": "20.66.74.26",
"ports": [
{
"port": 80,
"protocol": "TCP"
}
],
"type": "Public"
},
"isCustomProvisioningTimeout": false,
"osType": "Linux",
"provisioningState": "Succeeded",
"provisioningTimeoutInSeconds": 1800,
"restartPolicy": "Always",
"sku": "Standard"
},
"provisioningOperation": "Create",
"references": [],
"resourceGroupName": "demoRg",
"resourceId": "Microsoft.ContainerInstance/containerGroups/worker-0",
"scope": "",
"subscriptionId": "",
"symbolicName": "containerWorkers[0]"
},
...
]
},
"containers": {
"type": "Array",
"value": [
{
"containers": [
{
"name": "worker-container-0",
"properties": {
"environmentVariables": [],
"image": "mcr.microsoft.com/azuredocs/aci-helloworld",
"instanceView": {
"currentState": {
"detailStatus": "",
"startTime": "2023-07-31T19:25:31.996Z",
"state": "Running"
},
"restartCount": 0
},
"ports": [
{
"port": 80,
"protocol": "TCP"
}
],
"resources": {
"requests": {
"cpu": 1.0,
"memoryInGB": 2.0
}
}
}
}
],
"initContainers": [],
"instanceView": {
"events": [],
"state": "Running"
},
"ipAddress": {
"ip": "20.66.74.26",
"ports": [
{
"port": 80,
"protocol": "TCP"
}
],
"type": "Public"
},
"isCustomProvisioningTimeout": false,
"osType": "Linux",
"provisioningState": "Succeeded",
"provisioningTimeoutInSeconds": 1800,
"restartPolicy": "Always",
"sku": "Standard"
},
...
]
}
}
resourceGroup
ResourceGroup kapsam işlevine bakın.
Bicep'te resourcegroup scope işlevini kullanın.
resourceId
resourceId([subscriptionId], [resourceGroupName], resourceType, resourceName1, [resourceName2], ...)
Kaynağın benzersiz tanımlayıcısını döndürür. Kaynak adı belirsiz olduğunda veya aynı şablonda 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.
Bicep'te resourceId işlevini kullanın.
Parametreler
Parametre | Zorunlu | Türü | Açıklama |
---|---|---|---|
subscriptionId | Hayır | dize (GUID biçiminde) | Varsayılan değer geçerli aboneliktir. Başka bir abonelikteki bir kaynağı almanız gerektiğinde bu değeri belirtin. Bu değeri yalnızca bir kaynak grubu veya abonelik kapsamında dağıtırken sağlayın. |
resourceGroupName | Hayır | Dize | Varsayılan değer geçerli kaynak grubudur. Başka bir kaynak grubundaki bir kaynağı almanız gerektiğinde bu değeri belirtin. Bu değeri yalnızca bir kaynak grubu kapsamında dağıtırken sağlayın. |
resourceType | Yes | Dize | Kaynak sağlayıcısı ad alanı dahil olmak üzere kaynak türü. |
resourceName1 | Yes | Dize | Kaynağın adı. |
resourceName2 | Hayır | Dize | Gerekirse sonraki kaynak adı segmenti. |
Kaynak türü daha fazla segment içerdiğinde kaynak adlarını parametre olarak eklemeye devam edin.
Dönüş değeri
Kaynak kimliği farklı kapsamlarda farklı biçimlerde döndürülür:
Kaynak grubu kapsamı:
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}
Abonelik kapsamı:
/subscriptions/{subscriptionId}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}
Yönetim grubu veya kiracı kapsamı:
/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}
Karışıklığı önlemek için aboneliğe, yönetim grubuna veya kiracıya dağıtılan kaynaklarla çalışırken kullanmamanızı resourceId
öneririz. Bunun yerine, kapsam için tasarlanan ID işlevini kullanın.
- Abonelik düzeyi kaynaklar için subscriptionResourceId işlevini kullanın.
- Yönetim grubu düzeyindeki kaynaklar için managementGroupResourceId işlevini kullanın. Bir yönetim grubunun uzantısı olarak uygulanan bir kaynağa başvurmak için extensionResourceId işlevini kullanın. Örneğin, bir yönetim grubuna dağıtılan özel ilke tanımları, yönetim grubunun uzantılarıdır. Kiracıya dağıtılan ancak yönetim grubunuzda kullanılabilen kaynaklara başvurmak için tenantResourceId işlevini kullanın. Örneğin, yerleşik ilke tanımları kiracı düzeyi kaynakları olarak uygulanır.
- Kiracı düzeyindeki kaynaklar için tenantResourceId işlevini kullanın. Kiracı düzeyinde uygulandığından yerleşik ilke tanımları için kullanın
tenantResourceId
.
Açıklamalar
Sağladığınız parametre sayısı, kaynağın üst kaynak mı yoksa alt kaynak mı olduğuna ve kaynağın aynı abonelikte mi yoksa kaynak grubunda mı olduğuna bağlı olarak değişir.
Aynı abonelik ve kaynak grubundaki bir üst kaynağın kaynak kimliğini almak için kaynağın türünü ve adını belirtin.
"[resourceId('Microsoft.ServiceBus/namespaces', 'namespace1')]"
Bir alt kaynağın kaynak kimliğini almak için kaynak türündeki segment sayısına dikkat edin. Kaynak türünün her kesimi için bir kaynak adı belirtin. Segmentin adı, hiyerarşinin o bölümü için var olan kaynağa karşılık gelir.
"[resourceId('Microsoft.ServiceBus/namespaces/queues/authorizationRules', 'namespace1', 'queue1', 'auth1')]"
Aynı abonelikteki ancak farklı kaynak grubundaki bir kaynağın kaynak kimliğini almak için kaynak grubu adını girin.
"[resourceId('otherResourceGroup', 'Microsoft.Storage/storageAccounts', 'examplestorage')]"
Farklı bir abonelik ve kaynak grubundaki bir kaynağın kaynak kimliğini almak için abonelik kimliğini ve kaynak grubu adını girin.
"[resourceId('xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx', 'otherResourceGroup', 'Microsoft.Storage/storageAccounts','examplestorage')]"
Genellikle, alternatif bir kaynak grubunda depolama hesabı veya sanal ağ kullanırken bu işlevi kullanmanız gerekir. Aşağıdaki örnekte, dış kaynak grubundaki bir kaynağın nasıl kolayca kullanabildiği gösterilmektedir:
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"location": {
"type": "string"
},
"virtualNetworkName": {
"type": "string"
},
"virtualNetworkResourceGroup": {
"type": "string"
},
"subnet1Name": {
"type": "string"
},
"nicName": {
"type": "string"
}
},
"variables": {
"subnet1Ref": "[resourceId(parameters('virtualNetworkResourceGroup'), 'Microsoft.Network/virtualNetworks/subnets', parameters('virtualNetworkName'), parameters('subnet1Name'))]"
},
"resources": [
{
"type": "Microsoft.Network/networkInterfaces",
"apiVersion": "2022-11-01",
"name": "[parameters('nicName')]",
"location": "[parameters('location')]",
"properties": {
"ipConfigurations": [
{
"name": "ipconfig1",
"properties": {
"privateIPAllocationMethod": "Dynamic",
"subnet": {
"id": "[variables('subnet1Ref')]"
}
}
}
]
}
}
]
}
Kaynak Kimliği örneği
Aşağıdaki örnek, kaynak grubundaki bir depolama hesabının kaynak kimliğini döndürür:
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"resources": [],
"outputs": {
"sameRGOutput": {
"type": "string",
"value": "[resourceId('Microsoft.Storage/storageAccounts','examplestorage')]"
},
"differentRGOutput": {
"type": "string",
"value": "[resourceId('otherResourceGroup', 'Microsoft.Storage/storageAccounts','examplestorage')]"
},
"differentSubOutput": {
"type": "string",
"value": "[resourceId('11111111-1111-1111-1111-111111111111', 'otherResourceGroup', 'Microsoft.Storage/storageAccounts','examplestorage')]"
},
"nestedResourceOutput": {
"type": "string",
"value": "[resourceId('Microsoft.SQL/servers/databases', 'serverName', 'databaseName')]"
}
}
}
Yukarıdaki örnekten varsayılan değerleri içeren çıkış:
Adı | Tür | Değer |
---|---|---|
sameRGOutput | String | /subscriptions/{current-sub-id}/resourceGroups/examplegroup/providers/Microsoft.Storage/storageAccounts/examplestorage |
differentRGOutput | String | /subscriptions/{current-sub-id}/resourceGroups/otherResourceGroup/providers/Microsoft.Storage/storageAccounts/examplestorage |
differentSubOutput | String | /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e4e/resourceGroups/otherResourceGroup/providers/Microsoft.Storage/storageAccounts/examplestorage |
nestedResourceOutput | String | /subscriptions/{current-sub-id}/resourceGroups/examplegroup/providers/Microsoft.SQL/servers/serverName/databases/databaseName |
aboneliği
Bicep'te abonelik kapsamı işlevini kullanın.
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.
Bicep'te subscriptionResourceId işlevini kullanın.
Parametreler
Parametre | Zorunlu | Türü | Açıklama |
---|---|---|---|
subscriptionId | Hayır | dize (GUID biçiminde) | Varsayılan değer geçerli aboneliktir. Başka bir abonelikteki bir kaynağı almanız gerektiğinde bu değeri belirtin. |
resourceType | Yes | Dize | Kaynak sağlayıcısı ad alanı dahil olmak üzere kaynak türü. |
resourceName1 | Yes | Dize | Kaynağın adı. |
resourceName2 | Hayır | Dize | Gerekirse sonraki kaynak adı segmenti. |
Kaynak türü daha fazla segment içerdiğinde kaynak adlarını parametre olarak eklemeye devam edin.
Dönüş değeri
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 şablon 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.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"principalId": {
"type": "string",
"metadata": {
"description": "The principal to assign the role to"
}
},
"builtInRoleType": {
"type": "string",
"allowedValues": [
"Owner",
"Contributor",
"Reader"
],
"metadata": {
"description": "Built-in role to assign"
}
},
"roleNameGuid": {
"type": "string",
"defaultValue": "[newGuid()]",
"metadata": {
"description": "A new GUID used to identify the role assignment"
}
}
},
"variables": {
"Owner": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', '8e3af657-a8ff-443c-a75c-2fe8c4bcb635')]",
"Contributor": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'b24988ac-6180-42a0-ab88-20f7382dd24c')]",
"Reader": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'acdd72a7-3385-48ef-bd42-f606fba81ae7')]"
},
"resources": [
{
"type": "Microsoft.Authorization/roleAssignments",
"apiVersion": "2022-04-01",
"name": "[parameters('roleNameGuid')]",
"properties": {
"roleDefinitionId": "[variables(parameters('builtInRoleType'))]",
"principalId": "[parameters('principalId')]"
}
}
]
}
managementGroupResourceId
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.
Bicep'te managementGroupResourceId işlevini kullanın.
Parametreler
Parametre | Zorunlu | Türü | Açıklama |
---|---|---|---|
managementGroupResourceId | Hayır | dize (GUID biçiminde) | Varsayılan değer geçerli yönetim grubudur. Başka bir yönetim grubundaki bir kaynağı almanız gerektiğinde bu değeri belirtin. |
resourceType | Yes | Dize | Kaynak sağlayıcısı ad alanı dahil olmak üzere kaynak türü. |
resourceName1 | Yes | Dize | Kaynağın adı. |
resourceName2 | Hayır | Dize | Gerekirse sonraki kaynak adı segmenti. |
Kaynak türü daha fazla segment içerdiğinde kaynak adlarını parametre olarak eklemeye devam edin.
Dönüş değeri
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.
{
"$schema": "https://schema.management.azure.com/schemas/2019-08-01/managementGroupDeploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"targetMG": {
"type": "string",
"metadata": {
"description": "Target Management Group"
}
},
"allowedLocations": {
"type": "array",
"defaultValue": [
"australiaeast",
"australiasoutheast",
"australiacentral"
],
"metadata": {
"description": "An array of the allowed locations, all other locations will be denied by the created policy."
}
}
},
"variables": {
"mgScope": "[tenantResourceId('Microsoft.Management/managementGroups', parameters('targetMG'))]",
"policyDefinitionName": "LocationRestriction"
},
"resources": [
{
"type": "Microsoft.Authorization/policyDefinitions",
"apiVersion": "2021-06-01",
"name": "[variables('policyDefinitionName')]",
"properties": {
"policyType": "Custom",
"mode": "All",
"parameters": {},
"policyRule": {
"if": {
"not": {
"field": "location",
"in": "[parameters('allowedLocations')]"
}
},
"then": {
"effect": "deny"
}
}
}
},
"location_lock": {
"type": "Microsoft.Authorization/policyAssignments",
"apiVersion": "2022-06-01",
"name": "location-lock",
"properties": {
"scope": "[variables('mgScope')]",
"policyDefinitionId": "[managementGroupResourceId('Microsoft.Authorization/policyDefinitions', variables('policyDefinitionName'))]"
},
"dependsOn": [
"[format('Microsoft.Authorization/policyDefinitions/{0}', variables('policyDefinitionName'))]"
]
}
]
}
tenantResourceId
tenantResourceId(resourceType, resourceName1, [resourceName2], ...)
Kiracı düzeyinde dağıtılan bir kaynağın benzersiz tanımlayıcısını döndürür.
Bicep'te tenantResourceId işlevini kullanın.
Parametreler
Parametre | Zorunlu | Türü | Açıklama |
---|---|---|---|
resourceType | Yes | Dize | Kaynak sağlayıcısı ad alanı dahil olmak üzere kaynak türü. |
resourceName1 | Yes | Dize | Kaynağın adı. |
resourceName2 | Hayır | Dize | Gerekirse sonraki kaynak adı segmenti. |
Kaynak türü daha fazla segment içerdiğinde kaynak adlarını parametre olarak eklemeye devam edin.
Dönüş değeri
Tanımlayıcı aşağıdaki biçimde döndürülür:
/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}
Açıklamalar
Kiracıya dağıtılan bir kaynağın kaynak kimliğini almak için bu işlevi kullanırsınız. Döndürülen kimlik, kaynak grubu veya abonelik değerleri dahil edilmeyerek diğer kaynak kimliği işlevleri tarafından döndürülen değerlerden farklıdır.
tenantResourceId örneği
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.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"policyDefinitionID": {
"type": "string",
"defaultValue": "0a914e76-4921-4c19-b460-a2d36003525a",
"metadata": {
"description": "Specifies the ID of the policy definition or policy set definition being assigned."
}
},
"policyAssignmentName": {
"type": "string",
"defaultValue": "[guid(parameters('policyDefinitionID'), resourceGroup().name)]",
"metadata": {
"description": "Specifies the name of the policy assignment, can be used defined or an idempotent name as the defaultValue provides."
}
}
},
"resources": [
{
"type": "Microsoft.Authorization/policyAssignments",
"name": "[parameters('policyAssignmentName')]",
"apiVersion": "2022-06-01",
"properties": {
"scope": "[subscriptionResourceId('Microsoft.Resources/resourceGroups', resourceGroup().name)]",
"policyDefinitionId": "[tenantResourceId('Microsoft.Authorization/policyDefinitions', parameters('policyDefinitionID'))]"
}
}
]
}
Sonraki adımlar
- ARM şablonundaki bölümlerin açıklaması için bkz . ARM şablonlarının yapısını ve söz dizimini anlama.
- Birden çok şablonu birleştirmek için bkz . Azure kaynaklarını dağıtırken bağlantılı ve iç içe yerleştirilmiş şablonları kullanma.
- Kaynak türü oluştururken belirtilen sayıda yineleme yapmak için bkz . ARM şablonlarında kaynak yinelemesi.
- Oluşturduğunuz şablonun nasıl dağıtılacağına bakmak için bkz . ARM şablonları ve Azure PowerShell ile kaynakları dağıtma.