Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
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 OperationGebruik 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
toLogicalZonefunctie 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
toPhysicalZonefunctie 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
toPhysicalZonefunctie 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
toLogicalZonefunctie 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
- Zie De functies Implementatiewaarde om waarden op te halen uit de huidige implementatie.
- Zie Iteratieve lussen in Bicep om een opgegeven aantal keren te herhalen wanneer u een type resource maakt.