Resursfunktioner för Bicep
Den här artikeln beskriver Bicep-funktionerna för att hämta resursvärden.
Information om hur du hämtar värden från den aktuella distributionen finns i Funktioner för distributionsvärde.
extensionResourceId
extensionResourceId(resourceId, resourceType, resourceName1, [resourceName2], ...)
Returnerar resurs-ID för en tilläggsresurs. En tilläggsresurs är en resurstyp som tillämpas på en annan resurs för att lägga till dess funktioner.
Namnområde: az.
Funktionen extensionResourceId
är tillgänglig i Bicep-filer, men vanligtvis behöver du den inte. Använd i stället det symboliska namnet för resursen och få åtkomst till id
egenskapen.
Det grundläggande formatet för resurs-ID:t som returneras av den här funktionen är:
{scope}/providers/{extensionResourceProviderNamespace}/{extensionResourceType}/{extensionResourceName}
Omfångssegmentet varierar beroende på vilken resurs som utökas.
När tilläggsresursen tillämpas på en resurs returneras resurs-ID:t i följande format:
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{baseResourceProviderNamespace}/{baseResourceType}/{baseResourceName}/providers/{extensionResourceProviderNamespace}/{extensionResourceType}/{extensionResourceName}
När tilläggsresursen tillämpas på en resursgrupp är formatet:
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{extensionResourceProviderNamespace}/{extensionResourceType}/{extensionResourceName}
När tilläggsresursen tillämpas på en prenumeration är formatet:
/subscriptions/{subscriptionId}/providers/{extensionResourceProviderNamespace}/{extensionResourceType}/{extensionResourceName}
När tilläggsresursen tillämpas på en hanteringsgrupp är formatet:
/providers/Microsoft.Management/managementGroups/{managementGroupName}/providers/{extensionResourceProviderNamespace}/{extensionResourceType}/{extensionResourceName}
En anpassad principdefinition som distribueras till en hanteringsgrupp implementeras som en tilläggsresurs. Om du vill skapa och tilldela en princip distribuerar du följande Bicep-fil till en hanteringsgrupp.
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
}
}
Inbyggda principdefinitioner är resurser på klientnivå. Ett exempel på hur du distribuerar en inbyggd principdefinition finns i tenantResourceId.
getSecret
keyVaultName.getSecret(secretName)
Returnerar en hemlighet från ett Azure Key Vault. Använd den här funktionen för att skicka en hemlighet till en säker strängparameter för en Bicep-modul.
Kommentar
az.getSecret(subscriptionId, resourceGroupName, keyVaultName, secretName, secretVersion)
funktionen kan användas i .bicepparam
filer för att hämta key vault-hemligheter. Mer information finns i getSecret.
Du kan bara använda getSecret
funktionen inifrån avsnittet i params
en modul. Du kan bara använda den med en Microsoft.KeyVault/vaults
resurs.
module sql './sql.bicep' = {
name: 'deploySQL'
params: {
adminPassword: keyVault.getSecret('vmAdminPassword')
}
}
Du får ett fel om du försöker använda den här funktionen i någon annan del av Bicep-filen. Du får också ett fel om du använder den här funktionen med stränginterpolation, även när den används i params-avsnittet.
Funktionen kan endast användas med en modulparameter som har dekoratören @secure()
.
Nyckelvalvet måste ha enabledForTemplateDeployment
angetts till true
. Användaren som distribuerar Bicep-filen måste ha åtkomst till hemligheten. Mer information finns i Använda Azure Key Vault för att skicka säkert parametervärde under Bicep-distributionen.
En namnområdeskvalificerare behövs inte eftersom funktionen används med en resurstyp.
Parametrar
Parameter | Obligatoriskt | Type | Beskrivning |
---|---|---|---|
secretName | Ja | sträng | Namnet på hemligheten som lagras i ett nyckelvalv. |
Returvärde
Det hemliga värdet för det hemliga namnet.
Exempel
Följande Bicep-fil används som en modul. Den har en adminPassword
parameter som definierats med dekoratören @secure()
.
param sqlServerName string
param adminLogin string
@secure()
param adminPassword string
resource sqlServer 'Microsoft.Sql/servers@2023-08-01-preview' = {
...
}
Följande Bicep-fil använder den föregående Bicep-filen som en modul. Bicep-filen refererar till ett befintligt nyckelvalv och anropar getSecret
funktionen för att hämta nyckelvalvshemligheten och skickar sedan värdet som en parameter till modulen.
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')
}
}
Lista*
resourceName.list([apiVersion], [functionValues])
Du kan anropa en listfunktion för valfri resurstyp med en åtgärd som börjar med list
. Några vanliga användningar är list
, listKeys
, listKeyValue
och listSecrets
.
Syntaxen för den här funktionen varierar beroende på namnet på liståtgärden. De returnerade värdena varierar också beroende på åtgärd. Bicep stöder för närvarande inte slutföranden och validering för list*
funktioner.
Med Bicep CLI version 0.4.X eller senare anropar du listfunktionen med hjälp av accessoroperatorn. Exempel: storageAccount.listKeys()
En namnområdeskvalificerare behövs inte eftersom funktionen används med en resurstyp.
Parametrar
Parameter | Obligatoriskt | Type | Beskrivning |
---|---|---|---|
apiVersion | Nej | sträng | Om du inte anger den här parametern används API-versionen för resursen. Ange endast en anpassad API-version när du behöver funktionen för att köras med en viss version. Använd formatet yyyy-mm-dd. |
functionValues | Nej | objekt | Ett objekt som har värden för funktionen. Ange endast det här objektet för funktioner som stöder mottagande av ett objekt med parametervärden, till exempel listAccountSas på ett lagringskonto. Ett exempel på att skicka funktionsvärden visas i den här artikeln. |
Giltiga användningsområden
Funktionerna list
kan användas i egenskaperna för en resursdefinition. Använd inte en list
funktion som exponerar känslig information i utdataavsnittet i en Bicep-fil. Utdatavärden lagras i distributionshistoriken och kan hämtas av en obehörig användare.
När det används med en iterativ loop kan du använda list
funktionerna för input
eftersom uttrycket har tilldelats resursegenskapen. Du kan inte använda dem med count
eftersom antalet måste fastställas innan list
funktionen har lösts.
Om du använder en list
funktion i en resurs som är villkorligt distribuerad utvärderas funktionen även om resursen inte distribueras. Du får ett fel om list
funktionen refererar till en resurs som inte finns. Använd villkorsuttrycket ?: operator för att se till att funktionen endast utvärderas när resursen distribueras.
Returvärde
Det returnerade objektet varierar beroende på vilken listfunktion du använder. Till exempel listKeys
returnerar för ett lagringskonto följande format:
{
"keys": [
{
"keyName": "key1",
"permissions": "Full",
"value": "{value}"
},
{
"keyName": "key2",
"permissions": "Full",
"value": "{value}"
}
]
}
Andra list
funktioner har olika returformat. Om du vill se formatet för en funktion tar du med den i avsnittet utdata som du ser i exemplet på Bicep-filen.
Listexempel
I följande exempel distribueras ett lagringskonto och anropas listKeys
sedan på lagringskontot. Nyckeln används när du anger ett värde för distributionsskript.
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
}
...
}
}
I nästa exempel visas en list
funktion som tar en parameter. I det här fallet är listAccountSas
funktionen . Skicka ett objekt för förfallotiden. Förfallotiden måste vara i framtiden.
param accountSasProperties object {
default: {
signedServices: 'b'
signedPermission: 'r'
signedExpiry: '2020-08-20T11:00:00Z'
signedResourceTypes: 's'
}
}
...
sasToken: storageAccount.listAccountSas('2021-04-01', accountSasProperties).accountSasToken
Implementeringar
Möjliga användningsområden för list*
visas i följande tabell.
Resurstyp | Funktionsnamn |
---|---|
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 Anslut 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/workspaces/experiment/jobs | listoutputfiles |
Microsoft.BotService/botServices/channels | listChannelWithKeys |
Microsoft.Cache/redis | listKeys |
Microsoft.CognitiveServices/accounts | listKeys |
Microsoft.ContainerRegistry/registries | listCredentials |
Microsoft.ContainerRegistry/registries | listUsages |
Microsoft.ContainerRegistry/registries/agentpools | listQueueStatus |
Microsoft.ContainerRegistry/registries/buildTasks | listSourceRepositoryProperties |
Microsoft.ContainerRegistry/registries/buildTasks/steps | listBuildArguments |
Microsoft.ContainerRegistry/registries/taskruns | listDetails |
Microsoft.ContainerRegistry/registries/webhooks | listEvents |
Microsoft.ContainerRegistry/registries/runs | listLogSasUrl |
Microsoft.ContainerRegistry/registries/tasks | listDetails |
Microsoft.ContainerService/managedClusters | listClusterAdminCredential |
Microsoft.ContainerService/managedClusters | listClusterMonitoringUserCredential |
Microsoft.ContainerService/managedClusters | listClusterUserCredential |
Microsoft.ContainerService/managedClusters/accessProfiles | listCredential |
Microsoft.DataBox/jobs | listCredentials |
Microsoft.DataFactory/datafactories/gateways | visa listauthkeys |
Microsoft.DataFactory/fabriker/integrationruntimes | visa listauthkeys |
Microsoft.DataLakeAnalytics/accounts/storageAccounts/Containers | listSasTokens |
Microsoft.DataShare/accounts/shares | listSynkroniseringar |
Microsoft.DataShare/accounts/shareSubscriptions | listSourceShareSynchronization Inställningar |
Microsoft.DataShare/accounts/shareSubscriptions | listSynchronizationDetails |
Microsoft.DataShare/accounts/shareSubscriptions | listSynkroniseringar |
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 Anslut ionInfo |
Microsoft.DomainRegistration | listDomain Rekommendationer |
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 | lista |
Microsoft.LabServices/labs/virtualMachines | lista |
Microsoft.Logic/integrationAccounts/agreements | listContentCallbackUrl |
Microsoft.Logic/integrationAccounts/sammansättningar | listContentCallbackUrl |
Microsoft.Logic/integrationAccounts | listCallbackUrl |
Microsoft.Logic/integrationAccounts | listKeyVaultKeys |
Microsoft.Logic/integrationAccounts/maps | listContentCallbackUrl |
Microsoft.Logic/integrationAccounts/partners | listContentCallbackUrl |
Microsoft.Logic/integrationAccounts/schemas | listContentCallbackUrl |
Microsoft.Logic/workflows | listCallbackUrl |
Microsoft.Logic/workflows | listSwagger |
Microsoft.Logic/workflows/runs/actions | listExpressionTraces |
Microsoft.Logic/workflows/runs/actions/repetitions | listExpressionTraces |
Microsoft.Logic/workflows/triggers | listCallbackUrl |
Microsoft.Logic/workflows/versions/triggers | listCallbackUrl |
Microsoft.MachineLearning/webServices | listkeys |
Microsoft.MachineLearning/Workspaces | listworkspacekeys |
Microsoft.MachineLearningServices/workspaces/computes | listKeys |
Microsoft.MachineLearningServices/workspaces/computes | listNoder |
Microsoft.MachineLearningServices/arbetsytor | listKeys |
Microsoft. Kartor/konton | 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 | lista |
Microsoft.OperationalInsights/workspaces | listKeys |
Microsoft.PolicyInsights/remediations | listDeployments |
Microsoft.RedHatOpenShift/openShiftClusters | listCredentials |
Microsoft.Relay/namespaces/disasterRecoveryConfigs/authorizationRules | listkeys |
Microsoft.Search/searchServices | listAdminKeys |
Microsoft.Search/searchServices | listQueryKeys |
Microsoft.SignalRService/SignalR | listkeys |
Microsoft.Storage/storageAccounts | listAccountSas |
Microsoft.Storage/storageAccounts | listkeys |
Microsoft.Storage/storageAccounts | listServiceSas |
Microsoft.StorSimple/managers/enheter | listFailoverSets |
Microsoft.StorSimple/managers/enheter | 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 | lista |
Microsoft.Web/sites/config | lista |
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 | lista |
Microsoft.Web/sites/slots/config | lista |
microsoft.web/sites/slots/functions | listsecrets |
För att avgöra vilka resurstyper som har en liståtgärd har du följande alternativ:
Visa REST API-åtgärderna för en resursprovider och leta efter liståtgärder. Lagringskonton har till exempel åtgärden listKeys.
Använd Cmdleten Get-AzProviderOperation PowerShell. I följande exempel hämtas alla liståtgärder för lagringskonton:
Get-AzProviderOperation -OperationSearchString "Microsoft.Storage/*" | where {$_.Operation -like "*list*"} | FT Operation
Använd följande Azure CLI-kommando för att endast filtrera liståtgärderna:
az provider operation show --namespace Microsoft.Storage --query "resourceTypes[?name=='storageAccounts'].operations[].name | [?contains(@, 'list')]"
managementGroupResourceId
managementGroupResourceId(resourceType, resourceName1, [resourceName2], ...)
Returnerar den unika identifieraren för en resurs som distribueras på hanteringsgruppsnivå.
Namnområde: az.
Funktionen managementGroupResourceId
är tillgänglig i Bicep-filer, men vanligtvis behöver du den inte. Använd i stället det symboliska namnet för resursen och få åtkomst till id
egenskapen.
Identifieraren returneras i följande format:
/providers/Microsoft.Management/managementGroups/{managementGroupName}/providers/{resourceType}/{resourceName}
Kommentarer
Du använder den här funktionen för att hämta resurs-ID för resurser som distribueras till hanteringsgruppen i stället för en resursgrupp. Det returnerade ID:t skiljer sig från värdet som returneras av funktionen resourceId genom att inte inkludera ett prenumerations-ID och ett resursgruppsvärde.
managementGroupResourceID-exempel
Följande mall skapar och tilldelar en principdefinition. Den använder managementGroupResourceId
funktionen för att hämta resurs-ID:t för principdefinitionen.
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])
Avgör om en resurstyp stöder zoner för en region. Den här funktionen stöder endast zonindeliga resurser. Zonredundanta tjänster returnerar en tom matris. Mer information finns i Azure-tjänster som stöder Tillgänglighetszoner.
Namnområde: az.
Parametrar
Parameter | Obligatoriskt | Type | Beskrivning |
---|---|---|---|
providerNamespace | Ja | sträng | Resursproviderns namnområde för resurstypen för att söka efter zonstöd. |
resourceType | Ja | sträng | Resurstypen för att söka efter zonstöd. |
plats | Ja | sträng | Regionen för att söka efter zonstöd. |
numberOfZones | Nej | integer | Antalet logiska zoner som ska returneras. Standardvärdet är 1. Talet måste vara ett positivt heltal från 1 till 3. Använd 1 för resurser med en zon. För resurser med flera zoner måste värdet vara mindre än eller lika med antalet zoner som stöds. |
förskjutning | Nej | integer | Förskjutningen från den logiska startzonen. Funktionen returnerar ett fel om förskjutningen plus numberOfZones överskrider antalet zoner som stöds. |
Returvärde
En matris med de zoner som stöds. När du använder standardvärdena för offset och numberOfZones
returnerar en resurstyp och region som stöder zoner följande matris:
[
"1"
]
När parametern numberOfZones
är inställd på 3 returneras:
[
"1",
"2",
"3"
]
När resurstypen eller regionen inte stöder zoner returneras en tom matris.
[
]
Kommentarer
Det finns olika kategorier för Azure Tillgänglighetszoner – zonindelad och zonredundant. Funktionen pickZones
kan användas för att returnera en tillgänglighetszon för en zonindelad resurs. För zonredundanta tjänster (ZRS) returnerar funktionen en tom matris. Zonindeliga resurser har vanligtvis en zones
egenskap på den översta nivån i resursdefinitionen. Information om vilken kategori av stöd som finns för tillgänglighetszoner finns i Azure-tjänster som stöder Tillgänglighetszoner.
För att avgöra om en viss Azure-region eller plats stöder tillgänglighetszoner anropar pickZones
du funktionen med en zonindelad resurstyp, till exempel Microsoft.Network/publicIPAddresses
. Om svaret inte är tomt stöder regionen tillgänglighetszoner.
pickZones-exempel
Följande Bicep-fil visar tre resultat för att använda pickZones
funktionen.
output supported array = pickZones('Microsoft.Compute', 'virtualMachines', 'westus2')
output notSupportedRegion array = pickZones('Microsoft.Compute', 'virtualMachines', 'westus')
output notSupportedType array = pickZones('Microsoft.Cdn', 'profiles', 'westus2')
Utdata från föregående exempel returnerar tre matriser.
Namn | Typ | Värde |
---|---|---|
stöds | matris | [ "1" ] |
notSupportedRegion | matris | [] |
notSupportedType | matris | [] |
Du kan använda svaret från pickZones
för att avgöra om du vill ange null för zoner eller tilldela virtuella datorer till olika zoner.
Leverantörer
Funktionen providers har blivit inaktuell i Bicep. Vi rekommenderar inte längre att du använder den. Om du använde den här funktionen för att hämta en API-version för resursprovidern rekommenderar vi att du anger en specifik API-version i Bicep-filen. Om du använder en dynamiskt returnerad API-version kan mallen brytas om egenskaperna ändras mellan versionerna.
Provideråtgärden är fortfarande tillgänglig via REST-API:et. Den kan användas utanför en Bicep-fil för att hämta information om en resursprovider.
Namnområde: az.
Referens
reference(resourceName or resourceIdentifier, [apiVersion], ['Full'])
Returnerar ett objekt som representerar en resurss körningstillstånd. Utdata och beteende för reference
funktionen är starkt beroende av hur varje resursprovider (RP) implementerar sina PUT- och GET-svar.
Namnområde: az.
Bicep-filerna ger åtkomst till referensfunktionen, men det är vanligtvis onödigt. I stället rekommenderar vi att du använder det symboliska namnet på resursen. Referensfunktionen kan bara användas i properties
objektet för en resurs och kan inte användas för egenskaper på den översta nivån som name
eller location
. Samma sak gäller vanligtvis för referenser som använder det symboliska namnet. För egenskaper som name
, är det dock möjligt att generera en mall utan att använda referensfunktionen. Tillräckligt med information om resursnamnet är känt för att generera namnet direkt. Det kallas kompileringstidsegenskaper. Bicep-validering kan identifiera felaktig användning av det symboliska namnet.
I följande exempel distribueras ett lagringskonto. De två första utdata ger samma resultat.
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
Om du vill hämta en egenskap från en befintlig resurs som inte har distribuerats i mallen använder du nyckelordet existing
:
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
Om du vill referera till en resurs som är kapslad i en överordnad resurs använder du den kapslade accessorn (::
). Du använder bara den här syntaxen när du kommer åt den kapslade resursen utanför den överordnade resursen.
vNet1::subnet1.properties.addressPrefix
Om du försöker referera till en resurs som inte finns får du felet och distributionen NotFound
misslyckas.
resourceId
resourceId([subscriptionId], [resourceGroupName], resourceType, resourceName1, [resourceName2], ...)
Returnerar den unika identifieraren för en resurs.
Namnområde: az.
Funktionen resourceId
är tillgänglig i Bicep-filer, men vanligtvis behöver du den inte. Använd i stället det symboliska namnet för resursen och få åtkomst till id
egenskapen.
Du använder den här funktionen när resursnamnet är tvetydigt eller inte har etablerats i samma Bicep-fil. Formatet för den returnerade identifieraren varierar beroende på om distributionen sker i omfånget för en resursgrupp, prenumeration, hanteringsgrupp eller klientorganisation.
Till exempel:
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
Om du vill hämta resurs-ID:t för en resurs som inte har distribuerats i Bicep-filen använder du det befintliga nyckelordet.
param storageAccountName string
resource storageAccount 'Microsoft.Storage/storageAccounts@2023-04-01' existing = {
name: storageAccountName
}
output storageID string = storageAccount.id
Mer information finns i funktionen resourceId för JSON-mall.
subscriptionResourceId
subscriptionResourceId([subscriptionId], resourceType, resourceName1, [resourceName2], ...)
Returnerar den unika identifieraren för en resurs som distribueras på prenumerationsnivå.
Namnområde: az.
Funktionen subscriptionResourceId
är tillgänglig i Bicep-filer, men vanligtvis behöver du den inte. Använd i stället det symboliska namnet för resursen och få åtkomst till id
egenskapen.
Identifieraren returneras i följande format:
/subscriptions/{subscriptionId}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}
Kommentarer
Du använder den här funktionen för att hämta resurs-ID för resurser som distribueras till prenumerationen i stället för en resursgrupp. Det returnerade ID:t skiljer sig från det värde som returneras av funktionen resourceId genom att inte inkludera ett resursgruppsvärde.
subscriptionResourceID-exempel
Följande Bicep-fil tilldelar en inbyggd roll. Du kan distribuera den till antingen en resursgrupp eller prenumeration. Den använder subscriptionResourceId
funktionen för att hämta resurs-ID:t för inbyggda roller.
@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], ...)
Returnerar den unika identifieraren för en resurs som distribuerats på klientorganisationsnivå.
Namnområde: az.
Funktionen tenantResourceId
är tillgänglig i Bicep-filer, men vanligtvis behöver du den inte. Använd i stället det symboliska namnet för resursen och få åtkomst till id
egenskapen.
Identifieraren returneras i följande format:
/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}
Inbyggda principdefinitioner är resurser på klientnivå. Om du vill distribuera en principtilldelning som refererar till en inbyggd principdefinition använder du tenantResourceId
funktionen.
@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)
}
}
Nästa steg
- Information om hur du hämtar värden från den aktuella distributionen finns i Funktioner för distributionsvärde.
- Information om hur du itererar ett angivet antal gånger när du skapar en typ av resurs finns i Iterativa loopar i Bicep.