Resourcefuncties voor ARM-sjablonen
Resource Manager biedt de volgende functies voor het ophalen van resourcewaarden in uw ARM-sjabloon (Azure Resource Manager):
- extensionResourceId
- Lijst*
- pickZones
- providers (afgeschaft)
- Verwijzing
- resourceId
- subscriptionResourceId
- managementGroupResourceId
- tenantResourceId
Zie Functies voor implementatiewaarden om waarden op te halen uit parameters, variabelen of de huidige implementatie.
Zie Bereikfuncties om waarden voor het implementatiebereik op te halen.
Tip
We raden Bicep aan omdat het dezelfde mogelijkheden biedt als ARM-sjablonen en de syntaxis eenvoudiger te gebruiken is. Zie resourcefuncties voor meer informatie.
extensionResourceId
extensionResourceId(baseResourceId, resourceType, resourceName1, [resourceName2], ...)
Retourneert de resource-id voor een extensieresource. Een extensieresource is een resourcetype dat wordt toegepast op een andere resource om aan de mogelijkheden toe te voegen.
Gebruik in Bicep de functie extensionResourceId .
Parameters
Parameter | Vereist | Type | Beschrijving |
---|---|---|---|
baseResourceId | Ja | tekenreeks | De resource-id voor de resource waarop de extensieresource wordt toegepast. |
resourceType | Ja | tekenreeks | Type van de extensieresource, inclusief de naamruimte van de resourceprovider. |
resourceName1 | Ja | tekenreeks | Naam van de extensieresource. |
resourceName2 | No | tekenreeks | Volgende resourcenaamsegment, indien nodig. |
Ga door met het toevoegen van resourcenamen als parameters wanneer het resourcetype meer segmenten bevat.
Retourwaarde
De basisindeling van de resource-id die door deze functie wordt geretourneerd, is:
{scope}/providers/{extensionResourceProviderNamespace}/{extensionResourceType}/{extensionResourceName}
Het bereiksegment verschilt per basisresource die wordt uitgebreid. De id voor een abonnement heeft bijvoorbeeld andere segmenten dan de id voor een resourcegroep.
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 geretourneerde indeling:
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{extensionResourceProviderNamespace}/{extensionResourceType}/{extensionResourceName}
Een voorbeeld van het gebruik van deze functie met een resourcegroep wordt weergegeven in de volgende sectie.
Wanneer de extensieresource wordt toegepast op een abonnement, is de geretourneerde indeling:
/subscriptions/{subscriptionId}/providers/{extensionResourceProviderNamespace}/{extensionResourceType}/{extensionResourceName}
Wanneer de extensieresource wordt toegepast op een beheergroep, is de geretourneerde indeling:
/providers/Microsoft.Management/managementGroups/{managementGroupName}/providers/{extensionResourceProviderNamespace}/{extensionResourceType}/{extensionResourceName}
Een voorbeeld van het gebruik van deze functie met een beheergroep wordt weergegeven in de volgende sectie.
extensionResourceId-voorbeeld
In het volgende voorbeeld wordt de resource-id voor een resourcegroepvergrendeling geretourneerd.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"lockName": {
"type": "string"
}
},
"variables": {},
"resources": [],
"outputs": {
"lockResourceId": {
"type": "string",
"value": "[extensionResourceId(resourceGroup().Id , 'Microsoft.Authorization/locks', parameters('lockName'))]"
}
}
}
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 de volgende sjabloon in een beheergroep.
{
"$schema": "https://schema.management.azure.com/schemas/2019-08-01/managementGroupDeploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"metadata": {
"_generator": {
"name": "bicep",
"version": "0.5.6.12127",
"templateHash": "1532257987028557958"
}
},
"parameters": {
"targetMG": {
"type": "string",
"metadata": {
"description": "Target Management Group"
}
},
"allowedLocations": {
"type": "array",
"defaultValue": [
"australiaeast",
"australiasoutheast",
"australiacentral"
],
"metadata": {
"description": "An array of the allowed locations, all other locations will be denied by the created policy."
}
}
},
"variables": {
"mgScope": "[tenantResourceId('Microsoft.Management/managementGroups', parameters('targetMG'))]",
"policyDefinitionName": "LocationRestriction"
},
"resources": [
{
"type": "Microsoft.Authorization/policyDefinitions",
"apiVersion": "2020-03-01",
"name": "[variables('policyDefinitionName')]",
"properties": {
"policyType": "Custom",
"mode": "All",
"parameters": {},
"policyRule": {
"if": {
"not": {
"field": "location",
"in": "[parameters('allowedLocations')]"
}
},
"then": {
"effect": "deny"
}
}
}
},
{
"type": "Microsoft.Authorization/policyAssignments",
"apiVersion": "2020-03-01",
"name": "location-lock",
"properties": {
"scope": "[variables('mgScope')]",
"policyDefinitionId": "[extensionResourceId(variables('mgScope'), 'Microsoft.Authorization/policyDefinitions', variables('policyDefinitionName'))]"
},
"dependsOn": [
"[extensionResourceId(managementGroup().id, 'Microsoft.Authorization/policyDefinitions', variables('policyDefinitionName'))]"
]
}
]
}
Ingebouwde beleidsdefinities zijn resources op tenantniveau. Zie tenantResourceId voor een voorbeeld van het implementeren van een ingebouwde beleidsdefinitie.
Lijst*
list{Value}(resourceName or resourceIdentifier, apiVersion, functionValues)
De syntaxis voor deze functie verschilt per naam van de lijstbewerkingen. Elke implementatie retourneert waarden voor het resourcetype dat een lijstbewerking ondersteunt. De naam van de bewerking moet beginnen met list
en kan een achtervoegsel hebben. Enkele veelvoorkomende gebruiksgegevens zijn list
, listKeys
, listKeyValue
en listSecrets
.
Gebruik in Bicep de functie list* .
Parameters
Parameter | Vereist | Type | Beschrijving |
---|---|---|---|
resourceName of resourceIdentifier | Ja | tekenreeks | Unieke id voor de resource. |
apiVersion | Ja | tekenreeks | API-versie van de runtimestatus van de resource. Meestal in de indeling jjjj-mm-dd. |
functionValues | No | 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 voor een opslagaccount. In dit artikel wordt een voorbeeld van het doorgeven van functiewaarden weergegeven. |
Geldig gebruik
De lijstfuncties kunnen worden gebruikt in de eigenschappen van een resourcedefinitie. Gebruik geen lijstfunctie die gevoelige informatie beschikbaar maakt in de uitvoersectie van een sjabloon. Uitvoerwaarden worden opgeslagen in de implementatiegeschiedenis en kunnen worden opgehaald door een kwaadwillende gebruiker.
Bij gebruik met eigenschapsiteratie kunt u de lijstfuncties gebruiken voor input
omdat de expressie is toegewezen aan de resource-eigenschap. U kunt ze niet gebruiken met count
omdat het aantal moet worden bepaald voordat de lijstfunctie wordt omgezet.
Implementaties
De mogelijke toepassingen van list*
worden weergegeven in de volgende tabel.
Resourcetype | 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/abonnementen | listSecrets |
Microsoft. AppConfiguration/configurationStores | ListKeys |
Microsoft. AppPlatform/Spring | listTestKeys |
Microsoft. Automation/automationAccounts | listKeys |
Microsoft. Batch/batchAccounts | listKeys |
Microsoft. BatchAI/werkruimten/experimenten/taken | listoutputfiles |
Microsoft. BotService/botServices/channels | listChannelWithKeys |
Microsoft. Cache/redis | listKeys |
Microsoft. CognitiveServices/accounts | listKeys |
Microsoft. ContainerRegisters/registers | listBuildSourceUploadUrl |
Microsoft. ContainerRegisters/registers | listCredentials |
Microsoft. ContainerRegisters/registers | listUsages |
Microsoft. ContainerRegistry/registers/agentpools | listQueueStatus |
Microsoft. ContainerRegistry/registries/buildTasks | listSourceRepositoryProperties |
Microsoft. ContainerRegistry/registries/buildTasks/steps | listBuildArguments |
Microsoft. ContainerRegistry/registers/taskruns | listDetails |
Microsoft. ContainerRegistry/registries/webhooks | listEvents |
Microsoft. ContainerRegistry/registers/runs | listLogSasUrl |
Microsoft. ContainerRegistry/registers/taken | listDetails |
Microsoft. ContainerService/managedClusters | listClusterAdminCredential |
Microsoft. ContainerService/managedClusters | listClusterMonitoringUserCredential |
Microsoft. ContainerService/managedClusters | listClusterUserCredential |
Microsoft. ContainerService/managedClusters/accessProfiles | listCredential |
Microsoft. DataBox/taken | 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/shareAbonnementen | listSourceShareSynchronizationSettings |
Microsoft. DataShare/accounts/shareAbonnementen | listSynchronizationDetails |
Microsoft. DataShare/accounts/shareAbonnementen | listSynchronizations |
Microsoft. Apparaten/iotHubs | listKeys |
Microsoft. Devices/iotHubs/iotHubKeys | listKeys |
Microsoft. Apparaten/provisioningServices/sleutels | listKeys |
Microsoft. Apparaten/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 | listConnectionStrings |
Microsoft. DocumentDB/databaseAccounts | listKeys |
Microsoft. DocumentDB/databaseAccounts/notebookWorkspaces | listConnectionInfo |
Microsoft. DomainRegistration/topLevelDomains | listAgreements |
Microsoft. EventGrid/domeinen | listKeys |
Microsoft. EventGrid/onderwerpen | listKeys |
Microsoft. EventHub/naamruimten/authorizationRules | listKeys |
Microsoft. EventHub/naamruimten/disasterRecoveryConfigs/authorizationRules | listKeys |
Microsoft. EventHub/naamruimten/eventhubs/authorizationRules | listKeys |
Microsoft. ImportExport/taken | listBitLockerKeys |
Microsoft. Kusto/Clusters/Databases | Lijstprincipals |
Microsoft. LabServices/labs/gebruikers | list |
Microsoft. LabServices/labs/virtualMachines | list |
Microsoft. Logica/integratieAccounts/overeenkomsten | listContentCallbackUrl |
Microsoft. Logica/integratieAccounts/assembly's | listContentCallbackUrl |
Microsoft. Logica/integratieAccounts | listCallbackUrl |
Microsoft. Logica/integratieAccounts | listKeyVaultKeys |
Microsoft. Logica/integratieAccounts/toewijzingen | listContentCallbackUrl |
Microsoft. Logica/integratieAccounts/partners | listContentCallbackUrl |
Microsoft. Logica/integratieAccounts/schema's | listContentCallbackUrl |
Microsoft.Logic/workflows | listCallbackUrl |
Microsoft.Logic/workflows | listSwagger |
Microsoft. Logica/werkstromen/uitvoeringen/acties | listExpressionTraces |
Microsoft. Logica/werkstromen/uitvoeringen/acties/herhalingen | listExpressionTraces |
Microsoft. Logica/werkstromen/triggers | listCallbackUrl |
Microsoft. Logica/werkstromen/versies/triggers | listCallbackUrl |
Microsoft. MachineLearning/webServices | listkeys |
Microsoft. MachineLearning/werkruimten | listworkspacekeys |
Microsoft. MachineLearningServices/werkruimten/berekeningen | listKeys |
Microsoft. MachineLearningServices/werkruimten/berekeningen | 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. Netwerk/applicationSecurityGroups | listIpConfigurations |
Microsoft. NotificationHubs/namespaces/authorizationRules | listkeys |
Microsoft. NotificationHubs/Namespaces/NotificationHubs/authorizationRules | listkeys |
Microsoft.OperationalInsights/workspaces | list |
Microsoft.OperationalInsights/workspaces | listKeys |
Microsoft. PolicyInsights/herstelbewerkingen | listDeployments |
Microsoft. RedHatOpenShift/openShiftClusters | listCredentials |
Microsoft. Relay/naamruimten/authorizationRules | listKeys |
Microsoft. Relay/naamruimten/disasterRecoveryConfigs/authorizationRules | listKeys |
Microsoft. Relay/naamruimten/HybridConnections/authorizationRules | listKeys |
Microsoft. Relay/naamruimten/WcfRelays/authorizationRules | listkeys |
Microsoft. Zoeken/zoekenServices | listAdminKeys |
Microsoft. Zoeken/zoekenServices | listQueryKeys |
Microsoft. ServiceBus/naamruimten/authorizationRules | listKeys |
Microsoft. ServiceBus/naamruimten/disasterRecoveryConfigs/authorizationRules | listKeys |
Microsoft. ServiceBus/naamruimten/wachtrijen/authorizationRules | listKeys |
Microsoft. ServiceBus/naamruimten/topics/authorizationRules | listKeys |
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/werkruimten/integrationRuntimes | listAuthKeys |
Microsoft. Web/connectionGateways | Lijststatus |
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 | list |
Microsoft. Web/sites/config | list |
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 | list |
Microsoft. Web/sites/sleuven/config | list |
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 PowerShell-cmdlet Get-AzProviderOperation . In het volgende voorbeeld worden alle lijstbewerkingen voor opslagaccounts weergegeven:
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')]"
Retourwaarde
Het geretourneerde object verschilt per list
functie die u gebruikt. De 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 sectie Uitvoer, zoals wordt weergegeven in de voorbeeldsjabloon.
Opmerkingen
Geef de resource op met behulp van de resourcenaam of de functie resourceId. Wanneer u een list
functie gebruikt in dezelfde sjabloon waarmee de resource waarnaar wordt verwezen, gebruikt u de resourcenaam.
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 if
functie om ervoor te zorgen dat de functie alleen wordt geëvalueerd wanneer de resource wordt geïmplementeerd. Zie de functie if voor een voorbeeldsjabloon die gebruikmaakt van if
en list
met een voorwaardelijk geïmplementeerde resource.
Lijstvoorbeeld
In het volgende voorbeeld wordt gebruikt listKeys
bij het instellen van een waarde voor implementatiescripts.
"storageAccountSettings": {
"storageAccountName": "[variables('storageAccountName')]",
"storageAccountKey": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')), '2019-06-01').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.
"parameters": {
"accountSasProperties": {
"type": "object",
"defaultValue": {
"signedServices": "b",
"signedPermission": "r",
"signedExpiry": "2020-08-20T11:00:00Z",
"signedResourceTypes": "s"
}
}
},
...
"sasToken": "[listAccountSas(parameters('storagename'), '2018-02-01', parameters('accountSasProperties')).accountSasToken]"
pickZones
pickZones(providerNamespace, resourceType, location, [numberOfZones], [offset])
Bepaalt of een resourcetype zones ondersteunt voor de opgegeven locatie of regio. Deze functie ondersteunt alleen zonegebonden resources. Zone-redundante services retourneren een lege matrix. Zie Azure-services die ondersteuning bieden voor Beschikbaarheidszones voor meer informatie.
Gebruik in Bicep de functie pickZones .
Parameters
Parameter | Vereist | Type | Beschrijving |
---|---|---|---|
providerNamespace | Ja | tekenreeks | De naamruimte van de resourceprovider voor het resourcetype om te controleren op zoneondersteuning. |
resourceType | Ja | tekenreeks | Het resourcetype dat moet worden gecontroleerd op zoneondersteuning. |
location | Ja | tekenreeks | De regio die moet worden gecontroleerd op zoneondersteuning. |
numberOfZones | No | 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 | No | geheel getal | De verschuiving ten opzichte 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 voor offset en gebruikt 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 regio geen zones ondersteunt, wordt een lege matrix geretourneerd. Er wordt ook een lege matrix geretourneerd voor zone-redundante services.
[
]
Opmerkingen
Er zijn verschillende categorieën voor Azure Beschikbaarheidszones: zone- 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.
voorbeeld van pickZones
In de volgende sjabloon ziet u drie resultaten voor het gebruik van de pickZones
functie.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {},
"functions": [],
"variables": {},
"resources": [],
"outputs": {
"supported": {
"type": "array",
"value": "[pickZones('Microsoft.Compute', 'virtualMachines', 'westus2')]"
},
"notSupportedRegion": {
"type": "array",
"value": "[pickZones('Microsoft.Compute', 'virtualMachines', 'westus')]"
},
"notSupportedType": {
"type": "array",
"value": "[pickZones('Microsoft.Cdn', 'profiles', 'westus2')]"
}
}
}
De uitvoer van de voorgaande voorbeelden retourneert drie matrices.
Naam | Type | Waarde |
---|---|---|
Ondersteund | matrix | [ "1" ] |
notSupportedRegion | matrix | [] |
notSupportedType | matrix | [] |
U kunt het antwoord van pickZones
gebruiken om te bepalen of u null moet opgeven voor zones of virtuele machines wilt toewijzen aan verschillende zones. In het volgende voorbeeld wordt een waarde voor de zone ingesteld op basis van de beschikbaarheid van zones.
"zones": {
"value": "[if(not(empty(pickZones('Microsoft.Compute', 'virtualMachines', 'westus2'))), string(add(mod(copyIndex(),3),1)), json('null'))]"
},
Azure Cosmos DB is geen zonegebonden resource, maar u kunt de pickZones
functie gebruiken om te bepalen of zoneredundantie voor georeplicatie moet worden ingeschakeld. Geef de Microsoft door. Resourcetype Storage/storageAccounts om te bepalen of zoneredundantie moet worden ingeschakeld.
"resources": [
{
"type": "Microsoft.DocumentDB/databaseAccounts",
"apiVersion": "2021-04-15",
"name": "[variables('accountName_var')]",
"location": "[parameters('location')]",
"kind": "GlobalDocumentDB",
"properties": {
"consistencyPolicy": "[variables('consistencyPolicy')[parameters('defaultConsistencyLevel')]]",
"locations": [
{
"locationName": "[parameters('primaryRegion')]",
"failoverPriority": 0,
"isZoneRedundant": "[if(empty(pickZones('Microsoft.Storage', 'storageAccounts', parameters('primaryRegion'))), bool('false'), bool('true'))]",
},
{
"locationName": "[parameters('secondaryRegion')]",
"failoverPriority": 1,
"isZoneRedundant": "[if(empty(pickZones('Microsoft.Storage', 'storageAccounts', parameters('secondaryRegion'))), bool('false'), bool('true'))]",
}
],
"databaseAccountOfferType": "Standard",
"enableAutomaticFailover": "[parameters('automaticFailover')]"
}
}
]
providers
De functie providers is afgeschaft in ARM-sjablonen. We raden het 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 sjabloon. Als u een dynamisch geretourneerde API-versie gebruikt, kan uw sjabloon worden verbroken als de eigenschappen tussen versies veranderen.
In Bicep is de functie providers afgeschaft.
De providerbewerking is nog steeds beschikbaar via de REST API. Het kan buiten een ARM-sjabloon worden gebruikt om informatie op te halen over een resourceprovider.
Verwijzing
reference(resourceName or resourceIdentifier, [apiVersion], ['Full'])
Retourneert een object dat de runtimestatus van een resource vertegenwoordigt.
Gebruik in Bicep de verwijzingsfunctie .
Parameters
Parameter | Vereist | Type | Beschrijving |
---|---|---|---|
resourceName of resourceIdentifier | Ja | tekenreeks | Naam of unieke id van een resource. Wanneer u in de huidige sjabloon naar een resource verwijst, geeft u alleen de resourcenaam op als parameter. Wanneer u verwijst naar een eerder geïmplementeerde resource of wanneer de naam van de resource niet eenduidig is, geeft u de resource-id op. |
apiVersion | No | tekenreeks | API-versie van de opgegeven resource. Deze parameter is vereist wanneer de resource niet binnen dezelfde sjabloon is ingericht. Meestal in de indeling jjjj-mm-dd. Zie sjabloonreferentie voor geldige API-versies voor uw resource. |
'Volledig' | No | tekenreeks | Waarde die aangeeft of het volledige resourceobject moet worden geretourneerd. Als u niet opgeeft 'Full' , wordt alleen het eigenschappenobject van de resource geretourneerd. Het volledige object bevat waarden zoals de resource-id en locatie. |
Retourwaarde
Elk resourcetype retourneert verschillende eigenschappen voor de referentiefunctie. De functie retourneert niet één vooraf gedefinieerde indeling. De geretourneerde waarde verschilt ook op basis van de waarde van het 'Full'
argument. Als u de eigenschappen voor een resourcetype wilt zien, retourneert u het object in de sectie uitvoer, zoals wordt weergegeven in het voorbeeld.
Opmerkingen
De referentiefunctie haalt de runtimestatus op van een eerder geïmplementeerde resource of een resource die is geïmplementeerd in de huidige sjabloon. In dit artikel vindt u voorbeelden voor beide scenario's.
Normaal gesproken gebruikt u de reference
functie om een bepaalde waarde van een object te retourneren, zoals de URI van het blob-eindpunt of de Fully Qualified Domain Name.
"outputs": {
"BlobUri": {
"type": "string",
"value": "[reference(resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName'))).primaryEndpoints.blob]"
},
"FQDN": {
"type": "string",
"value": "[reference(resourceId('Microsoft.Network/publicIPAddresses', parameters('ipAddressName'))).dnsSettings.fqdn]"
}
}
Gebruik 'Full'
deze optie wanneer u resourcewaarden nodig hebt die geen deel uitmaken van het eigenschappenschema. Als u bijvoorbeeld toegangsbeleid voor sleutelkluis wilt instellen, moet u de identiteitseigenschappen voor een virtuele machine ophalen.
{
"type": "Microsoft.KeyVault/vaults",
"apiVersion": "2019-09-01",
"name": "vaultName",
"properties": {
"tenantId": "[subscription().tenantId]",
"accessPolicies": [
{
"tenantId": "[reference(resourceId('Microsoft.Compute/virtualMachines', variables('vmName')), '2019-03-01', 'Full').identity.tenantId]",
"objectId": "[reference(resourceId('Microsoft.Compute/virtualMachines', variables('vmName')), '2019-03-01', 'Full').identity.principalId]",
"permissions": {
"keys": [
"all"
],
"secrets": [
"all"
]
}
}
],
...
Geldig gebruik
De reference
functie kan alleen worden gebruikt in de sectie uitvoer van een sjabloon of implementatie- en eigenschappenobject van een resourcedefinitie. Deze kan niet worden gebruikt voor resource-eigenschappen zoals type
, location
name
en andere eigenschappen op het hoogste niveau van de resourcedefinitie. Wanneer u wordt gebruikt met eigenschapsiteratie, kunt u de reference
functie gebruiken voor input
omdat de expressie is toegewezen aan de resource-eigenschap.
U kunt de reference
functie niet gebruiken om de waarde van de count
eigenschap in een kopieerlus in te stellen. U kunt gebruiken om andere eigenschappen in de lus in te stellen. Verwijzing is geblokkeerd voor de eigenschap count omdat die eigenschap moet worden bepaald voordat de reference
functie wordt omgezet.
Als u de reference
functie of een list*
functie in de sectie uitvoer van een geneste sjabloon wilt gebruiken, moet u instellen expressionEvaluationOptions
dat binnenste bereikevaluatie wordt gebruikt of een gekoppelde in plaats van een geneste sjabloon.
Als u de reference
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 reference
functie verwijst naar een resource die niet bestaat. Gebruik de if
functie om ervoor te zorgen dat de functie alleen wordt geëvalueerd wanneer de resource wordt geïmplementeerd. Zie de functie if voor een voorbeeldsjabloon die gebruikmaakt van if
en reference
met een voorwaardelijk geïmplementeerde resource.
Impliciete afhankelijkheid
Met behulp van de reference
functie declareert u impliciet dat één resource afhankelijk is van een andere resource als de resource waarnaar wordt verwezen binnen dezelfde sjabloon is ingericht en u naar de resource verwijst met de naam (niet met de resource-id). U hoeft de dependsOn
eigenschap niet ook te gebruiken. De functie wordt pas geëvalueerd als de resource waarnaar wordt verwezen, de implementatie heeft voltooid.
Resourcenaam of -id
Wanneer u verwijst naar een resource die in dezelfde sjabloon is geïmplementeerd, geeft u de naam van de resource op.
"value": "[reference(parameters('storageAccountName'))]"
Wanneer u verwijst naar een resource die niet in dezelfde sjabloon is geïmplementeerd, geeft u de resource-id en apiVersion
op.
"value": "[reference(resourceId(parameters('storageResourceGroup'), 'Microsoft.Storage/storageAccounts', parameters('storageAccountName')), '2018-07-01')]"
Als u dubbelzinnigheid wilt voorkomen over de resource waarnaar u verwijst, kunt u een volledig gekwalificeerde resource-id opgeven.
"value": "[reference(resourceId('Microsoft.Network/publicIPAddresses', parameters('ipAddressName')))]"
Wanneer u een volledig gekwalificeerde verwijzing naar een resource maakt, is de volgorde voor het combineren van segmenten uit het type en de naam niet alleen een samenvoeging van de twee. Gebruik in plaats daarvan na de naamruimte een reeks type/naamparen van minst specifiek naar meest specifiek:
{resource-provider-namespace}/{parent-resource-type}/{parent-resource-name}[/{child-resource-type}/{child-resource-name}]
Bijvoorbeeld:
Microsoft.Compute/virtualMachines/myVM/extensions/myExt
is correct Microsoft.Compute/virtualMachines/extensions/myVM/myExt
is niet juist
Als u het maken van een resource-id wilt vereenvoudigen, gebruikt u de resourceId()
functies die in dit document worden beschreven in plaats van de concat()
functie.
Beheerde identiteit ophalen
Beheerde identiteiten voor Azure-resources zijn extensieresourcetypen die impliciet voor sommige resources worden gemaakt. Omdat de beheerde identiteit niet expliciet is gedefinieerd in de sjabloon, moet u verwijzen naar de resource waarop de identiteit wordt toegepast. Gebruik Full
om alle eigenschappen op te halen, inclusief de impliciet gemaakte identiteit.
Het patroon is:
"[reference(resourceId(<resource-provider-namespace>, <resource-name>), <API-version>, 'Full').Identity.propertyName]"
Als u bijvoorbeeld de principal-id wilt ophalen voor een beheerde identiteit die wordt toegepast op een virtuele machine, gebruikt u:
"[reference(resourceId('Microsoft.Compute/virtualMachines', variables('vmName')),'2019-12-01', 'Full').identity.principalId]",
Of gebruik om de tenant-id op te halen voor een beheerde identiteit die wordt toegepast op een virtuele-machineschaalset:
"[reference(resourceId('Microsoft.Compute/virtualMachineScaleSets', variables('vmNodeType0Name')), 2019-12-01, 'Full').Identity.tenantId]"
Referentievoorbeeld
In het volgende voorbeeld wordt een resource geïmplementeerd en wordt naar die resource verwezen.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"storageAccountName": {
"type": "string"
}
},
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2021-04-01",
"name": "[parameters('storageAccountName')]",
"location": "[resourceGroup().location]",
"sku": {
"name": "Standard_LRS"
},
"kind": "Storage",
"tags": {},
"properties": {
}
}
],
"outputs": {
"referenceOutput": {
"type": "object",
"value": "[reference(parameters('storageAccountName'))]"
},
"fullReferenceOutput": {
"type": "object",
"value": "[reference(parameters('storageAccountName'), '2021-04-01', 'Full')]"
}
}
}
In het voorgaande voorbeeld worden de twee objecten geretourneerd. Het eigenschappenobject heeft de volgende indeling:
{
"creationTime": "2017-10-09T18:55:40.5863736Z",
"primaryEndpoints": {
"blob": "https://examplestorage.blob.core.windows.net/",
"file": "https://examplestorage.file.core.windows.net/",
"queue": "https://examplestorage.queue.core.windows.net/",
"table": "https://examplestorage.table.core.windows.net/"
},
"primaryLocation": "southcentralus",
"provisioningState": "Succeeded",
"statusOfPrimary": "available",
"supportsHttpsTrafficOnly": false
}
Het volledige object heeft de volgende indeling:
{
"apiVersion":"2021-04-01",
"location":"southcentralus",
"sku": {
"name":"Standard_LRS",
"tier":"Standard"
},
"tags":{},
"kind":"Storage",
"properties": {
"creationTime":"2017-10-09T18:55:40.5863736Z",
"primaryEndpoints": {
"blob":"https://examplestorage.blob.core.windows.net/",
"file":"https://examplestorage.file.core.windows.net/",
"queue":"https://examplestorage.queue.core.windows.net/",
"table":"https://examplestorage.table.core.windows.net/"
},
"primaryLocation":"southcentralus",
"provisioningState":"Succeeded",
"statusOfPrimary":"available",
"supportsHttpsTrafficOnly":false
},
"subscriptionId":"<subscription-id>",
"resourceGroupName":"functionexamplegroup",
"resourceId":"Microsoft.Storage/storageAccounts/examplestorage",
"referenceApiVersion":"2021-04-01",
"condition":true,
"isConditionTrue":true,
"isTemplateResource":false,
"isAction":false,
"provisioningOperation":"Read"
}
De volgende voorbeeldsjabloon verwijst naar een opslagaccount dat niet in deze sjabloon is geïmplementeerd. Het opslagaccount bestaat al binnen hetzelfde abonnement.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"storageResourceGroup": {
"type": "string"
},
"storageAccountName": {
"type": "string"
}
},
"resources": [],
"outputs": {
"ExistingStorage": {
"type": "object",
"value": "[reference(resourceId(parameters('storageResourceGroup'), 'Microsoft.Storage/storageAccounts', parameters('storageAccountName')), '2021-04-01')]"
}
}
}
resourceGroup
Zie de bereikfunctie resourceGroup.
Gebruik in Bicep de bereikfunctie resourcegroep .
resourceId
resourceId([subscriptionId], [resourceGroupName], resourceType, resourceName1, [resourceName2], ...)
Retourneert de unieke id van een resource. U gebruikt deze functie wanneer de resourcenaam dubbelzinnig is of niet is ingericht binnen dezelfde sjabloon. De indeling van de geretourneerde id varieert, afhankelijk van of de implementatie plaatsvindt binnen het bereik van een resourcegroep, abonnement, beheergroep of tenant.
Gebruik in Bicep de functie resourceId .
Parameters
Parameter | Vereist | Type | Beschrijving |
---|---|---|---|
subscriptionId | No | tekenreeks (in GUID-indeling) | De standaardwaarde is het huidige abonnement. Geef deze waarde op wanneer u een resource in een ander abonnement wilt ophalen. Geef deze waarde alleen op wanneer u implementeert binnen het bereik van een resourcegroep of abonnement. |
resourceGroupName | No | tekenreeks | De standaardwaarde is de huidige resourcegroep. Geef deze waarde op wanneer u een resource in een andere resourcegroep wilt ophalen. Geef deze waarde alleen op wanneer u implementeert binnen het bereik van een resourcegroep. |
resourceType | Ja | tekenreeks | Type resource, inclusief naamruimte van resourceprovider. |
resourceName1 | Ja | tekenreeks | Naam van resource. |
resourceName2 | No | tekenreeks | Volgende resourcenaamsegment, indien nodig. |
Ga door met het toevoegen van resourcenamen als parameters wanneer het resourcetype meer segmenten bevat.
Retourwaarde
De resource-id wordt geretourneerd in verschillende indelingen in verschillende bereiken:
Bereik van resourcegroep:
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}
Abonnementsbereik:
/subscriptions/{subscriptionId}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}
Beheergroep of tenantbereik:
/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}
Om verwarring te voorkomen, raden we u aan niet te gebruiken resourceId
wanneer u werkt met resources die zijn geïmplementeerd in het abonnement, de beheergroep of de tenant. Gebruik in plaats daarvan de id-functie die is ontworpen voor het bereik.
- Gebruik voor resources op abonnementsniveau de functie subscriptionResourceId .
- Gebruik voor resources op beheergroepniveau de functie managementGroupResourceId . Gebruik de functie extensionResourceId om te verwijzen naar een resource die is geïmplementeerd als een uitbreiding van een beheergroep. Aangepaste beleidsdefinities die in een beheergroep worden geïmplementeerd, zijn bijvoorbeeld uitbreidingen van de beheergroep. Gebruik de functie tenantResourceId om te verwijzen naar resources die zijn geïmplementeerd in de tenant, maar beschikbaar zijn in uw beheergroep. Ingebouwde beleidsdefinities worden bijvoorbeeld geïmplementeerd als resources op tenantniveau.
- Gebruik voor resources op tenantniveau de functie tenantResourceId . Te gebruiken
tenantResourceId
voor ingebouwde beleidsdefinities omdat deze worden geïmplementeerd op tenantniveau.
Opmerkingen
Het aantal parameters dat u opgeeft, is afhankelijk van het feit of de resource een bovenliggende of onderliggende resource is en of de resource zich in hetzelfde abonnement of dezelfde resourcegroep bevindt.
Als u de resource-id voor een bovenliggende resource in hetzelfde abonnement en dezelfde resourcegroep wilt ophalen, geeft u het type en de naam van de resource op.
"[resourceId('Microsoft.ServiceBus/namespaces', 'namespace1')]"
Let op het aantal segmenten in het resourcetype om de resource-id voor een onderliggende resource op te halen. Geef een resourcenaam op voor elk segment van het resourcetype. De naam van het segment komt overeen met de resource die bestaat voor dat deel van de hiërarchie.
"[resourceId('Microsoft.ServiceBus/namespaces/queues/authorizationRules', 'namespace1', 'queue1', 'auth1')]"
Als u de resource-id voor een resource in hetzelfde abonnement maar een andere resourcegroep wilt ophalen, geeft u de naam van de resourcegroep op.
"[resourceId('otherResourceGroup', 'Microsoft.Storage/storageAccounts', 'examplestorage')]"
Als u de resource-id voor een resource in een ander abonnement en een andere resourcegroep wilt ophalen, geeft u de abonnements-id en de naam van de resourcegroep op.
"[resourceId('xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx', 'otherResourceGroup', 'Microsoft.Storage/storageAccounts','examplestorage')]"
Vaak moet u deze functie gebruiken bij het gebruik van een opslagaccount of virtueel netwerk in een alternatieve resourcegroep. In het volgende voorbeeld ziet u hoe een resource uit een externe resourcegroep eenvoudig kan worden gebruikt:
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"location": {
"type": "string"
},
"virtualNetworkName": {
"type": "string"
},
"virtualNetworkResourceGroup": {
"type": "string"
},
"subnet1Name": {
"type": "string"
},
"nicName": {
"type": "string"
}
},
"variables": {
"subnet1Ref": "[resourceId(parameters('virtualNetworkResourceGroup'), 'Microsoft.Network/virtualNetworks/subnets', parameters('virtualNetworkName'), parameters('subnet1Name'))]"
},
"resources": [
{
"type": "Microsoft.Network/networkInterfaces",
"apiVersion": "2021-02-01",
"name": "[parameters('nicName')]",
"location": "[parameters('location')]",
"properties": {
"ipConfigurations": [
{
"name": "ipconfig1",
"properties": {
"privateIPAllocationMethod": "Dynamic",
"subnet": {
"id": "[variables('subnet1Ref')]"
}
}
}
]
}
}
]
}
Voorbeeld van resource-id
In het volgende voorbeeld wordt de resource-id voor een opslagaccount in de resourcegroep geretourneerd:
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"resources": [],
"outputs": {
"sameRGOutput": {
"type": "string",
"value": "[resourceId('Microsoft.Storage/storageAccounts','examplestorage')]"
},
"differentRGOutput": {
"type": "string",
"value": "[resourceId('otherResourceGroup', 'Microsoft.Storage/storageAccounts','examplestorage')]"
},
"differentSubOutput": {
"type": "string",
"value": "[resourceId('11111111-1111-1111-1111-111111111111', 'otherResourceGroup', 'Microsoft.Storage/storageAccounts','examplestorage')]"
},
"nestedResourceOutput": {
"type": "string",
"value": "[resourceId('Microsoft.SQL/servers/databases', 'serverName', 'databaseName')]"
}
}
}
De uitvoer uit het voorgaande voorbeeld met de standaardwaarden is:
Naam | Type | Waarde |
---|---|---|
sameRGOutput | Tekenreeks | /subscriptions/{current-sub-id}/resourceGroups/examplegroup/providers/Microsoft. Storage/storageAccounts/examplestorage |
differentRGOutput | Tekenreeks | /subscriptions/{current-sub-id}/resourceGroups/otherResourceGroup/providers/Microsoft. Storage/storageAccounts/examplestorage |
differentSubOutput | Tekenreeks | /subscriptions/11111111-1111-1111-1111-1111111111111/resourceGroups/otherResourceGroup/providers/Microsoft. Storage/storageAccounts/examplestorage |
nestedResourceOutput | Tekenreeks | /subscriptions/{current-sub-id}/resourceGroups/examplegroup/providers/Microsoft. SQL/servers/serverName/databases/databaseName |
abonnement
Zie de functie voor abonnementsbereik.
Gebruik in Bicep de abonnementsbereikfunctie.
subscriptionResourceId
subscriptionResourceId([subscriptionId], resourceType, resourceName1, [resourceName2], ...)
Retourneert de unieke id voor een resource die is geïmplementeerd op abonnementsniveau.
Gebruik in Bicep de functie subscriptionResourceId .
Parameters
Parameter | Vereist | Type | Beschrijving |
---|---|---|---|
subscriptionId | No | tekenreeks (in GUID-indeling) | De standaardwaarde is het huidige abonnement. Geef deze waarde op wanneer u een resource in een ander abonnement wilt ophalen. |
resourceType | Ja | tekenreeks | Type resource, inclusief naamruimte van de resourceprovider. |
resourceName1 | Ja | tekenreeks | Naam van resource. |
resourceName2 | No | tekenreeks | Volgende resourcenaamsegment, indien nodig. |
Ga door met het toevoegen van resourcenamen als parameters wanneer het resourcetype meer segmenten bevat.
Retourwaarde
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 wijkt af van de waarde die wordt geretourneerd door de resourceId-functie door geen resourcegroepwaarde op te geven.
voorbeeld van subscriptionResourceID
Met de volgende sjabloon wordt een ingebouwde rol toegewezen. U kunt deze implementeren in een resourcegroep of abonnement. De functie wordt gebruikt subscriptionResourceId
om de resource-id voor ingebouwde rollen op te halen.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"principalId": {
"type": "string",
"metadata": {
"description": "The principal to assign the role to"
}
},
"builtInRoleType": {
"type": "string",
"allowedValues": [
"Owner",
"Contributor",
"Reader"
],
"metadata": {
"description": "Built-in role to assign"
}
},
"roleNameGuid": {
"type": "string",
"defaultValue": "[newGuid()]",
"metadata": {
"description": "A new GUID used to identify the role assignment"
}
}
},
"variables": {
"Owner": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', '8e3af657-a8ff-443c-a75c-2fe8c4bcb635')]",
"Contributor": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'b24988ac-6180-42a0-ab88-20f7382dd24c')]",
"Reader": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'acdd72a7-3385-48ef-bd42-f606fba81ae7')]"
},
"resources": [
{
"type": "Microsoft.Authorization/roleAssignments",
"apiVersion": "2020-10-01-preview",
"name": "[parameters('roleNameGuid')]",
"properties": {
"roleDefinitionId": "[variables(parameters('builtInRoleType'))]",
"principalId": "[parameters('principalId')]"
}
}
]
}
managementGroupResourceId
managementGroupResourceId([managementGroupResourceId],resourceType, resourceName1, [resourceName2], ...)
Retourneert de unieke id voor een resource die is geïmplementeerd op het niveau van de beheergroep.
Gebruik in Bicep de functie managementGroupResourceId .
Parameters
Parameter | Vereist | Type | Beschrijving |
---|---|---|---|
managementGroupResourceId | No | tekenreeks (in GUID-indeling) | De standaardwaarde is de huidige beheergroep. Geef deze waarde op wanneer u een resource in een andere beheergroep wilt ophalen. |
resourceType | Ja | tekenreeks | Type resource, inclusief naamruimte van de resourceprovider. |
resourceName1 | Ja | tekenreeks | Naam van resource. |
resourceName2 | No | tekenreeks | Volgende resourcenaamsegment, indien nodig. |
Ga door met het toevoegen van resourcenamen als parameters wanneer het resourcetype meer segmenten bevat.
Retourwaarde
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 wijkt af van de waarde die wordt geretourneerd door de functie resourceId door geen abonnements-id en een resourcegroepwaarde op te geven.
voorbeeld van managementGrouopResourceID
Met de volgende sjabloon wordt een beleidsdefinitie gemaakt en toegewezen. De functie wordt gebruikt managementGroupResourceId
om de resource-id voor de beleidsdefinitie op te halen.
{
"$schema": "https://schema.management.azure.com/schemas/2019-08-01/managementGroupDeploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"targetMG": {
"type": "string",
"metadata": {
"description": "Target Management Group"
}
},
"allowedLocations": {
"type": "array",
"defaultValue": [
"australiaeast",
"australiasoutheast",
"australiacentral"
],
"metadata": {
"description": "An array of the allowed locations, all other locations will be denied by the created policy."
}
}
},
"functions": [],
"variables": {
"mgScope": "[tenantResourceId('Microsoft.Management/managementGroups', parameters('targetMG'))]",
"policyDefinitionName": "LocationRestriction"
},
"resources": [
{
"type": "Microsoft.Authorization/policyDefinitions",
"apiVersion": "2020-03-01",
"name": "[variables('policyDefinitionName')]",
"properties": {
"policyType": "Custom",
"mode": "All",
"parameters": {},
"policyRule": {
"if": {
"not": {
"field": "location",
"in": "[parameters('allowedLocations')]"
}
},
"then": {
"effect": "deny"
}
}
}
},
{
"type": "Microsoft.Authorization/policyAssignments",
"apiVersion": "2020-03-01",
"name": "location-lock",
"properties": {
"scope": "[variables('mgScope')]",
"policyDefinitionId": "[managementGroupResourceId('Microsoft.Authorization/policyDefinitions', variables('policyDefinitionName'))]"
},
"dependsOn": [
"[format('Microsoft.Authorization/policyDefinitions/{0}', variables('policyDefinitionName'))]"
]
}
]
}
tenantResourceId
tenantResourceId(resourceType, resourceName1, [resourceName2], ...)
Retourneert de unieke id voor een resource die is geïmplementeerd op tenantniveau.
Gebruik in Bicep de functie tenantResourceId .
Parameters
Parameter | Vereist | Type | Beschrijving |
---|---|---|---|
resourceType | Ja | tekenreeks | Type resource, inclusief naamruimte van de resourceprovider. |
resourceName1 | Ja | tekenreeks | Naam van resource. |
resourceName2 | No | tekenreeks | Volgende resourcenaamsegment, indien nodig. |
Ga door met het toevoegen van resourcenamen als parameters wanneer het resourcetype meer segmenten bevat.
Retourwaarde
De id wordt geretourneerd in de volgende indeling:
/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}
Opmerkingen
U gebruikt deze functie om de resource-id op te halen voor een resource die is geïmplementeerd in de tenant. De geretourneerde id wijkt af van de waarden die worden geretourneerd door andere resource-id-functies door geen resourcegroep- of abonnementswaarden op te tellen.
voorbeeld tenantResourceId
Ingebouwde beleidsdefinities zijn resources op tenantniveau. Als u een beleidstoewijzing wilt implementeren die verwijst naar een ingebouwde beleidsdefinitie, gebruikt u de tenantResourceId
functie .
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"policyDefinitionID": {
"type": "string",
"defaultValue": "0a914e76-4921-4c19-b460-a2d36003525a",
"metadata": {
"description": "Specifies the ID of the policy definition or policy set definition being assigned."
}
},
"policyAssignmentName": {
"type": "string",
"defaultValue": "[guid(parameters('policyDefinitionID'), resourceGroup().name)]",
"metadata": {
"description": "Specifies the name of the policy assignment, can be used defined or an idempotent name as the defaultValue provides."
}
}
},
"resources": [
{
"type": "Microsoft.Authorization/policyAssignments",
"name": "[parameters('policyAssignmentName')]",
"apiVersion": "2020-09-01",
"properties": {
"scope": "[subscriptionResourceId('Microsoft.Resources/resourceGroups', resourceGroup().name)]",
"policyDefinitionId": "[tenantResourceId('Microsoft.Authorization/policyDefinitions', parameters('policyDefinitionID'))]"
}
}
]
}
Volgende stappen
- Zie Inzicht in de structuur en syntaxis van ARM-sjablonen voor een beschrijving van de secties in een ARM-sjabloon.
- Zie Gekoppelde en geneste sjablonen gebruiken bij het implementeren van Azure-resources als u meerdere sjablonen wilt samenvoegen.
- Als u een opgegeven aantal keren wilt herhalen bij het maken van een type resource, raadpleegt u Resource-iteratie in ARM-sjablonen.
- Zie Resources implementeren met ARM-sjablonen en Azure PowerShell voor meer informatie over het implementeren van de sjabloon die u hebt gemaakt.