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@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
  }
}

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 trueayarlanmış 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@2022-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-02-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 listbaşlayan bir işlemle herhangi bir kaynak türü için bir liste işlevi çağırabilirsiniz. Bazı yaygın kullanımlar , listKeys, listKeyValueve 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@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
    }
    ...
  }
}

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 listBuildSourceUploadUrl
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')]"
    

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 numberOfZonesiç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/publicIPAddressesiş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.

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 locationgibi 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@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

Ş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@2022-09-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@2022-09-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@2022-09-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
  }
}

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@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], ...)

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@2022-06-01' = {
  name: policyAssignmentName
  properties: {
    scope: subscriptionResourceId('Microsoft.Resources/resourceGroups', resourceGroup().name)
    policyDefinitionId: tenantResourceId('Microsoft.Authorization/policyDefinitions', policyDefinitionID)
  }
}

Sonraki adımlar