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.
Parameters
Parameter | Vereist | Type | Description |
---|---|---|---|
secretName | 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
, listKeyValue
en 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.
Parameters
Parameter | Vereist | Type | Description |
---|---|---|---|
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 | object | 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 listAccountSas
de 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/openid Verbinding maken 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/experiments/jobs | listoutputfiles |
Microsoft.BotService/botServices/channels | 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/managedClusters | listCluster Beheer Credential |
Microsoft.ContainerService/managedClusters | listClusterMonitoringUserCredential |
Microsoft.ContainerService/managedClusters | listClusterUserCredential |
Microsoft.ContainerService/managedClusters/accessProfiles | listCredential |
Microsoft.DataBox/jobs | listCredentials |
Microsoft.DataFactory/datafactories/gateways | listauthkeys |
Microsoft.DataFactory/factory's/integrationruntimes | listauthkeys |
Microsoft.DataLakeAnalytics/accounts/storageAccounts/Containers | listSasTokens |
Microsoft.DataShare/accounts/shares | listSynchronizations |
Microsoft.DataShare/accounts/shareSubscriptions | listSourceShareSynchronization Instellingen |
Microsoft.DataShare/accounts/shareSubscriptions | listSynchronizationDetails |
Microsoft.DataShare/accounts/shareSubscriptions | listSynchronizations |
Microsoft.Devices/iotHubs | listkeys |
Microsoft.Devices/iotHubs/iotHubKeys | listkeys |
Microsoft.Devices/provisioningServices/keys | listkeys |
Microsoft.Devices/provisioningServices | listkeys |
Microsoft.DevTestLab/labs | ListVhds |
Microsoft.DevTestLab/labs/schedules | ListApplicable |
Microsoft.DevTestLab/labs/users/serviceFabrics | ListApplicableSchedules |
Microsoft.DevTestLab/labs/virtualMachines | ListApplicableSchedules |
Microsoft.DocumentDB/databaseAccounts | listKeys |
Microsoft.DocumentDB/databaseAccounts/notebookWorkspaces | list Verbinding maken ionInfo |
Microsoft.DomainRegistration | listDomain Aanbevelingen |
Microsoft.DomainRegistration/topLevelDomains | listAgreements |
Microsoft.EventGrid/domains | listKeys |
Microsoft.EventGrid/topics | 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. Kaarten/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/workspaces | lijst |
Microsoft.OperationalInsights/workspaces | listKeys |
Microsoft.PolicyInsights/herstelbewerkingen | listDeployments |
Microsoft.RedHatOpenShift/openShiftClusters | listCredentials |
Microsoft.Relay/namespaces/disasterRecoveryConfigs/authorizationRules | listkeys |
Microsoft.Search/searchServices | list Beheer Keys |
Microsoft.Search/searchServices | listQueryKeys |
Microsoft.SignalRService/SignalR | listkeys |
Microsoft.Storage/storageAccounts | listAccountSas |
Microsoft.Storage/storageAccounts | listkeys |
Microsoft.Storage/storageAccounts | 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 ondersteuning bieden voor Beschikbaarheidszones voor meer informatie.
Naamruimte: az.
Parameters
Parameter | Vereist | Type | Description |
---|---|---|---|
providerNamespace | Ja | tekenreeks | De naamruimte van de resourceprovider voor het resourcetype om te controleren op zoneondersteuning. |
resourceType | 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. |
offset | 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 ondersteuning bieden voor Beschikbaarheidszones 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.
Name | Type | 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.
providers
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.
Verwijzing
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.
resourceId
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)
}
}
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.