Funkce prostředků pro šablony ARM
Správce prostředků poskytuje následující funkce pro získání hodnot prostředků ve vaší šabloně Azure Resource Manager (šablona ARM):
- extensionResourceId
- seznamu
- pickZones
- poskytovatelé (zastaralé)
- odkaz
- resourceId
- subscriptionResourceId
- tenantResourceId
Chcete-li získat hodnoty z parametrů, proměnných nebo aktuálního nasazení, přečtěte si téma funkce hodnot nasazení.
Pokud chcete získat hodnoty rozsahu nasazení, přečtěte si téma funkce oboru.
extensionResourceId
extensionResourceId(baseResourceId, resourceType, resourceName1, [resourceName2], ...)
Vrátí ID prostředku pro prostředek rozšíření, což je typ prostředku, který se použije na jiný prostředek, aby se mohl přidat k jeho funkcím.
Parametry
| Parametr | Povinné | Typ | Popis |
|---|---|---|---|
| baseResourceId | Ano | řetězec | ID prostředku prostředku, na který se prostředek rozšíření používá |
| resourceType | Ano | řetězec | Typ prostředku rozšíření včetně oboru názvů poskytovatele prostředků |
| resourceName1 | Ano | řetězec | Název prostředku rozšíření. |
| resourceName2 | Ne | řetězec | Další segment názvu prostředku (v případě potřeby). |
Pokračujte v přidávání názvů prostředků jako parametrů, pokud typ prostředku obsahuje více segmentů.
Vrácená hodnota
Základní formát ID prostředku vrácený touto funkcí je:
{scope}/providers/{extensionResourceProviderNamespace}/{extensionResourceType}/{extensionResourceName}
Segment oboru se liší podle rozšiřujícího základního prostředku. ID předplatného má například různé segmenty, než je ID pro skupinu prostředků.
Pokud se prostředek rozšíření použije u prostředku, ID prostředku se vrátí v následujícím formátu:
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{baseResourceProviderNamespace}/{baseResourceType}/{baseResourceName}/providers/{extensionResourceProviderNamespace}/{extensionResourceType}/{extensionResourceName}
Pokud se prostředek rozšíření aplikuje na skupinu prostředků, vrácený formát:
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{extensionResourceProviderNamespace}/{extensionResourceType}/{extensionResourceName}
Příklad použití této funkce se skupinou prostředků je uveden v následující části.
Pokud se prostředek rozšíření použije u předplatného, vrácený formát:
/subscriptions/{subscriptionId}/providers/{extensionResourceProviderNamespace}/{extensionResourceType}/{extensionResourceName}
Pokud je prostředek rozšíření použit pro skupinu pro správu, vrácený formát:
/providers/Microsoft.Management/managementGroups/{managementGroupName}/providers/{extensionResourceProviderNamespace}/{extensionResourceType}/{extensionResourceName}
Příklad použití této funkce se skupinou pro správu je uveden v následující části.
Příklad extensionResourceId
Následující příklad vrátí ID prostředku pro zámek skupiny prostředků.
{
"$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'))]"
}
}
}
Vlastní definice zásad nasazená do skupiny pro správu je implementována jako prostředek rozšíření. Chcete-li vytvořit a přiřadit zásadu, nasaďte následující šablonu do skupiny pro správu.
{
"$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'))]"
]
}
]
}
Předdefinované definice zásad jsou prostředky na úrovni tenanta. Příklad nasazení předdefinované definice zásad najdete v tématu tenantResourceId.
seznamu
list{Value}(resourceName or resourceIdentifier, apiVersion, functionValues)
Syntaxe této funkce se liší podle názvu operací seznamu. Každá implementace vrací hodnoty pro typ prostředku, který podporuje operaci list. Název operace musí začínat řetězcem list a může mít příponu. Některé běžné použití jsou list , listKeys , listKeyValue a listSecrets .
Parametry
| Parametr | Povinné | Typ | Popis |
|---|---|---|---|
| resourceName nebo resourceIdentifier | Ano | řetězec | Jedinečný identifikátor prostředku |
| apiVersion | Ano | řetězec | Verze rozhraní API stavu modulu runtime prostředku Obvykle ve formátu yyyy-MM-DD. |
| functionValues | Ne | object | Objekt, který má hodnoty pro funkci. Tento objekt Poskytněte jenom pro funkce, které podporují příjem objektu s hodnotami parametrů, jako je například listAccountSas v účtu úložiště. Příklad předávání hodnot funkcí je uveden v tomto článku. |
Platná použití
Funkce seznamu se dá použít ve vlastnostech definice prostředků. Nepoužívejte funkci seznamu, která zveřejňuje citlivé informace v části výstupy šablony. Výstupní hodnoty jsou uložené v historii nasazení a můžou je načíst uživatel se zlými úmysly.
Při použití s iterací vlastnostimůžete použít funkce seznamu, input protože výraz je přiřazen vlastnosti prostředku. Nelze je použít s, count protože počet musí být určen před vyřešením funkce seznamu.
Implementace
Možná použití seznamu * jsou uvedena v následující tabulce.
| Typ prostředku | Název funkce |
|---|---|
| Microsoft. addons/supportProviders | listsupportplaninfo |
| Microsoft. AnalysisServices/servery | listGatewayStatus |
| Microsoft. ApiManagement/Service/authorizationServers | listSecrets |
| Microsoft. ApiManagement/Service/gateways | Klíče listkey |
| 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 (klíče seznamu) |
| 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/registry | listBuildSourceUploadUrl |
| Microsoft.ContainerRegistry/registry | listCredentials |
| Microsoft.ContainerRegistry/registry | seznam položek |
| Microsoft.ContainerRegistry/registries/agentpools | listQueueStatus |
| Microsoft.ContainerRegistry/registries/buildTasks | listSourceRepositoryProperties |
| Microsoft.ContainerRegistry/registries/buildTasks/steps | listBuildArguments |
| Microsoft.ContainerRegistry/registries/taskruns | listDetails |
| Microsoft.ContainerRegistry/registry/webhooks | listEvents |
| Microsoft.ContainerRegistry/registries/runs | listLogSasUrl |
| Microsoft.ContainerRegistry/registry/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 (klíče seznamu) |
| Microsoft.Devices/iotHubs/iotHubKeys | listkeys (klíče seznamu) |
| Microsoft.Devices/provisioningServices/keys | listkeys (klíče seznamu) |
| Microsoft.Devices/provisioningServices | listkeys (klíče seznamu) |
| Microsoft.DevTestLab/labs | Soubory ListVhds |
| Microsoft.DevTestLab/labs/schedules | ListApplicable |
| Microsoft.DevTestLab/labs/users/serviceFabrics | SeznamApplicableSchedules |
| Microsoft.DevTestLab/labs/virtualMachines | SeznamApplicableSchedules |
| Microsoft.DocumentDB/databaseAccounts | listConnectionStrings |
| Microsoft.DocumentDB/databaseAccounts | listKeys |
| Microsoft.DocumentDB/databaseAccounts/notebookWorkspaces | listConnectionInfo |
| Microsoft.DomainRegistration | listDomainRecommendations (doporučení k doméně seznamu) |
| Microsoft.DomainRegistration/topLevelDomains | listAgreements (seznam prostředků) |
| Microsoft.EventGrid/domains | listKeys |
| Microsoft.EventGrid/topics | listKeys |
| Microsoft.EventHub/namespaces/authorizationRules | klíče listkey |
| Microsoft. EventHub/obory názvů/disasterRecoveryConfigs/autorizačních pravidel | klíče listkey |
| Microsoft. EventHub/obory názvů/eventhubs/autorizačních pravidel | klíče listkey |
| Microsoft. ImportExport/Jobs | listBitLockerKeys |
| Microsoft. Kusto/clustery/databáze | ListPrincipals |
| Microsoft. LabServices/uživatelé | ListEnvironments |
| Microsoft. LabServices/uživatelé | 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/partneři | listContentCallbackUrl |
| Microsoft. Logic/integrationAccounts/schemas | listContentCallbackUrl |
| Microsoft. Logic/Workflows | listCallbackUrl |
| Microsoft. Logic/Workflows | listSwagger |
| Microsoft. Logic/Workflows/běhy/Actions | listExpressionTraces |
| Microsoft. Logic/Workflows/běhy/Actions/opakování | listExpressionTraces |
| Microsoft. Logic/Workflows/Triggers | listCallbackUrl |
| Microsoft. Logic/Workflows/Versions/Triggers | listCallbackUrl |
| Microsoft. MachineLearning/WebServices | klíče listkey |
| Microsoft. MachineLearning/pracovní prostory | listworkspacekeys |
| Microsoft. MachineLearningServices/pracovní prostory/výpočetní služby | Klíče listkey |
| Microsoft. MachineLearningServices/pracovní prostory/výpočetní služby | listNodes |
| Microsoft. MachineLearningServices/pracovní prostory | Klíče listkey |
| Microsoft. Mapy/accounts | Klíče listkey |
| 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/obory názvů/autorizačních pravidel | klíče listkey |
| Microsoft. NotificationHubs/obory názvů/NotificationHubs/autorizačních pravidel | klíče listkey |
| Microsoft. OperationalInsights/pracovní prostory | list |
| Microsoft. OperationalInsights/pracovní prostory | Klíče listkey |
| Microsoft. PolicyInsights/nápravy | listDeployments |
| Microsoft. RedHatOpenShift/openShiftClusters | listCredentials |
| Microsoft. Relay/obory názvů/autorizačních pravidel | klíče listkey |
| Microsoft. Relay/obory názvů/disasterRecoveryConfigs/autorizačních pravidel | klíče listkey |
| Microsoft. Relay/obory názvů/HybridConnections/autorizačních pravidel | klíče listkey |
| Microsoft. Relay/obory názvů/WcfRelays/autorizačních pravidel | klíče listkey |
| Microsoft. Search/searchServices | listAdminKeys |
| Microsoft. Search/searchServices | listQueryKeys |
| Microsoft. ServiceBus/obory názvů/autorizačních pravidel | klíče listkey |
| Microsoft. ServiceBus/obory názvů/disasterRecoveryConfigs/autorizačních pravidel | klíče listkey |
| Microsoft. ServiceBus/obory názvů/Queues/autorizačních pravidel | klíče listkey |
| Microsoft. ServiceBus/obory názvů/témata/autorizačních pravidel | klíče listkey |
| Microsoft. SignalRService/Signaler | klíče listkey |
| Microsoft. Storage/storageAccounts | listAccountSas |
| Microsoft. Storage/storageAccounts | klíče listkey |
| 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 | Stav seznamu |
| 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 (klíče seznamu) |
| microsoft.web/sites/functions | listSecrets |
| microsoft.web/sites/hybridconnectionnamespaces/relays | listkeys (klíče seznamu) |
| microsoft.web/sites | listsyncfunctiontriggerstatus |
| microsoft.web/sites/slots/functions | listSecrets |
| microsoft.web/sites/slots/backups | list |
| Microsoft.Web/sites/slots/config | list |
| microsoft.web/sites/slots/functions | listSecrets |
Pokud chcete zjistit, které typy prostředků mají operaci list, máte následující možnosti:
Podívejte se REST API operací poskytovatele prostředků a vyhledejte operace seznamu. Například účty úložiště mají operaci listKeys.
Použijte rutinu PowerShellu Get-AzProviderOperation. Následující příklad načte všechny operace se seznamem pro účty úložiště:
Get-AzProviderOperation -OperationSearchString "Microsoft.Storage/*" | where {$_.Operation -like "*list*"} | FT OperationPomocí následujícího příkazu Azure CLI můžete filtrovat pouze operace seznamu:
az provider operation show --namespace Microsoft.Storage --query "resourceTypes[?name=='storageAccounts'].operations[].name | [?contains(@, 'list')]"
Vrácená hodnota
Vrácený objekt se liší podle funkce list, kterou používáte. Například listKeys pro účet úložiště vrátí následující formát:
{
"keys": [
{
"keyName": "key1",
"permissions": "Full",
"value": "{value}"
},
{
"keyName": "key2",
"permissions": "Full",
"value": "{value}"
}
]
}
Jiné funkce seznamu mají různé návratové formáty. Pokud chcete zobrazit formát funkce, zahrnovat ji do části výstupů, jak je znázorněno v příkladu šablony.
Poznámky
Prostředek můžete zadat pomocí názvu prostředku nebo funkce resourceId. Při použití funkce list ve stejné šabloně, která nasazuje odkazovaný prostředek, použijte název prostředku.
Pokud použijete funkci v prostředku, který je nasazený podmíněně, funkce se vyhodnotí i v případě, že prostředek list není nasazený. Pokud funkce odkazuje na list prostředek, který neexistuje, zobrazí se chyba. Pomocí funkce if se ujistěte, že se funkce vyhodnocuje pouze při nasazování prostředku. Ukázkovou šablonu, která používá if a se seznamem podmíněně nasazených prostředků, najdete ve funkci if.
Příklad seznamu
Následující příklad používá listKeys při nastavování hodnoty pro skripty nasazení.
"storageAccountSettings": {
"storageAccountName": "[variables('storageAccountName')]",
"storageAccountKey": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')), '2019-06-01').keys[0].value]"
}
Další příklad ukazuje funkci list, která přebírá parametr . V tomto případě je funkce listAccountSas. Předejte objekt po dobu vypršení platnosti. Doba vypršení platnosti musí být v budoucnu.
"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])
Určuje, jestli typ prostředku podporuje zóny pro zadané umístění nebo oblast. Tato funkce podporuje pouze zónové prostředky, zónově redundantní služby vrátí prázdné pole. Další informace najdete v tématu Služby Azure, které podporují Zóny dostupnosti. Pokud chcete použít funkci pickZones se zónově redundantními službami, podívejte se na následující příklady.
Parametry
| Parametr | Povinné | Typ | Popis |
|---|---|---|---|
| providerNamespace | Ano | řetězec | Obor názvů poskytovatele prostředků pro typ prostředku, ve které se má zkontrolovat podpora zón. |
| resourceType | Ano | řetězec | Typ prostředku, který se má zkontrolovat pro podporu zón. |
| location | Ano | řetězec | Oblast, ve které se má zkontrolovat podpora zón. |
| numberOfZones | Ne | integer | Počet logických zón, které se má vrátit Výchozí hodnota je 1. Číslo musí být kladné celé číslo od 1 do 3. Pro prostředky s jednou zónou použijte 1. U prostředků s více zónami musí být hodnota menší nebo rovna počtu podporovaných zón. |
| posun | Ne | integer | Posun od počáteční logické zóny. Funkce vrátí chybu, pokud posun plus numberOfZones překračuje počet podporovaných zón. |
Vrácená hodnota
Pole s podporovanými zónami. Při použití výchozích hodnot pro posun a numberOfZones typ prostředku a oblast, která podporuje zóny, vrátí následující pole:
[
"1"
]
Pokud numberOfZones je parametr nastaven na hodnotu 3, vrátí:
[
"1",
"2",
"3"
]
Pokud typ prostředku nebo oblast nepodporuje zóny, bude vráceno prázdné pole. Pro redundantní služby zóny se vrátí také prázdné pole.
[
]
Poznámky
Existují různé kategorie pro Zóny dostupnosti Azure-Zona a redundantní v zóně. Funkci pickZones lze použít k vrácení čísla nebo čísel zóny dostupnosti pro prostředek Zona. Pro zónu redundantní služby (ZRS) vrátí funkce prázdné pole. Prostředky oblast lze obvykle identifikovat pomocí zones vlastnosti v hlavičce prostředku. Redundantní služby zóny mají různé možnosti pro identifikaci a používání zón dostupnosti na prostředek. k určení kategorie podpory zón dostupnosti použijte dokumentaci ke konkrétní službě. Další informace najdete v tématu služby Azure, které podporují zóny dostupnosti.
Chcete-li zjistit, zda daná oblast nebo umístění Azure podporuje zóny dostupnosti, zavolejte funkci pickZones () s typem prostředku Zona, například Microsoft.Storage/storageAccounts . Pokud je odpověď neprázdná, oblast podporuje zóny dostupnosti.
Příklad pickZones
Následující šablona ukazuje tři výsledky pro použití funkce 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')]"
}
}
}
Výstup z předchozích příkladů vrátí tři pole.
| Název | Typ | Hodnota |
|---|---|---|
| Podporuje se | array | ["1"] |
| notSupportedRegion | array | [] |
| notSupportedType | array | [] |
Pomocí odpovědi z pickZones můžete určit, jestli se má pro zóny zadat hodnota null, nebo přiřadit virtuální počítače k různým zónám. Následující příklad nastaví hodnotu pro zónu na základě dostupnosti zón.
"zones": {
"value": "[if(not(empty(pickZones('Microsoft.Compute', 'virtualMachines', 'westus2'))), string(add(mod(copyIndex(),3),1)), json('null'))]"
},
následující příklad ukazuje, jak pomocí funkce pickZones povolit redundanci zóny pro 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')]"
}
}
]
dodavateli
Funkce Providers je zastaralá. Už ho nedoporučujeme používat. Pokud jste tuto funkci použili k získání verze rozhraní API pro poskytovatele prostředků, doporučujeme v šabloně zadat konkrétní verzi rozhraní API. Když použijete dynamicky vrácenou verzi rozhraní API, může se vaše šablona přerušit, pokud se změní vlastnosti mezi verzemi.
reference
reference(resourceName or resourceIdentifier, [apiVersion], ['Full'])
Vrátí objekt představující běhový stav prostředku.
Parametry
| Parametr | Povinné | Typ | Popis |
|---|---|---|---|
| resourceName nebo resourceIdentifier | Ano | řetězec | Název nebo jedinečný identifikátor prostředku Při odkazování na prostředek v aktuální šabloně zadejte jako parametr jenom název prostředku. Když odkazujete na dříve nasazený prostředek nebo pokud je název prostředku dvojznačný, zadejte ID prostředku. |
| apiVersion | Ne | řetězec | Verze rozhraní API zadaného prostředku Tento parametr je vyžadován, pokud prostředek není zřízen v rámci stejné šablony. Obvykle ve formátu yyyy-MM-DD. Platné verze rozhraní API pro váš prostředek naleznete v tématu Reference k šabloně. |
| Kompletní | Ne | řetězec | Hodnota, která určuje, zda má být vrácen úplný objekt prostředku. Pokud nezadáte 'Full' , vrátí se pouze objekt vlastnosti prostředku. Úplný objekt obsahuje hodnoty, jako je ID a umístění prostředku. |
Vrácená hodnota
Každý typ prostředku vrátí různé vlastnosti referenční funkce. Funkce nevrací jeden, předdefinovaný formát. Vrácená hodnota se také liší v závislosti na hodnotě 'Full' argumentu. Chcete-li zobrazit vlastnosti pro typ prostředku, vraťte objekt v části výstupy, jak je znázorněno v příkladu.
Poznámky
Odkazovaná funkce načte běhový stav buď dříve nasazeného prostředku, nebo prostředku nasazeného v aktuální šabloně. Tento článek ukazuje příklady pro oba scénáře.
Obvykle použijete reference funkci k vrácení konkrétní hodnoty z objektu, jako je například identifikátor URI koncového bodu objektu BLOB nebo plně kvalifikovaný název domény.
"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]"
}
}
Použijte 'Full' v případě, že potřebujete hodnoty prostředků, které nejsou součástí schématu vlastností. Pokud třeba chcete nastavit zásady přístupu trezoru klíčů, Získejte vlastnosti identity pro virtuální počítač.
{
"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"
]
}
}
],
...
Platná použití
Odkazovaná funkce se dá použít jenom ve vlastnostech definice prostředků a v části výstupy šablony nebo nasazení. Při použití s iterací vlastnostimůžete použít referenční funkci pro, input protože výraz je přiřazen vlastnosti prostředku.
Pomocí referenční funkce nelze nastavit hodnotu count vlastnosti ve smyčce kopírování. Můžete použít k nastavení dalších vlastností ve smyčce. Odkaz je blokován pro vlastnost Count, protože tato vlastnost musí být určena před vyřešením Referenční funkce.
Chcete-li použít reference funkci nebo jakoukoliv list* funkci v sekci výstupy vnořené šablony, je nutné nastavit, expressionEvaluationOptions aby používalo vnitřní vyhodnocení oboru , nebo použít odkaz namísto vnořené šablony.
Použijete-li reference funkci v prostředku, který je podmíněně nasazen, je funkce vyhodnocena i v případě, že prostředek není nasazen. Pokud reference funkce odkazuje na prostředek, který neexistuje, zobrazí se chyba. Pomocí funkce se ujistěte if , že je funkce vyhodnocena pouze při nasazení prostředku. Podívejte se na funkci IF pro ukázkovou šablonu, která používá if a odkaz s podmíněně nasazeným prostředkem.
Implicitní závislost
Pomocí referenční funkce implicitně deklarujete, že jeden prostředek závisí na jiném prostředku, je-li odkazovaný prostředek zřízen ve stejné šabloně a odkazujete na prostředek podle jeho názvu (nikoli ID prostředku). Nemusíte také používat vlastnost dependsOn. Funkce není vyhodnocena, dokud není dokončeno nasazení odkazovaného prostředku.
Název nebo identifikátor prostředku
Když odkazujete na prostředek, který je nasazený ve stejné šabloně, zadejte název prostředku.
"value": "[reference(parameters('storageAccountName'))]"
Když odkazujete na prostředek, který není nasazený ve stejné šabloně, zadejte ID prostředku a apiVersion .
"value": "[reference(resourceId(parameters('storageResourceGroup'), 'Microsoft.Storage/storageAccounts', parameters('storageAccountName')), '2018-07-01')]"
Aby nedocházelo k nejednoznačnosti prostředků, na které odkazujete, můžete zadat plně kvalifikovaný identifikátor prostředku.
"value": "[reference(resourceId('Microsoft.Network/publicIPAddresses', parameters('ipAddressName')))]"
Při sestavování plně kvalifikovaného odkazu na prostředek, pořadí pro kombinování segmentů z typu a název není pouhým zřetězením obou. Místo toho je nutné po oboru názvů použít sekvenci dvojic typů a názvů z nejméně specifických na nejvíc:
{resource-provider-namespace}/{parent-resource-type}/{parent-resource-name}[/{child-resource-type}/{child-resource-name}]
Například:
Microsoft.Compute/virtualMachines/myVM/extensions/myExt je správné, není Microsoft.Compute/virtualMachines/extensions/myVM/myExt správné.
Pro zjednodušení vytváření ID prostředku použijte resourceId() funkce popsané v tomto dokumentu namísto concat() funkce.
Získat spravovanou identitu
Spravované identity pro prostředky Azure jsou typy prostředků rozšíření , které se pro některé prostředky vytvoří implicitně. Vzhledem k tomu, že spravovaná identita není v šabloně explicitně definovaná, musíte odkazovat na prostředek, na který se identita použije. Pomocí Full získáte všechny vlastnosti, včetně implicitně vytvořené identity.
Vzor je následující:
"[reference(resourceId(<resource-provider-namespace>, <resource-name>), <API-version>, 'Full').Identity.propertyName]"
Pokud například chcete získat ID objektu zabezpečení pro spravovanou identitu použitou na virtuální počítač, použijte:
"[reference(resourceId('Microsoft.Compute/virtualMachines', variables('vmName')),'2019-12-01', 'Full').identity.principalId]",
Nebo pokud chcete získat ID tenanta pro spravovanou identitu, která se použije na škálovací sadu virtuálních počítačů, použijte:
"[reference(resourceId('Microsoft.Compute/virtualMachineScaleSets', variables('vmNodeType0Name')), 2019-12-01, 'Full').Identity.tenantId]"
Příklad odkazu
Následující příklad nasadí prostředek a odkazuje na tento prostředek.
{
"$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')]"
}
}
}
Předchozí příklad vrátí dva objekty. Objekt properties má následující formát:
{
"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
}
Celý objekt je v následujícím formátu:
{
"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"
}
Následující příklad šablony odkazuje na účet úložiště, který není v této šabloně nasazený. Účet úložiště již existuje ve stejném předplatném.
{
"$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
Viz funkce oboru resourceGroup.
resourceId
resourceId([subscriptionId], [resourceGroupName], resourceType, resourceName1, [resourceName2], ...)
Vrátí jedinečný identifikátor prostředku. Tuto funkci použijete, pokud je název prostředku nejednoznačný nebo není v rámci stejné šablony zřízen. Formát vráceného identifikátoru se liší v závislosti na tom, jestli nasazení probíhá v oboru skupiny prostředků, předplatného, skupiny pro správu nebo tenanta.
Parametry
| Parametr | Povinné | Typ | Popis |
|---|---|---|---|
| subscriptionId | Ne | string (ve formátu GUID) | Výchozí hodnota je aktuální předplatné. Tuto hodnotu zadejte, když potřebujete načíst prostředek v jiném předplatném. Tuto hodnotu zadejte pouze při nasazování v oboru skupiny prostředků nebo předplatného. |
| resourceGroupName | Ne | řetězec | Výchozí hodnota je aktuální skupina prostředků. Tuto hodnotu zadejte, když potřebujete načíst prostředek v jiné skupině prostředků. Tuto hodnotu zadejte pouze při nasazování v oboru skupiny prostředků. |
| resourceType | Ano | řetězec | Typ prostředku, včetně oboru názvů poskytovatele prostředků. |
| název_prostředku1 | Ano | řetězec | Název prostředku. |
| název_prostředku2 | Ne | řetězec | V případě potřeby další segment názvu prostředku. |
Pokud typ prostředku obsahuje více segmentů, pokračujte v přidávání názvů prostředků jako parametrů.
Vrácená hodnota
Při nasazení šablony v oboru skupiny prostředků se ID prostředku vrátí v následujícím formátu:
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}
Funkci resourceId můžete použít pro jiné obory nasazení, ale formát ID se změní.
Pokud při nasazování do předplatného použijete resourceId, vrátí se ID prostředku v následujícím formátu:
/subscriptions/{subscriptionId}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}
Pokud při nasazování do skupiny pro správu nebo tenanta použijete resourceId, vrátí se ID prostředku v následujícím formátu:
/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}
Abyste se vyhnuli nejasnostem, doporučujeme, abyste při práci s prostředky nasazenmi v předplatném, skupině pro správu nebo resourceId tenantovi nepoučovali . Místo toho použijte funkci ID, která je určená pro obor.
Pro prostředky na úrovni předplatnéhopoužijte funkci subscriptionResourceId.
Pro prostředky na úrovni skupiny pro správupoužijte funkci extensionResourceId k odkazování na prostředek, který je implementován jako rozšíření skupiny pro správu. Například vlastní definice zásad, které jsou nasazené do skupiny pro správu, jsou rozšíření skupiny pro správu. Pomocí funkce tenantResourceId můžete odkazovat na prostředky, které jsou nasazené do tenanta, ale jsou k dispozici ve vaší skupině pro správu. Například předdefinované definice zásad jsou implementované jako prostředky na úrovni tenanta.
Pro prostředky na úrovni tenantapoužijte funkci tenantResourceId. Pro předdefinované definice zásad použijte tenantResourceId, protože jsou implementované na úrovni tenanta.
Poznámky
Počet parametrů, které poskytnete, se liší v závislosti na tom, jestli je prostředek nadřazený nebo podřízený a jestli se prostředek nachází ve stejném předplatném nebo skupině prostředků.
Pokud chcete získat ID prostředku pro nadřazený prostředek ve stejném předplatném a skupině prostředků, zadejte typ a název prostředku.
"[resourceId('Microsoft.ServiceBus/namespaces', 'namespace1')]"
Pokud chcete získat ID prostředku pro podřízený prostředek, věnujte pozornost počtu segmentů v typu prostředku. Zadejte název prostředku pro každý segment typu prostředku. Název segmentu odpovídá prostředku, který existuje pro tu část hierarchie.
"[resourceId('Microsoft.ServiceBus/namespaces/queues/authorizationRules', 'namespace1', 'queue1', 'auth1')]"
Pokud chcete získat ID prostředku pro prostředek ve stejném předplatném, ale v jiné skupině prostředků, zadejte název skupiny prostředků.
"[resourceId('otherResourceGroup', 'Microsoft.Storage/storageAccounts', 'examplestorage')]"
Pokud chcete získat ID prostředku v jiném předplatném a skupině prostředků, zadejte ID předplatného a název skupiny prostředků.
"[resourceId('xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx', 'otherResourceGroup', 'Microsoft.Storage/storageAccounts','examplestorage')]"
Tuto funkci často potřebujete použít při použití účtu úložiště nebo virtuální sítě v alternativní skupině prostředků. Následující příklad ukazuje, jak lze snadno použít prostředek z externí skupiny prostředků:
{
"$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')]"
}
}
}
]
}
}
]
}
Příklad ID prostředku
Následující příklad vrátí ID prostředku pro účet úložiště ve skupině prostředků:
{
"$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')]"
}
}
}
Výstup z předchozího příkladu s výchozími hodnotami je:
| Název | Typ | Hodnota |
|---|---|---|
| sameRGOutput | Řetězec | /subscriptions/{current-sub-id}/resourceGroups/examplegroup/providers/Microsoft. Storage/storageAccounts/examplestorage |
| differentRGOutput | Řetězec | /subscriptions/{current-sub-id}/resourceGroups/otherResourceGroup/providers/Microsoft. Storage/storageAccounts/examplestorage |
| differentSubOutput | Řetězec | /subscriptions/11111111-1111-1111-11111111111111/resourceGroups/otherResourceGroup/providers/Microsoft. Storage/storageAccounts/examplestorage |
| nestedResourceOutput | Řetězec | /subscriptions/{current-sub-id}/resourceGroups/examplegroup/providers/Microsoft. SQL/servery/název_serveru/databáze/název_databáze |
předplatné
Viz funkce oboru předplatného.
ID prostředku předplatného
subscriptionResourceId([subscriptionId], resourceType, resourceName1, [resourceName2], ...)
Vrátí jedinečný identifikátor prostředku nasazeného na úrovni předplatného.
Parametry
| Parametr | Povinné | Typ | Popis |
|---|---|---|---|
| subscriptionId | No | string (ve formátu GUID) | Výchozí hodnota je aktuální předplatné. Tuto hodnotu zadejte, když potřebujete načíst prostředek v jiném předplatném. |
| resourceType | Ano | řetězec | Typ prostředku, včetně oboru názvů poskytovatele prostředků. |
| název_prostředku1 | Ano | řetězec | Název prostředku. |
| název_prostředku2 | No | řetězec | V případě potřeby další segment názvu prostředku. |
Pokud typ prostředku obsahuje více segmentů, pokračujte v přidávání názvů prostředků jako parametrů.
Vrácená hodnota
Identifikátor se vrátí v následujícím formátu:
/subscriptions/{subscriptionId}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}
Poznámky
Pomocí této funkce získáte ID prostředku pro prostředky, které se nasadí do předplatného, a ne do skupiny prostředků. Vrácené ID se liší od hodnoty vrácené funkcí resourceId tím, že nezadá hodnotu skupiny prostředků.
Příklad subscriptionResourceID
Následující šablona přiřadí předdefinovou roli. Můžete ho nasadit do skupiny prostředků nebo předplatného. K získání subscriptionResourceId ID prostředku pro předdefinované role používá funkci .
{
"$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')]"
}
}
]
}
id prostředku tenanta
tenantResourceId(resourceType, resourceName1, [resourceName2], ...)
Vrátí jedinečný identifikátor prostředku nasazeného na úrovni tenanta.
Parametry
| Parametr | Povinné | Typ | Popis |
|---|---|---|---|
| resourceType | Ano | řetězec | Typ prostředku, včetně oboru názvů poskytovatele prostředků. |
| název_prostředku1 | Ano | řetězec | Název prostředku. |
| název_prostředku2 | Ne | řetězec | V případě potřeby další segment názvu prostředku. |
Pokud typ prostředku obsahuje více segmentů, pokračujte v přidávání názvů prostředků jako parametrů.
Vrácená hodnota
Identifikátor se vrátí v následujícím formátu:
/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}
Poznámky
Pomocí této funkce získáte ID prostředku, který je nasazený do tenanta. Vrácené ID se liší od hodnot vrácených jinými funkcemi ID prostředku tím, že nezačáte hodnoty skupiny prostředků nebo předplatného.
Příklad tenantResourceId
Předdefinované definice zásad jsou prostředky na úrovni tenanta. Pokud chcete nasadit přiřazení zásady, které odkazuje na integrovanou definici zásady, použijte tenantResourceId funkci .
{
"$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'))]"
}
}
]
}
Další kroky
- Popis oddílů v šabloně ARM najdete v tématu Principy struktury a syntaxe šablon ARM.
- Pokud chcete sloučit více šablon, podívejte se na stránku Použití propojených a vnořených šablon při nasazování prostředků Azure.
- Pokud chcete iterovat zadaný počet opakování při vytváření typu prostředku, podívejte se na iteraci prostředků v šablonách ARM.
- Informace o nasazení šablony, kterou jste vytvořili, najdete v tématu Nasazení prostředků pomocí šablon ARM a Azure PowerShell.