Resourcefuncties voor ARM-sjablonen

Resource Manager bevat de volgende functies voor het verkrijgen van resourcewaarden in uw Azure Resource Manager sjabloon (ARM-sjabloon):

Zie Implementatiewaardefunctiesom waarden op te halen uit parameters, variabelen of de huidige implementatie.

extensionResourceId

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

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

Parameters

Parameter Vereist Type Beschrijving
baseResourceId Ja tekenreeks De resource-id voor de resource waar de extensieresource op wordt toegepast.
resourceType Ja tekenreeks Type extensieresource, inclusief naamruimte van resourceprovider.
resourceName1 Ja tekenreeks Naam van de extensieresource.
resourceName2 Nee tekenreeks Het 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 is afhankelijk van de 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.

voorbeeld extensionResourceId

In het volgende voorbeeld wordt de resource-id voor een resourcegroepsvergrendeling retourneert.

{
  "$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.4.1.14562",
      "templateHash": "2350252618174097128"
    }
  },
  "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": "[extensionResourceId(variables('mgScope'), 'Microsoft.Authorization/policyDefinitions', variables('policyDefinitionName'))]"
      },
      "dependsOn": [
        "[format('Microsoft.Authorization/policyDefinitions/{0}', variables('policyDefinitionName'))]"
      ]
    }
  ]
}

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

list*

list{Value}(resourceName or resourceIdentifier, apiVersion, functionValues)

De syntaxis voor deze functie is afhankelijk van de naam van de lijstbewerkingen. Elke implementatie retourneert waarden voor het resourcetype dat een lijstbewerking ondersteunt. De naam van de bewerking moet beginnen list met en heeft mogelijk een achtervoegsel. Enkele veelvoorkomende list gebruiksgegevens zijn , , en listKeys listKeyValue listSecrets .

Parameters

Parameter Vereist Type Beschrijving
resourceName of resourceIdentifier Ja tekenreeks Unieke id voor de resource.
apiVersion Ja tekenreeks API-versie van de runtime-status van de resource. Normaal gesproken in de indeling yyyy-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 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.

Wanneer u deze gebruikt met iteratie van eigenschappen,kunt u de lijstfuncties voor gebruiken input omdat de expressie is toegewezen aan de resource-eigenschap. U kunt deze niet gebruiken met count omdat het aantal moet worden bepaald voordat de lijstfunctie wordt opgelost.

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/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.Blockchain/blockchainMembers listApiKeys
Microsoft.Blockchain/blockchainMembers/transactionNodes listApiKeys
Microsoft.BotService/botServices/channels listChannelWithKeys
Microsoft.Cache/redis listKeys
Microsoft.CognitiveServices/accounts listKeys
Microsoft.ContainerRegistry/registries listBuildSourceUploadUrl
Microsoft.ContainerRegistry/registries listCredentials
Microsoft.ContainerRegistry/registries listUsages
Microsoft.ContainerRegistry/registries/agentpools listQueueStatus
Microsoft.ContainerRegistry/registries/buildTasks listSourceRepositoryProperties
Microsoft.ContainerRegistry/registries/buildTasks/steps listBuildArguments
Microsoft.ContainerRegistry/registries/taskruns listDetails
Microsoft.ContainerRegistry/registries/webhooks listEvents
Microsoft.ContainerRegistry/registries/runs listLogSasUrl
Microsoft.ContainerRegistry/registries/tasks listDetails
Microsoft.ContainerService/managedClusters listClusterAdminCredential
Microsoft.ContainerService/managedClusters listClusterMonitoringUserCredential
Microsoft.ContainerService/managedClusters listClusterUserCredential
Microsoft.ContainerService/managedClusters/accessProfiles listCredential
Microsoft.DataBox/jobs listCredentials
Microsoft.DataFactory/datafactories/gateways listauthkeys
Microsoft.DataFactory/factories/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 listConnectionStrings
Microsoft.DocumentDB/databaseAccounts listKeys
Microsoft.DocumentDB/databaseAccounts/notebookWorkspaces listConnectionInfo
Microsoft.DomainRegistration listDomainRecommendations
Microsoft.DomainRegistration/topLevelDomains listAgreements
Microsoft.EventGrid/domains listKeys
Microsoft.EventGrid/topics listKeys
Microsoft.EventHub/namespaces/authorizationRules listkeys
Microsoft.EventHub/namespaces/disasterRecoveryConfigs/authorizationRules listkeys
Microsoft.EventHub/namespaces/eventhubs/authorizationRules listkeys
Microsoft.ImportExport/jobs listBitLockerKeys
Microsoft.Kusto/Clusters/Databases ListPrincipals
Microsoft.LabServices/users ListEnvironments
Microsoft.LabServices/users ListLabs
Microsoft.Logic/integrationAccounts/agreements listContentCallbackUrl
Microsoft.Logic/integrationAccounts/assemblies 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/workspaces 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/Namespaces/authorizationRules listkeys
Microsoft.NotificationHubs/Namespaces/NotificationHubs/authorizationRules listkeys
Microsoft.OperationalInsights/workspaces Lijst
Microsoft.OperationalInsights/workspaces listKeys
Microsoft.PolicyInsights/remediations listDeployments
Microsoft.RedHatOpenShift/openShiftClusters listCredentials
Microsoft.Relay/namespaces/authorizationRules listkeys
Microsoft.Relay/namespaces/disasterRecoveryConfigs/authorizationRules listkeys
Microsoft.Relay/namespaces/HybridConnections/authorizationRules listkeys
Microsoft.Relay/namespaces/WcfRelays/authorizationRules listkeys
Microsoft.Search/searchServices listAdminKeys
Microsoft.Search/searchServices listQueryKeys
Microsoft.ServiceBus/namespaces/authorizationRules listkeys
Microsoft.ServiceBus/namespaces/disasterRecoveryConfigs/authorizationRules listkeys
Microsoft.ServiceBus/namespaces/queues/authorizationRules listkeys
Microsoft.ServiceBus/namespaces/topics/authorizationRules listkeys
Microsoft.SignalRService/SignalR listkeys
Microsoft.Storage/storageAccounts listAccountSas
Microsoft.Storage/storageAccounts listkeys
Microsoft.Storage/storageAccounts listServiceSas
Microsoft.StorSimple/managers/devices listFailoverSets
Microsoft.StorSimple/managers/devices 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

Om te bepalen welke resourcetypen een lijstbewerking hebben, hebt u de volgende opties:

  • Bekijk de REST API 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 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')]"
    

Retourwaarde

Het geretourneerde object is afhankelijk van de lijstfunctie die u gebruikt. De listKeys voor een opslagaccount retourneert bijvoorbeeld de volgende indeling:

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

Andere lijstfuncties hebben verschillende retourindelingen. Als u de indeling van een functie wilt zien, moet u deze opnemen in de uitvoersectie, zoals wordt weergegeven in de voorbeeldsjabloon.

Opmerkingen

Geef de resource op met behulp van de resourcenaam of de functie resourceId. Wanneer u een lijstfunctie gebruikt in dezelfde sjabloon die de resource waarnaar wordt verwezen implementeert, gebruikt u de resourcenaam.

Als u een functie gebruikt in een resource die voorwaardelijk is geïmplementeerd, wordt de functie geëvalueerd, zelfs als de list resource niet is geïmplementeerd. U krijgt een list foutmelding als de 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 if-functie voor een voorbeeldsjabloon die if en gebruikt voor een lijst met een voorwaardelijk geïmplementeerde resource.

Voorbeeld van een lijst

In het volgende voorbeeld wordt listKeys gebruikt 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 lijstfunctie die een parameter gebruikt. In dit geval is de functie listAccountSas. 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 zoneresources. Zone-redundante services retourneren een lege matrix. Zie Azure-services die ondersteuning bieden voor Beschikbaarheidszones. Zie de onderstaande voorbeelden voor het gebruik van de functie pickZones met zone-redundante services.

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 om te controleren op zoneondersteuning.
location Ja tekenreeks De regio om te controleren op zoneondersteuning.
numberOfZones Nee geheel getal Het aantal logische zones dat moet worden retourneren. De standaardwaarde is 1. Het getal moet een positief geheel getal tussen 1 en 3 zijn. Gebruik 1 voor resources met één zon. 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 zone die begint. 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 ondersteunen de volgende matrix:

[
    "1"
]

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

[
    "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-redundant en zone-redundant. De functie pickZones kan worden gebruikt om een beschikbaarheidszonenummer of -nummers voor een zoneresource te retourneren. Voor zone-redundante services (ZRS) retournt de functie een lege matrix. Zonale resources kunnen doorgaans worden geïdentificeerd door het gebruik van een zones eigenschap in de resourceheader. Zone-redundante services hebben verschillende manieren voor het identificeren en gebruiken van beschikbaarheidszones per resource. Gebruik de documentatie voor een specifieke service om de categorie van ondersteuning voor beschikbaarheidszones te bepalen. Zie Azure-services die ondersteuning bieden voor Beschikbaarheidszones.

Als u wilt bepalen of een bepaalde Azure-regio of -locatie beschikbaarheidszones ondersteunt, roept u de functie pickZones() aan met een zonelijk resourcetype, bijvoorbeeld Microsoft.Storage/storageAccounts . 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 functie pickZones.

{
  "$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', 'northcentralus')]"
    },
    "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 null moet worden verstrekt voor zones of dat u virtuele machines wilt toewijzen aan verschillende zones. In het volgende voorbeeld wordt een waarde voor de zone 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'))]"
},

In het volgende voorbeeld ziet u hoe u de functie pickZones gebruikt om zone-redundantie in te Cosmos DB.

"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. Het gebruik ervan wordt niet meer aanbevolen. 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. Het gebruik van een dynamisch geretourneerde API-versie kan uw sjabloon breken als de eigenschappen tussen versies veranderen.

Verwijzing

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

Retourneert een object dat de runtime-status van een resource vertegenwoordigt.

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 ambigu is, geeft u de resource-id op.
apiVersion Nee tekenreeks API-versie van de opgegeven resource. Deze parameter is vereist wanneer de resource niet in dezelfde sjabloon is ingericht. Normaal gesproken in de indeling yyyy-mm-dd. Zie sjabloonverwijzing voor geldige API-versies voor uw resource.
'Volledig' Nee tekenreeks Waarde die aangeeft of het volledige resourceobject moet worden retourneren. Als u niet 'Full' opgeeft, 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 retourneerde geen enkele, 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 uitvoersectie, zoals wordt weergegeven in het voorbeeld.

Opmerkingen

De referentiefunctie haalt de runtime-status op van een eerder geïmplementeerde resource of een resource die in de huidige sjabloon is geïmplementeerd. In dit artikel worden voorbeelden voor beide scenario's beschreven.

Normaal gesproken gebruikt u de functie om een bepaalde waarde van een object te retourneren, zoals de URI van het blob-eindpunt of de reference 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' wanneer u resourcewaarden nodig hebt die geen deel uitmaken van het eigenschappenschema. Als u bijvoorbeeld toegangsbeleid voor de sleutelkluis wilt instellen, moet u de identiteitseigenschappen voor een virtuele machine op halen.

{
  "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 referentiefunctie kan alleen worden gebruikt in de eigenschappen van een resourcedefinitie en de sectie outputs van een sjabloon of implementatie. Wanneer u gebruikt met de eigenschap iteratie, kunt u de referentiefunctie voor gebruiken input omdat de expressie is toegewezen aan de resource-eigenschap.

U kunt de referentiefunctie niet gebruiken om de waarde van de eigenschap count in een kopieerlus in te stellen. U kunt gebruiken om andere eigenschappen in de lus in te stellen. Verwijzing wordt geblokkeerd voor de eigenschap count, omdat die eigenschap moet worden bepaald voordat de verwijzingsfunctie wordt opgelost.

Als u de functie of een functie in de uitvoersectie van een geneste sjabloon wilt gebruiken, moet u instellen dat evaluatie van het interne bereik wordt gebruikt of een gekoppelde sjabloon gebruiken in plaats van een reference list* expressionEvaluationOptions geneste sjabloon.

Als u de functie gebruikt in een resource die voorwaardelijk is geïmplementeerd, wordt de functie geëvalueerd, zelfs als de reference resource niet is geïmplementeerd. U krijgt een reference foutmelding als de functie verwijst naar een resource die niet bestaat. Gebruik de functie om ervoor te zorgen dat de functie alleen wordt geëvalueerd wanneer de if resource wordt geïmplementeerd. Zie de functie if voor een voorbeeldsjabloon die if gebruikt en verwijst naar een voorwaardelijk geïmplementeerde resource.

Impliciete afhankelijkheid

Met behulp van de referentiefunctie declareer u impliciet dat de ene resource afhankelijk is van een andere resource als de resource waarnaar wordt verwezen, is ingericht in dezelfde sjabloon en u verwijst naar de resource met de naam (niet de resource-id). U hoeft niet ook de eigenschap dependsOn te gebruiken. De functie wordt pas geëvalueerd als de implementatie van de resource waarnaar wordt verwezen is 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')]"

Om dubbelzinnigheid te voorkomen over welke resource u verwijst, kunt u een volledig gekwalificeerde resource-id verstrekken.

"value": "[reference(resourceId('Microsoft.Network/publicIPAddresses', parameters('ipAddressName')))]"

Bij het maken van een volledig gekwalificeerde verwijzing naar een resource, is de volgorde voor het combineren van segmenten van 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 juist Microsoft.Compute/virtualMachines/extensions/myVM/myExt is, is niet juist

Als u het maken van een resource-id wilt vereenvoudigen, gebruikt u de functies resourceId() die in dit document worden beschreven in plaats van de functie concat() .

Beheerde identiteit op halen

Beheerde identiteiten voor Azure-resources zijn extensieresourcetypen die impliciet worden gemaakt voor sommige resources. Omdat de beheerde identiteit niet expliciet is gedefinieerd in de sjabloon, moet u verwijzen naar de resource waarin 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 op halen 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]",

Als u de tenant-id wilt op halen voor een beheerde identiteit die wordt toegepast op een virtuele-machineschaalset, gebruikt u:

"[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')]"
    }
  }
}

Het voorgaande voorbeeld retourneert de twee objecten. Het object Properties 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

resourceGroup()

Retourneert een -object dat de huidige resourcegroep vertegenwoordigt.

Retourwaarde

Het geretourneerde object heeft de volgende indeling:

{
  "id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}",
  "name": "{resourceGroupName}",
  "type":"Microsoft.Resources/resourceGroups",
  "location": "{resourceGroupLocation}",
  "managedBy": "{identifier-of-managing-resource}",
  "tags": {
  },
  "properties": {
    "provisioningState": "{status}"
  }
}

De eigenschap managedBy wordt alleen geretourneerd voor resourcegroepen die resources bevatten die worden beheerd door een andere service. Voor beheerde toepassingen, Databricks en AKS is de waarde van de eigenschap de resource-id van de beherende resource.

Opmerkingen

De resourceGroup() functie kan niet worden gebruikt in een sjabloon die is geïmplementeerd op abonnementsniveau. Deze kan alleen worden gebruikt in sjablonen die zijn geïmplementeerd in een resourcegroep. U kunt de functie gebruiken in een gekoppelde of geneste sjabloon (met een binnenste bereik) die is gericht op een resourcegroep, zelfs wanneer de bovenliggende sjabloon wordt geïmplementeerd resourceGroup() in het abonnement. In dat scenario wordt de gekoppelde of geneste sjabloon geïmplementeerd op het niveau van de resourcegroep. Zie Azure-resources implementeren naar meer dan één abonnement of resourcegroep voor meer informatie over het richten van een resourcegroep in een implementatie op abonnementsniveau.

De functie resourceGroup wordt vaak gebruikt om resources te maken op dezelfde locatie als de resourcegroep. In het volgende voorbeeld wordt de locatie van de resourcegroep gebruikt voor een standaardparameterwaarde.

"parameters": {
  "location": {
    "type": "string",
    "defaultValue": "[resourceGroup().location]"
  }
}

U kunt de functie ook resourceGroup gebruiken om tags van de resourcegroep toe te passen op een resource. Zie Tags toepassen vanuit resourcegroep voor meer informatie.

Wanneer u geneste sjablonen gebruikt om te implementeren naar meerdere resourcegroepen, kunt u het bereik opgeven voor het evalueren van de resourceGroup functie. Zie Azure-resources implementeren naar meer dan één abonnement of resourcegroep voor meer informatie.

Voorbeeld van resourcegroep

Het volgende voorbeeld retourneert de eigenschappen van de resourcegroep.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "resources": [],
  "outputs": {
    "resourceGroupOutput": {
      "type": "object",
      "value": "[resourceGroup()]"
    }
  }
}

In het voorgaande voorbeeld wordt een object in de volgende indeling retourneert:

{
  "id": "/subscriptions/{subscription-id}/resourceGroups/examplegroup",
  "name": "examplegroup",
  "type":"Microsoft.Resources/resourceGroups",
  "location": "southcentralus",
  "properties": {
    "provisioningState": "Succeeded"
  }
}

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 in dezelfde sjabloon. De indeling van de geretourneerde id is afhankelijk van of de implementatie wordt geïmplementeerd binnen het bereik van een resourcegroep, abonnement, beheergroep of tenant.

Parameters

Parameter Vereist Type Beschrijving
subscriptionId Nee 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 Nee 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 De naam van de resource.
resourceName2 Nee tekenreeks Het volgende resourcenaamsegment, indien nodig.

Ga door met het toevoegen van resourcenamen als parameters wanneer het resourcetype meer segmenten bevat.

Retourwaarde

Wanneer de sjabloon wordt geïmplementeerd binnen het bereik van een resourcegroep, wordt de resource-id geretourneerd in de volgende indeling:

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

U kunt de functie resourceId gebruiken voor andere implementatiebereiken, maar de indeling van de id wordt gewijzigd.

Als u resourceId gebruikt tijdens het implementeren naar een abonnement, wordt de resource-id geretourneerd in de volgende indeling:

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

Als u resourceId gebruikt tijdens het implementeren in een beheergroep of tenant, wordt de resource-id geretourneerd in de volgende indeling:

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

Om verwarring te voorkomen, raden we u aan niet te gebruiken wanneer u werkt met resources die zijn geïmplementeerd in het resourceId abonnement, de beheergroep of de tenant. Gebruik in plaats daarvan de id-functie die is ontworpen voor het bereik.

Gebruik voor resources op abonnementsniveaude functie subscriptionResourceId.

Gebruik voor resources op beheergroepniveaude functie extensionResourceId om te verwijzen naar een resource die is geïmplementeerd als een uitbreiding van een beheergroep. Aangepaste beleidsdefinities die worden geïmplementeerd in een beheergroep zijn bijvoorbeeld uitbreidingen van de beheergroep. Gebruik de functie tenantResourceId om te verwijzen naar resources die zijn geïmplementeerd in de tenant, maar die beschikbaar zijn in uw beheergroep. Ingebouwde beleidsdefinities worden bijvoorbeeld geïmplementeerd als resources op tenantniveau.

Gebruik voor resources op tenantniveaude functie tenantResourceId. Gebruik tenantResourceId voor ingebouwde beleidsdefinities omdat deze worden geïmplementeerd op tenantniveau.

Opmerkingen

Het aantal parameters dat u op geeft, is afhankelijk van of de resource een bovenliggende of onderliggende resource is en of de resource zich in hetzelfde abonnement of dezelfde resourcegroep.

Geef het type en de naam van de resource op om de resource-id voor een bovenliggende resource in hetzelfde abonnement en dezelfde resourcegroep op te halen.

"[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')]"

Geef de naam van de resourcegroep op om de resource-id voor een resource in hetzelfde abonnement maar een andere resourcegroep op te halen.

"[resourceId('otherResourceGroup', 'Microsoft.Storage/storageAccounts', 'examplestorage')]"

Geef de abonnements-id en de naam van de resourcegroep op om de resource-id voor een resource in een ander abonnement en een andere resourcegroep op te halen.

"[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 retourneert:

{
  "$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 van 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-1111111111/resourceGroups/otherResourceGroup/providers/Microsoft. Storage/storageAccounts/examplestorage
nestedResourceOutput Tekenreeks /subscriptions/{current-sub-id}/resourceGroups/examplegroup/providers/Microsoft. SQL/servers/serverName/databases/databaseName

abonnement

subscription()

Retourneert details over het abonnement voor de huidige implementatie.

Retourwaarde

De functie retourneert de volgende indeling:

{
  "id": "/subscriptions/{subscription-id}",
  "subscriptionId": "{subscription-id}",
  "tenantId": "{tenant-id}",
  "displayName": "{name-of-subscription}"
}

Opmerkingen

Wanneer u geneste sjablonen gebruikt om naar meerdere abonnementen te implementeren, kunt u het bereik opgeven voor het evalueren van de abonnementsfunctie. Zie Azure-resources implementeren in meer dan één abonnement of resourcegroep voor meer informatie.

Voorbeeld van een abonnement

In het volgende voorbeeld ziet u de abonnementsfunctie met de naam in de sectie outputs.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "resources": [],
  "outputs": {
    "subscriptionOutput": {
      "type": "object",
      "value": "[subscription()]"
    }
  }
}

subscriptionResourceId

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

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

Parameters

Parameter Vereist Type Beschrijving
subscriptionId Nee 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 de naamruimte van de resourceprovider.
resourceName1 Ja tekenreeks De naam van de resource.
resourceName2 Nee tekenreeks Het 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 functie resourceId door geen resourcegroepwaarde op te laten.

subscriptionResourceID-voorbeeld

Met de volgende sjabloon wordt een ingebouwde rol toegewezen. U kunt deze implementeren in een resourcegroep of abonnement. De functie wordt subscriptionResourceId gebruikt 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')]"
      }
    }
  ]
}

tenantResourceId

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

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

Parameters

Parameter Vereist Type Beschrijving
resourceType Ja tekenreeks Type resource, inclusief de naamruimte van de resourceprovider.
resourceName1 Ja tekenreeks De naam van de resource.
resourceName2 Nee tekenreeks Het 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 in de tenant is geïmplementeerd. De geretourneerde id verschilt van de waarden die worden geretourneerd door andere resource-id-functies door geen resourcegroep- of abonnementswaarden op te nemen.

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 alsu meerdere sjablonen wilt samenvoegen.
  • Zie Resource-iteratie inARM-sjablonen als u een opgegeven aantal keren wilt itereren bij het maken van een type resource.
  • Zie Resources implementeren met ARM-sjablonen en meer informatie over het implementeren van de sjabloon die u hebt Azure PowerShell.