Delen via


Resourcefuncties voor Bicep

In dit artikel worden de Bicep-functies beschreven voor het ophalen van resourcewaarden.

Zie De functies Implementatiewaarde om waarden op te halen uit de huidige implementatie.

extensionResourceId

extensionResourceId(resourceId, resourceType, resourceName1, [resourceName2], ...)

Retourneert de resource-id voor een extensieresource. Een extensieresource is een resourcetype dat wordt toegepast op een andere resource om toe te voegen aan de mogelijkheden ervan.

Naamruimte: az.

De extensionResourceId functie is beschikbaar in Bicep-bestanden, maar meestal hebt u deze niet nodig. Gebruik in plaats daarvan de symbolische naam voor de resource en open de id eigenschap.

De basisindeling van de resource-id die door deze functie wordt geretourneerd, is:

{scope}/providers/{extensionResourceProviderNamespace}/{extensionResourceType}/{extensionResourceName}

Het bereiksegment varieert per resource die wordt uitgebreid.

Wanneer de extensieresource wordt toegepast op een resource, wordt de resource-id geretourneerd in de volgende indeling:

/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{baseResourceProviderNamespace}/{baseResourceType}/{baseResourceName}/providers/{extensionResourceProviderNamespace}/{extensionResourceType}/{extensionResourceName}

Wanneer de extensieresource wordt toegepast op een resourcegroep, is de volgende indeling:

/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{extensionResourceProviderNamespace}/{extensionResourceType}/{extensionResourceName}

Wanneer de extensieresource wordt toegepast op een abonnement, is de volgende indeling:

/subscriptions/{subscriptionId}/providers/{extensionResourceProviderNamespace}/{extensionResourceType}/{extensionResourceName}

Wanneer de extensieresource wordt toegepast op een beheergroep, is de volgende indeling:

/providers/Microsoft.Management/managementGroups/{managementGroupName}/providers/{extensionResourceProviderNamespace}/{extensionResourceType}/{extensionResourceName}

Een aangepaste beleidsdefinitie die is geïmplementeerd in een beheergroep, wordt geïmplementeerd als een extensieresource. Als u een beleid wilt maken en toewijzen, implementeert u het volgende Bicep-bestand in een beheergroep.

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

Ingebouwde beleidsdefinities zijn resources op tenantniveau. Zie tenantResourceId voor een voorbeeld van het implementeren van een ingebouwde beleidsdefinitie.

getSecret

keyVaultName.getSecret(secretName)

Retourneert een geheim uit een Azure Key Vault. Gebruik deze functie om een geheim door te geven aan een beveiligde tekenreeksparameter van een Bicep-module.

Notitie

az.getSecret(subscriptionId, resourceGroupName, keyVaultName, secretName, secretVersion) functie kan worden gebruikt in .bicepparam bestanden om sleutelkluisgeheimen op te halen. Zie getSecret voor meer informatie.

U kunt de getSecret functie alleen gebruiken vanuit de params sectie van een module. U kunt deze alleen gebruiken met een Microsoft.KeyVault/vaults resource.

module sql './sql.bicep' = {
  name: 'deploySQL'
  params: {
    adminPassword: keyVault.getSecret('vmAdminPassword')
  }
}

U krijgt een foutmelding als u deze functie probeert te gebruiken in een ander deel van het Bicep-bestand. U krijgt ook een foutmelding als u deze functie gebruikt met tekenreeksinterpolatie, zelfs als deze wordt gebruikt in de sectie params.

De functie kan alleen worden gebruikt met een moduleparameter met de @secure() decorator.

De sleutelkluis moet zijn enabledForTemplateDeployment ingesteld op true. De gebruiker die het Bicep-bestand implementeert, moet toegang hebben tot het geheim. Zie Azure Key Vault gebruiken om een veilige parameterwaarde door te geven tijdens de bicep-implementatie voor meer informatie.

Er is geen kwalificatie voor naamruimten nodig omdat de functie wordt gebruikt met een resourcetype.

Parameterwaarden

Kenmerk Vereist Typologie Beschrijving
geheimeNaam Ja tekenreeks De naam van het geheim dat is opgeslagen in een sleutelkluis.

Retourwaarde

De geheime waarde voor de geheime naam.

Opmerking

Het volgende Bicep-bestand wordt gebruikt als een module. Er is een adminPassword parameter gedefinieerd met de @secure() decorator.

param sqlServerName string
param adminLogin string

@secure()
param adminPassword string

resource sqlServer 'Microsoft.Sql/servers@2023-08-01-preview' = {
  ...
}

Het volgende Bicep-bestand gebruikt het voorgaande Bicep-bestand als een module. Het Bicep-bestand verwijst naar een bestaande sleutelkluis en roept de getSecret functie aan om het sleutelkluisgeheim op te halen en geeft vervolgens de waarde als parameter door aan de module.

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')
  }
}

lijst*

resourceName.list([apiVersion], [functionValues])

U kunt een lijstfunctie aanroepen voor elk resourcetype met een bewerking die begint met list. Sommige veelvoorkomende gebruiksrechten zijn list, listKeys, listKeyValueen listSecrets.

De syntaxis voor deze functie verschilt per naam van de lijstbewerking. De geretourneerde waarden variëren ook per bewerking. Bicep biedt momenteel geen ondersteuning voor voltooiingen en validatie voor list* functies.

Met Bicep CLI versie 0.4.X of hoger roept u de lijstfunctie aan met behulp van de toegangsoperator. Bijvoorbeeld: storageAccount.listKeys().

Er is geen kwalificatie voor naamruimten nodig omdat de functie wordt gebruikt met een resourcetype.

Parameterwaarden

Kenmerk Vereist Typologie Beschrijving
apiVersion Nee tekenreeks Als u deze parameter niet opgeeft, wordt de API-versie voor de resource gebruikt. Geef alleen een aangepaste API-versie op wanneer u de functie wilt uitvoeren met een specifieke versie. Gebruik de notatie jjjj-mm-dd.
functionValues Nee Voorwerp Een object met waarden voor de functie. Geef dit object alleen op voor functies die ondersteuning bieden voor het ontvangen van een object met parameterwaarden, zoals listAccountSas in een opslagaccount. In dit artikel wordt een voorbeeld weergegeven van het doorgeven van functiewaarden.

Geldig gebruik

De list functies kunnen worden gebruikt in de eigenschappen van een resourcedefinitie. Gebruik geen list functie die gevoelige informatie beschikbaar maakt in de uitvoersectie van een Bicep-bestand. Uitvoerwaarden worden opgeslagen in de implementatiegeschiedenis en kunnen worden opgehaald door een kwaadwillende gebruiker.

Wanneer u deze gebruikt met een iteratieve lus, kunt u de list functies input gebruiken omdat de expressie is toegewezen aan de resource-eigenschap. U kunt ze niet gebruiken omdat count het aantal moet worden bepaald voordat de list functie wordt omgezet.

Als u een list functie gebruikt in een resource die voorwaardelijk is geïmplementeerd, wordt de functie geëvalueerd, zelfs als de resource niet is geïmplementeerd. Er wordt een fout weergegeven als de list functie verwijst naar een resource die niet bestaat. Gebruik de voorwaardelijke expressie ?: operator om ervoor te zorgen dat de functie alleen wordt geëvalueerd wanneer de resource wordt geïmplementeerd.

Retourwaarde

Het geretourneerde object verschilt per lijstfunctie die u gebruikt. Het voor een opslagaccount retourneert bijvoorbeeld listKeys de volgende indeling:

{
  "keys": [
    {
      "keyName": "key1",
      "permissions": "Full",
      "value": "{value}"
    },
    {
      "keyName": "key2",
      "permissions": "Full",
      "value": "{value}"
    }
  ]
}

Andere list functies hebben verschillende retourindelingen. Als u de indeling van een functie wilt zien, neemt u deze op in de uitvoersectie, zoals wordt weergegeven in het bicep-voorbeeldbestand.

Lijstvoorbeeld

In het volgende voorbeeld wordt een opslagaccount geïmplementeerd en vervolgens dat opslagaccount aanroepen listKeys . De sleutel wordt gebruikt bij het instellen van een waarde voor implementatiescripts.

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

In het volgende voorbeeld ziet u een list functie die een parameter gebruikt. In dit geval is listAccountSasde functie . Geef een object door voor de verlooptijd. De verlooptijd moet in de toekomst zijn.

param accountSasProperties object {
  default: {
    signedServices: 'b'
    signedPermission: 'r'
    signedExpiry: '2020-08-20T11:00:00Z'
    signedResourceTypes: 's'
  }
}
...
sasToken: storageAccount.listAccountSas('2021-04-01', accountSasProperties).accountSasToken

Implementaties

De mogelijke toepassingen worden list* weergegeven in de volgende tabel.

Brontype Functienaam
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/Lente listTestKeys
Microsoft.Automatisering/automatiseringsAccounts listKeys
Microsoft.Batch/batchAccounts listkeys
Microsoft.BatchAI/workspaces/experiments/jobs listoutputfiles
Microsoft.BotService/botServices/kanalen listChannelWithKeys
Microsoft.Cache/redis listKeys
Microsoft.CognitiveServices/accounts listKeys
Microsoft.ContainerRegistry/registers listCredentials
Microsoft.ContainerRegistry/registers 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/beheerdeClusters listClusterAdminCredential
Microsoft.ContainerService/beheerdeClusters listClusterMonitoringUserCredential
Microsoft.ContainerService/beheerdeClusters listClusterUserCredential
Microsoft.ContainerService/managedClusters/accessProfiles listCredential
Microsoft.DataBox/vacatures listCredentials
Microsoft.DataFactory/datafactories/gateways listauthkeys
Microsoft.DataFactory/factory's/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.DomainRegistratie listDomainRecommendations
Microsoft.DomainRegistration/topLevelDomains listAgreements
Microsoft.EventGrid/domeinen listKeys
Microsoft.EventGrid/onderwerpen listKeys
Microsoft.EventHub/naamruimten/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/gebruikers lijst
Microsoft.LabServices/labs/virtualMachines lijst
Microsoft.Logic/integrationAccounts/agreements listContentCallbackUrl
Microsoft.Logic/integrationAccounts/assembly's listContentCallbackUrl
Microsoft.Logic/integrationAccounts listCallbackUrl
Microsoft.Logic/integrationAccounts listKeyVaultKeys
Microsoft.Logic/integrationAccounts/maps listContentCallbackUrl
Microsoft.Logic/integrationAccounts/partners listContentCallbackUrl
Microsoft.Logic/integrationAccounts/schema's listContentCallbackUrl
Microsoft.Logic/workflows listCallbackUrl
Microsoft.Logic/workflows listSwagger
Microsoft.Logic/workflows/runs/actions listExpressionTraces
Microsoft.Logic/workflows/runs/actions/herhalingen 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/werkruimten listKeys
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/Naamruimten/authorizationRules listkeys
Microsoft.NotificationHubs/Namespaces/NotificationHubs/authorizationRules listkeys
Microsoft.OperationalInsights/werkruimten lijst
Microsoft.OperationalInsights/werkruimten listKeys
Microsoft.PolicyInsights/herstelbewerkingen 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 (opslagaccounts) listAccountSas
Microsoft.Storage/storageAccounts (opslagaccounts) listkeys
Microsoft.Storage/storageAccounts (opslagaccounts) listServiceSas
Microsoft.StorSimple/managers/apparaten listFailoverSets
Microsoft.StorSimple/managers/apparaten 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 lijst
Microsoft.Web/sites/config lijst
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 lijst
Microsoft.Web/sites/slots/config lijst
microsoft.web/sites/slots/functions listsecrets

Als u wilt bepalen welke resourcetypen een lijstbewerking hebben, hebt u de volgende opties:

  • Bekijk de REST API-bewerkingen voor een resourceprovider en zoek naar lijstbewerkingen. Opslagaccounts hebben bijvoorbeeld de bewerking listKeys.

  • Gebruik de Cmdlet Get-AzProviderOperation PowerShell. In het volgende voorbeeld worden alle lijstbewerkingen voor opslagaccounts opgeslagen:

    Get-AzProviderOperation -OperationSearchString "Microsoft.Storage/*" | where {$_.Operation -like "*list*"} | FT Operation
    
  • Gebruik de volgende Azure CLI-opdracht om alleen de lijstbewerkingen te filteren:

    az provider operation show --namespace Microsoft.Storage --query "resourceTypes[?name=='storageAccounts'].operations[].name | [?contains(@, 'list')]"
    

managementGroupResourceId

managementGroupResourceId(resourceType, resourceName1, [resourceName2], ...)

Retourneert de unieke id voor een resource die is geïmplementeerd op het niveau van de beheergroep.

Naamruimte: az.

De managementGroupResourceId functie is beschikbaar in Bicep-bestanden, maar meestal hebt u deze niet nodig. Gebruik in plaats daarvan de symbolische naam voor de resource en open de id eigenschap.

De id wordt geretourneerd in de volgende indeling:

/providers/Microsoft.Management/managementGroups/{managementGroupName}/providers/{resourceType}/{resourceName}

Opmerkingen

U gebruikt deze functie om de resource-id op te halen voor resources die zijn geïmplementeerd in de beheergroep in plaats van een resourcegroep. De geretourneerde id verschilt van de waarde die wordt geretourneerd door de resourceId-functie door geen abonnements-id en een resourcegroepwaarde op te geven.

voorbeeld managementGroupResourceID

Met de volgende sjabloon wordt een beleidsdefinitie gemaakt en toegewezen. De functie gebruikt de managementGroupResourceId functie om de resource-id voor beleidsdefinitie op te halen.

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])

Bepaalt of een resourcetype zones voor een regio ondersteunt. Deze functie ondersteunt alleen zonegebonden resources. Zoneredundante services retourneren een lege matrix. Zie Azure-services die beschikbaarheidszones ondersteunen voor meer informatie.

Naamruimte: az.

Parameterwaarden

Kenmerk Vereist Typologie Beschrijving
aanbiederNaamruimte Ja tekenreeks De naamruimte van de resourceprovider voor het resourcetype om te controleren op zoneondersteuning.
hulpbrontype Ja tekenreeks Het resourcetype om te controleren op zoneondersteuning.
locatie Ja tekenreeks De regio om te controleren op zoneondersteuning.
numberOfZones Nee geheel getal Het aantal logische zones dat moet worden geretourneerd. De standaardwaarde is 1. Het getal moet een positief geheel getal tussen 1 en 3 zijn. Gebruik 1 voor resources met één zone. Voor resources met meerdere zones moet de waarde kleiner zijn dan of gelijk zijn aan het aantal ondersteunde zones.
afstand Nee geheel getal De verschuiving van de logische beginzone. De functie retourneert een fout als offset plus numberOfZones het aantal ondersteunde zones overschrijdt.

Retourwaarde

Een matrix met de ondersteunde zones. Wanneer u de standaardwaarden gebruikt voor offset en numberOfZones, retourneert een resourcetype en regio die zones ondersteunt de volgende matrix:

[
  "1"
]

Wanneer de numberOfZones parameter is ingesteld op 3, wordt het volgende geretourneerd:

[
  "1",
  "2",
  "3"
]

Wanneer het resourcetype of de resourceregio geen zones ondersteunt, wordt er een lege matrix geretourneerd.

[
]

Opmerkingen

Er zijn verschillende categorieën voor Azure Beschikbaarheidszones : zone-redundant en zone-redundant. De pickZones functie kan worden gebruikt om een beschikbaarheidszone voor een zonegebonden resource te retourneren. Voor zone-redundante services (ZRS) retourneert de functie een lege matrix. Zonegebonden resources hebben doorgaans een zones eigenschap op het hoogste niveau van de resourcedefinitie. Zie Azure-services die beschikbaarheidszones ondersteunen om de categorie van ondersteuning voor beschikbaarheidszones te bepalen.

Als u wilt bepalen of een bepaalde Azure-regio of -locatie beschikbaarheidszones ondersteunt, roept u de pickZones functie aan met een zonegebonden resourcetype, zoals Microsoft.Network/publicIPAddresses. Als het antwoord niet leeg is, ondersteunt de regio beschikbaarheidszones.

pickZones-voorbeeld

In het volgende Bicep-bestand ziet u drie resultaten voor het gebruik van de pickZones functie.

output supported array = pickZones('Microsoft.Compute', 'virtualMachines', 'westus2')
output notSupportedRegion array = pickZones('Microsoft.Compute', 'virtualMachines', 'westus')
output notSupportedType array = pickZones('Microsoft.Cdn', 'profiles', 'westus2')

De uitvoer van de voorgaande voorbeelden retourneert drie matrices.

Naam Typologie Weergegeven als
ondersteund matrix [ "1" ]
notSupportedRegion matrix []
notSupportedType matrix []

U kunt het antwoord van waaruit pickZones u kunt gebruiken om te bepalen of null moet worden opgegeven voor zones of om virtuele machines toe te wijzen aan verschillende zones.

aanbieders

De functie providers is afgeschaft in Bicep. We raden u niet meer aan om het te gebruiken. Als u deze functie hebt gebruikt om een API-versie voor de resourceprovider op te halen, raden we u aan een specifieke API-versie op te geven in uw Bicep-bestand. Als u een dynamisch geretourneerde API-versie gebruikt, kan uw sjabloon worden verbroken als de eigenschappen tussen versies veranderen.

De providerbewerking is nog steeds beschikbaar via de REST API. Het kan buiten een Bicep-bestand worden gebruikt om informatie over een resourceprovider op te halen.

Naamruimte: az.

referentie

reference(resourceName or resourceIdentifier, [apiVersion], ['Full'])

Retourneert een object dat de runtimestatus van een resource vertegenwoordigt. De uitvoer en het gedrag van de reference functie zijn sterk afhankelijk van de manier waarop elke resourceprovider (RP) de PUT- en GET-antwoorden implementeert.

Naamruimte: az.

De Bicep-bestanden bieden toegang tot de referentiefunctie, hoewel dit meestal niet nodig is. In plaats daarvan is het raadzaam om de symbolische naam van de resource te gebruiken. De verwijzingsfunctie kan alleen worden gebruikt binnen het properties object van een resource en kan niet worden gebruikt voor eigenschappen op het hoogste niveau, zoals name of location. Hetzelfde geldt doorgaans voor verwijzingen met behulp van de symbolische naam. Voor eigenschappen zoals name, is het echter mogelijk om een sjabloon te genereren zonder de verwijzingsfunctie te gebruiken. Er is voldoende informatie over de resourcenaam bekend om de naam rechtstreeks te verzenden. Dit wordt gecompileerde eigenschappen genoemd. Bicep-validatie kan elk onjuist gebruik van de symbolische naam identificeren.

In het volgende voorbeeld wordt een opslagaccount geïmplementeerd. De eerste twee uitvoer geeft u dezelfde resultaten.

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

Als u een eigenschap wilt ophalen van een bestaande resource die niet in de sjabloon is geïmplementeerd, gebruikt u het existing trefwoord:

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

Als u wilt verwijzen naar een resource die is genest in een bovenliggende resource, gebruikt u de geneste toegangsprovider (::). U gebruikt deze syntaxis alleen wanneer u toegang hebt tot de geneste resource van buiten de bovenliggende resource.

vNet1::subnet1.properties.addressPrefix

Als u probeert te verwijzen naar een resource die niet bestaat, krijgt u de NotFound fout en mislukt de implementatie.

bron-ID

resourceId([subscriptionId], [resourceGroupName], resourceType, resourceName1, [resourceName2], ...)

Retourneert de unieke id van een resource.

Naamruimte: az.

De resourceId functie is beschikbaar in Bicep-bestanden, maar meestal hebt u deze niet nodig. Gebruik in plaats daarvan de symbolische naam voor de resource en open de id eigenschap.

U gebruikt deze functie wanneer de resourcenaam niet eenduidig is of niet is ingericht in hetzelfde Bicep-bestand. De indeling van de geretourneerde id is afhankelijk van of de implementatie plaatsvindt binnen het bereik van een resourcegroep, abonnement, beheergroep of tenant.

Voorbeeld:

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

Gebruik het bestaande trefwoord om de resource-id op te halen voor een resource die niet is geïmplementeerd in het Bicep-bestand.

param storageAccountName string

resource storageAccount 'Microsoft.Storage/storageAccounts@2023-04-01' existing = {
  name: storageAccountName
}

output storageID string = storageAccount.id

Zie de resourceId-functie van de JSON-sjabloon voor meer informatie.

subscriptionResourceId

subscriptionResourceId([subscriptionId], resourceType, resourceName1, [resourceName2], ...)

Retourneert de unieke id voor een resource die is geïmplementeerd op abonnementsniveau.

Naamruimte: az.

De subscriptionResourceId functie is beschikbaar in Bicep-bestanden, maar meestal hebt u deze niet nodig. Gebruik in plaats daarvan de symbolische naam voor de resource en open de id eigenschap.

De id wordt geretourneerd in de volgende indeling:

/subscriptions/{subscriptionId}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}

Opmerkingen

U gebruikt deze functie om de resource-id op te halen voor resources die zijn geïmplementeerd in het abonnement in plaats van een resourcegroep. De geretourneerde id verschilt van de waarde die door de resourceId-functie wordt geretourneerd door het niet opnemen van een resourcegroepwaarde.

voorbeeld subscriptionResourceID

Het volgende Bicep-bestand wijst een ingebouwde rol toe. U kunt deze implementeren in een resourcegroep of abonnement. De functie gebruikt de subscriptionResourceId functie om de resource-id op te halen voor ingebouwde rollen.

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

Retourneert de unieke id voor een resource die is geïmplementeerd op tenantniveau.

Naamruimte: az.

De tenantResourceId functie is beschikbaar in Bicep-bestanden, maar meestal hebt u deze niet nodig. Gebruik in plaats daarvan de symbolische naam voor de resource en open de id eigenschap.

De id wordt geretourneerd in de volgende indeling:

/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}

Ingebouwde beleidsdefinities zijn resources op tenantniveau. Als u een beleidstoewijzing wilt implementeren die verwijst naar een ingebouwde beleidsdefinitie, gebruikt u de tenantResourceId functie.

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

toLogicalZone

toLogicalZone(subscriptionId, location, physicalZone)

Retourneert de logische beschikbaarheidszone (bijvoorbeeld 1, 2of 3) die overeenkomt met een fysieke beschikbaarheidszone voor een opgegeven abonnement in een bepaalde Azure-regio.

Naamruimte: az

Parameterwaarden

Kenmerk Vereist Typologie Beschrijving
abonnements-id Ja tekenreeks De id van het Azure-abonnement (bijvoorbeeld 12345678-1234-1234-1234-1234567890ab).
locatie Ja tekenreeks De Azure-regio die beschikbaarheidszones ondersteunt (bijvoorbeeld westus2).
physicalZone Ja tekenreeks De id van de fysieke beschikbaarheidszone (bijvoorbeeld een datacenterspecifieke id zoals westus2-az1).

Retourwaarde

Een tekenreeks die de logische beschikbaarheidszone vertegenwoordigt (bijvoorbeeld 1, 2of 3) die overeenkomt met de opgegeven fysieke zone in de opgegeven regio en het opgegeven abonnement. Als de fysieke zone ongeldig is of niet wordt ondersteund, wordt een lege tekenreeks ('') geretourneerd.

Opmerkingen

  • De toLogicalZone functie haalt de toewijzing van de logische zone op op basis van de zoneconfiguratie van het abonnement in de opgegeven regio.
  • Logische zones zijn gestandaardiseerde id's (bijvoorbeeld 1, 2) 3die worden gebruikt in resourceconfiguraties om consistente zonetoewijzingen in Azure-services te garanderen.
  • Fysieke zone-id's zijn regiospecifiek en kunnen per abonnement verschillen. Gebruik de toPhysicalZone functie om deze toewijzing om te keren.
  • De functie vereist dat de regio beschikbaarheidszones ondersteunt. Zie Azure-services die beschikbaarheidszones ondersteunen voor een lijst met ondersteunde regio's.
  • Als de fysieke zone niet bestaat of niet is toegewezen voor het abonnement, retourneert de functie een lege tekenreeks.
  • Deze functie is handig voor het afstemmen van fysieke zone-implementaties met logische zoneconfiguraties in sjablonen, met name voor scenario's voor meerdere abonnementen of scenario's met meerdere regio's.

Voorbeelden

In het volgende voorbeeld wordt de logische zone voor een fysieke zone in VS - west 2 opgehaald voor een specifiek abonnement:

param subscriptionId string = '12345678-1234-1234-1234-1234567890ab'
param physicalZone string = 'westus2-az1'

output logicalZone string = toLogicalZone(subscriptionId, 'westus2', physicalZone)

Verwachte uitvoer:

Naam Typologie Weergegeven als
logicalZone Snaar / Touwtje 1

In het volgende voorbeeld wordt gebruikgemaakt toLogicalZone van het configureren van een virtuele machine met de juiste logische zone:

param subscriptionId string = '12345678-1234-1234-1234-1234567890ab'
param physicalZone string = 'westus2-az1'
param location string = 'westus2'

var logicalZone = toLogicalZone(subscriptionId, location, physicalZone)

resource vm 'Microsoft.Compute/virtualMachines@2024-03-01' = {
  name: 'myVM'
  location: location
  zones: logicalZone != '' ? [logicalZone] : []
  properties: {
    // VM properties
  }
}

output logicalZone string = logicalZone

Verwachte uitvoer:

Naam Typologie Weergegeven als
logicalZone Snaar / Touwtje 1

toLogicalZones

toLogicalZones(subscriptionId, location, physicalZones)

Retourneert de logische beschikbaarheidszones (bijvoorbeeld 1, 2of 3) die overeenkomen met fysieke beschikbaarheidszones voor een opgegeven abonnement in een bepaalde Azure-regio. Als u één fysieke zone wilt converteren, gebruikt u de toLogicalZone functie.

Naamruimte: az

Parameterwaarden

Kenmerk Vereist Typologie Beschrijving
abonnements-id Ja tekenreeks De id van het Azure-abonnement (bijvoorbeeld 12345678-1234-1234-1234-1234567890ab).
locatie Ja tekenreeks De Azure-regio die beschikbaarheidszones ondersteunt (bijvoorbeeld westus2).
physicalZones Ja matrix Een matrix met namen van fysieke zones die moeten worden geconverteerd naar logische zones (bijvoorbeeld een datacenterspecifieke id, zoals westus2-az1, westus2-az2... ).

Retourwaarde

Een matrix met namen van logische zones die overeenkomen met de opgegeven fysieke zones (bijvoorbeeld 1, 2of 3). Als een fysieke zone ongeldig is of niet wordt ondersteund, wordt een lege tekenreeks ('') geretourneerd.

Opmerkingen

De toLogicalZones functie wijst namen van fysieke zones toe aan hun logische zone-equivalenten voor een opgegeven Azure-abonnement en -regio. Dit is handig voor het configureren of opvragen van resources op basis van logische zones binnen een Azure-regio. Voor de functie is een geldige abonnements-id, een ondersteunde Azure-locatie en een matrix met fysieke zonenamen vereist. Als een fysieke zone ongeldig is of niet beschikbaar is op de opgegeven locatie, kan de functie een lege tekenreeks voor die zone retourneren of een fout genereren, afhankelijk van de context.

Voorbeelden

In het volgende voorbeeld worden de logische zones opgehaald voor een lijst met fysieke zones in VS - west 2 voor een specifiek abonnement:

param subscriptionId string = '12345678-1234-1234-1234-1234567890ab'
param physicalZones array = ['westus2-az1', 'westus2-az2', 'westus2-az3']

output logicalZones array = toLogicalZones(subscriptionId, 'westus2', physicalZones)

Verwachte uitvoer:

Naam Typologie Weergegeven als
logicalZone matrix ["1","2","3"]

toPhysicalZone

toPhysicalZone(subscriptionId, location, logicalZone)

Retourneert de id van de fysieke beschikbaarheidszone (bijvoorbeeld een datacenterspecifieke id zoals westus2-az1) die overeenkomt met een logische beschikbaarheidszone voor een opgegeven abonnement in een bepaalde Azure-regio.

Naamruimte: az

Parameterwaarden

Kenmerk Vereist Typologie Beschrijving
abonnements-id Ja tekenreeks De id van het Azure-abonnement (bijvoorbeeld 12345678-1234-1234-1234-1234567890ab).
locatie Ja tekenreeks De Azure-regio die beschikbaarheidszones ondersteunt (bijvoorbeeld westus2).
logicalZone Ja tekenreeks De logische beschikbaarheidszone (bijvoorbeeld 1, 2of 3).

Retourwaarde

Een tekenreeks die de id van de fysieke beschikbaarheidszone (bijvoorbeeld westus2-az1) vertegenwoordigt die overeenkomt met de opgegeven logische zone in de opgegeven regio en het opgegeven abonnement. Als de logische zone ongeldig is of niet wordt ondersteund, wordt een lege tekenreeks ('') geretourneerd.

Opmerkingen

  • De toPhysicalZone functie haalt de fysieke zonetoewijzing op op basis van de zoneconfiguratie van het abonnement in de opgegeven regio.
  • Fysieke zones zijn datacenterspecifieke id's die kunnen variëren tussen abonnementen, terwijl logische zones (bijvoorbeeld 12, 3) zijn gestandaardiseerd voor resourceconfiguraties.
  • Gebruik de toLogicalZone functie om deze toewijzing om te keren, waarbij een fysieke zone wordt geconverteerd naar het bijbehorende logische equivalent.
  • De functie vereist dat de regio beschikbaarheidszones ondersteunt. Zie Azure-services die beschikbaarheidszones ondersteunen voor een lijst met ondersteunde regio's.
  • Als de logische zone niet bestaat of niet is toegewezen voor het abonnement, retourneert de functie een lege tekenreeks.
  • Deze functie is handig voor scenario's waarvoor fysieke zone-id's zijn vereist, zoals logboekregistratie, controle of uitlijning van zoneoverschrijdende abonnementen in implementaties met meerdere regio's.

Voorbeelden

In het volgende voorbeeld wordt de fysieke zone voor een logische zone in VS - west 2 opgehaald voor een specifiek abonnement:

param subscriptionId string = '12345678-1234-1234-1234-1234567890ab'
param logicalZone string = '1'

output physicalZone string = toPhysicalZone(subscriptionId, 'westus2', logicalZone)

Verwachte uitvoer (ervan uitgaande dat logische zone 1 wordt toegewezen aan westus2-az1):

Naam Typologie Weergegeven als
physicalZone Snaar / Touwtje westus2-az1

In het volgende voorbeeld wordt de toPhysicalZone fysieke zone vastgelegd voor een implementatie van een virtuele machine:

param subscriptionId string = '12345678-1234-1234-1234-1234567890ab'
param logicalZone string = '1'
param location string = 'westus2'

var physicalZone = toPhysicalZone(subscriptionId, location, logicalZone)

resource vm 'Microsoft.Compute/virtualMachines@2024-03-01' = {
  name: 'myVM'
  location: location
  zones: [logicalZone]
  properties: {
    // VM properties
  }
}

output physicalZone string = physicalZone

Verwachte uitvoer:

Naam Typologie Weergegeven als
physicalZone Snaar / Touwtje westus2-az1

toPhysicalZones

toPhysicalZones(subscriptionId, location, logicalZones)

Retourneert de id's van de fysieke beschikbaarheidszone (bijvoorbeeld een datacenterspecifieke id zoals westus2-az1) die overeenkomt met logische beschikbaarheidszones voor een opgegeven abonnement in een bepaalde Azure-regio. Als u één logische zone wilt converteren, gebruikt u de toPhysicalZone functie.

Naamruimte: az

Parameterwaarden

Kenmerk Vereist Typologie Beschrijving
abonnements-id Ja tekenreeks De id van het Azure-abonnement (bijvoorbeeld 12345678-1234-1234-1234-1234567890ab).
locatie Ja tekenreeks De Azure-regio die beschikbaarheidszones ondersteunt (bijvoorbeeld westus2).
logicalZone Ja Snaar[] De logische beschikbaarheidszones (bijvoorbeeld 1, 2of 3) die moeten worden geconverteerd naar fysieke zones.

Retourwaarde

Een matrix met namen van fysieke zones (bijvoorbeeld westus2-az1, westus2-az2 ) die overeenkomt met de opgegeven logische zones. Als een logische zone ongeldig is of niet wordt ondersteund, wordt een lege tekenreeks ('') geretourneerd.

Opmerkingen

De toPhysicalZones functie wijst namen van logische zones toe aan hun fysieke zone-equivalenten voor een opgegeven Azure-abonnement en -regio. Dit is handig voor het implementeren of configureren van resources in specifieke fysieke zones binnen een Azure-regio. De functie vereist een geldige abonnements-id, een ondersteunde Azure-locatie en een matrix met namen van logische zones. Als een logische zone ongeldig is of niet beschikbaar is op de opgegeven locatie, kan de functie een lege tekenreeks voor die zone retourneren of een fout genereren, afhankelijk van de context.

Voorbeelden

In het volgende voorbeeld worden de fysieke zones opgehaald voor een lijst met logische zones in VS - west 2 voor een specifiek abonnement:

param subscriptionId string = '12345678-1234-1234-1234-1234567890ab'
param logicalZones array = ['1', '2', '3']

output physicalZones array = toPhysicalZones(subscriptionId, 'westus2', logicalZones)

Verwachte uitvoer (ervan uitgaande dat logische zone 1 wordt toegewezen aan westus2-az1, logische zone 1 wordt toegewezen aan westus2-az1en logische zone 3 wordt toegewezen aan westus2-az3):

Naam Typologie Weergegeven als
physicalZone matrix ["westus2-az1","westus2-az2","westus2-az3"]

Volgende stappen