Erőforrásfüggvények ARM-sablonokhoz
A Resource Manager az alábbi függvényeket biztosítja az erőforrásértékek Lekéréséhez az Azure Resource Manager-sablonban (ARM-sablon):
- extensionResourceId
- lista*
- pickZones
- szolgáltatók (elavult)
- utalás
- Hivatkozások
- resourceId
- subscriptionResourceId
- managementGroupResourceId
- tenantResourceId
A paraméterekből, változókból vagy az aktuális üzembe helyezésből származó értékek lekéréséhez tekintse meg az Üzembe helyezés értékfüggvényeit.
Az üzembehelyezési hatókör értékeinek lekéréséhez tekintse meg a Hatókör függvényeket.
Tipp.
A Bicep használatát javasoljuk, mert ugyanazokkal a képességekkel rendelkezik, mint az ARM-sablonok, és a szintaxis használata egyszerűbb. További információkért tekintse meg az erőforrásfüggvényeket .
extensionResourceId
extensionResourceId(baseResourceId, resourceType, resourceName1, [resourceName2], ...)
Egy bővítményerőforrás erőforrás-azonosítóját adja vissza. A bővítményerőforrás olyan erőforrástípus, amelyet egy másik erőforrásra alkalmazva bővíti képességeit.
A Bicepben használja a extensionResourceId függvényt.
Paraméterek
Paraméter | Kötelező | Típus | Leírás |
---|---|---|---|
baseResourceId | Igen | húr | Annak az erőforrásnak az erőforrás-azonosítója, amelyre a bővítményerőforrást alkalmazza a rendszer. |
resourceType | Igen | húr | A bővítményerőforrás típusa, beleértve az erőforrás-szolgáltató névterét. |
resourceName1 | Igen | húr | A bővítményerőforrás neve. |
resourceName2 | Nem | húr | Szükség esetén a következő erőforrásnév-szegmens. |
Ha az erőforrástípus több szegmenst is tartalmaz, folytassa az erőforrásnevek paraméterként való hozzáadását.
Visszaadott érték
A függvény által visszaadott erőforrás-azonosító alapformátuma:
{scope}/providers/{extensionResourceProviderNamespace}/{extensionResourceType}/{extensionResourceName}
A hatókörszegmens a kibővítendő alaperőforrástól függően változik. Az előfizetés azonosítója például más szegmensekkel rendelkezik, mint egy erőforráscsoport azonosítója.
Amikor a bővítményerőforrást egy erőforrásra alkalmazza, a rendszer az erőforrás-azonosítót a következő formátumban adja vissza:
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{baseResourceProviderNamespace}/{baseResourceType}/{baseResourceName}/providers/{extensionResourceProviderNamespace}/{extensionResourceType}/{extensionResourceName}
Amikor a bővítményerőforrást egy erőforráscsoportra alkalmazza, a visszaadott formátum a következő:
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{extensionResourceProviderNamespace}/{extensionResourceType}/{extensionResourceName}
A függvény erőforráscsoporttal való használatára a következő szakaszban látható példa.
Ha a bővítményerőforrást egy előfizetésre alkalmazza, a visszaadott formátum a következő:
/subscriptions/{subscriptionId}/providers/{extensionResourceProviderNamespace}/{extensionResourceType}/{extensionResourceName}
Amikor a bővítményerőforrást egy felügyeleti csoportra alkalmazza, a visszaadott formátum a következő:
/providers/Microsoft.Management/managementGroups/{managementGroupName}/providers/{extensionResourceProviderNamespace}/{extensionResourceType}/{extensionResourceName}
A következő szakaszban egy példa látható a függvény felügyeleti csoporttal való használatára.
extensionResourceId példa
Az alábbi példa egy erőforráscsoport-zárolás erőforrás-azonosítóját adja vissza.
{
"$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'))]"
}
}
}
A felügyeleti csoportokban üzembe helyezett egyéni szabályzatdefiníciók bővítményerőforrásként lesznek implementálva. Szabályzat létrehozásához és hozzárendeléséhez helyezze üzembe a következő sablont egy felügyeleti csoportban.
{
"$schema": "https://schema.management.azure.com/schemas/2019-08-01/managementGroupDeploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"metadata": {
"_generator": {
"name": "bicep",
"version": "0.5.6.12127",
"templateHash": "1532257987028557958"
}
},
"parameters": {
"targetMG": {
"type": "string",
"metadata": {
"description": "Target Management Group"
}
},
"allowedLocations": {
"type": "array",
"defaultValue": [
"australiaeast",
"australiasoutheast",
"australiacentral"
],
"metadata": {
"description": "An array of the allowed locations, all other locations will be denied by the created policy."
}
}
},
"variables": {
"mgScope": "[tenantResourceId('Microsoft.Management/managementGroups', parameters('targetMG'))]",
"policyDefinitionName": "LocationRestriction"
},
"resources": [
{
"type": "Microsoft.Authorization/policyDefinitions",
"apiVersion": "2020-03-01",
"name": "[variables('policyDefinitionName')]",
"properties": {
"policyType": "Custom",
"mode": "All",
"parameters": {},
"policyRule": {
"if": {
"not": {
"field": "location",
"in": "[parameters('allowedLocations')]"
}
},
"then": {
"effect": "deny"
}
}
}
},
{
"type": "Microsoft.Authorization/policyAssignments",
"apiVersion": "2020-03-01",
"name": "location-lock",
"properties": {
"scope": "[variables('mgScope')]",
"policyDefinitionId": "[extensionResourceId(variables('mgScope'), 'Microsoft.Authorization/policyDefinitions', variables('policyDefinitionName'))]"
},
"dependsOn": [
"[extensionResourceId(managementGroup().id, 'Microsoft.Authorization/policyDefinitions', variables('policyDefinitionName'))]"
]
}
]
}
A beépített szabályzatdefiníciók bérlőszintű erőforrások. Egy beépített szabályzatdefiníció üzembe helyezésére példa: tenantResourceId.
lista*
list{Value}(resourceName or resourceIdentifier, apiVersion, functionValues)
A függvény szintaxisa a listaműveletek neve szerint változik. Minden implementáció a listaműveletet támogató erőforrástípus értékeit adja vissza. A művelet nevének a következővel list
kell kezdődnie, és lehet, hogy van utótagja. Egyes gyakori használati módok a list
következők: , listKeys
listKeyValue
és listSecrets
.
A Bicepben használja a list* függvényt.
Paraméterek
Paraméter | Kötelező | Típus | Leírás |
---|---|---|---|
resourceName vagy resourceIdentifier | Igen | húr | Az erőforrás egyedi azonosítója. |
apiVersion | Igen | húr | Az erőforrás-futtatókörnyezet állapotának API-verziója. Általában yyyy-mm-dd formátumban. |
functionValues | Nem | object | Egy objektum, amely a függvény értékeit tartalmazza. Ezt az objektumot csak olyan függvényekhez adja meg, amelyek támogatják a paraméterértékekkel rendelkező objektumok fogadását, például listAccountSas egy tárfiókban. A függvényértékek átadására példa jelenik meg ebben a cikkben. |
Érvényes felhasználások
A listafüggvények egy erőforrásdefiníció tulajdonságaiban használhatók. Ne használjon olyan listafüggvényt, amely bizalmas információkat tesz elérhetővé a sablon kimenetek szakaszában. A kimeneti értékek az üzembe helyezési előzményekben vannak tárolva, és egy rosszindulatú felhasználó lekérheti őket.
Tulajdonság-iteráció esetén használhatja a listafüggvényeketinput
, mert a kifejezés hozzá van rendelve az erőforrástulajdonsághoz. Nem használhatja őket count
, mert a listafüggvény feloldása előtt meg kell határozni a darabszámot.
Megvalósítások
A lehetséges felhasználási módok list*
az alábbi táblázatban láthatók.
Erőforrás típusa | Függvénynév |
---|---|
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.BotService/botServices/channels | listChannelWithKeys |
Microsoft.Cache/redis | listKeys |
Microsoft.CognitiveServices/accounts | listKeys |
Microsoft.ContainerRegistry/regisztrációs adatbázisok | lista hitelesítő adatai |
Microsoft.ContainerRegistry/regisztrációs adatbázisok | 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 | lista hitelesítő adatai |
Microsoft.DataFactory/datafactories/gateways | listauthkeys |
Microsoft.DataFactory/factoryies/integrationruntimes | listauthkeys |
Microsoft.DataLakeAnalytics/accounts/storageAccounts/Containers | listSasTokens |
Microsoft.DataShare/accounts/shares | listSynchronizations |
Microsoft.DataShare/accounts/shareSubscriptions | listSourceShareSynchronizationSettings |
Microsoft.DataShare/accounts/shareSubscriptions | listSynchronizationDetails |
Microsoft.DataShare/accounts/shareSubscriptions | listSynchronizations |
Microsoft.Devices/iotHubs | listKeys |
Microsoft.Devices/iotHubs/iotHubKeys | listKeys |
Microsoft.Devices/provisioningServices/keys | listKeys |
Microsoft.Devices/provisioningServices | listKeys |
Microsoft.DevTestLab/labs | ListVhds |
Microsoft.DevTestLab/labs/schedules | ListApplicable |
Microsoft.DevTestLab/labs/users/serviceFabrics | ListApplicableSchedules |
Microsoft.DevTestLab/labs/virtualMachines | ListApplicableSchedules |
Microsoft.DocumentDB/databaseAccounts | listKeys |
Microsoft.DocumentDB/databaseAccounts/notebookWorkspaces | listConnectionInfo |
Microsoft.DomainRegistration/topLevelDomains | listAgreements |
Microsoft.EventHub/namespaces/authorizationRules | listKeys |
Microsoft.EventHub/namespaces/disasterRecoveryConfigs/authorizationRules | listKeys |
Microsoft.EventHub/namespaces/eventhubs/authorizationRules | listKeys |
Microsoft.ImportExport/jobs | listBitLockerKeys |
Microsoft.Kusto/Fürtök/Adatbázisok | ListPrincipals |
Microsoft.LabServices/labs/users | list |
Microsoft.LabServices/labs/virtualMachines | list |
Microsoft.Logic/integrationAccounts/agreements | listContentCallbackUrl |
Microsoft.Logic/integrationAccounts/szerelvények | listContentCallbackUrl |
Microsoft.Logic/integrationAccounts | listCallbackUrl |
Microsoft.Logic/integrationAccounts | listKeyVaultKeys |
Microsoft.Logic/integrationAccounts/maps | listContentCallbackUrl |
Microsoft.Logic/integrationAccounts/partners | listContentCallbackUrl |
Microsoft.Logic/integrationAccounts/schemas | listContentCallbackUrl |
Microsoft.Logic/workflows | listCallbackUrl |
Microsoft.Logic/workflows | listSwagger |
Microsoft.Logic/workflows/runs/actions | listExpressionTraces |
Microsoft.Logic/workflows/runs/actions/repetitions | listExpressionTraces |
Microsoft.Logic/workflows/triggerek | listCallbackUrl |
Microsoft.Logic/workflows/versions/triggers | listCallbackUrl |
Microsoft.MachineLearning/webServices | listkeys |
Microsoft.MachineLearning/Workspaces | listworkspacekeys |
Microsoft.Maps/accounts | listKeys |
Microsoft.Media/mediaservices/assets | listContainerSas |
Microsoft.Media/mediaservices/assets | listStreamingLocators |
Microsoft.Media/mediaservices/streamingLocators | listContentKeys |
Microsoft.Media/mediaservices/streamingLocators | listPaths |
Microsoft.Network/applicationSecurityGroups | listIpConfigurations |
Microsoft.NotificationHubs/Namespaces/authorizationRules | listkeys |
Microsoft.NotificationHubs/Namespaces/NotificationHubs/authorizationRules | listkeys |
Microsoft.OperationalInsights/workspaces | list |
Microsoft.OperationalInsights/workspaces | listKeys |
Microsoft.PolicyInsights/szervizelések | listDeployments |
Microsoft.RedHatOpenShift/openShiftClusters | lista hitelesítő adatai |
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.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/vezetők | listActivationKey |
Microsoft.StorSimple/vezetők | 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 | list |
Microsoft.Web/sites/config | list |
microsoft.web/sites/functions | listKeys |
microsoft.web/sites/functions | listSecrets |
microsoft.web/sites/hybridconnectionnamespaces/relays | listKeys |
microsoft.web/sites | listsyncfunctiontriggerstatus |
microsoft.web/sites/slots/functions | listSecrets |
microsoft.web/sites/slots/backups | list |
Microsoft.Web/sites/slots/config | list |
microsoft.web/sites/slots/functions | listSecrets |
Annak megállapításához, hogy mely erőforrástípusok rendelkeznek listaművelettel, az alábbi lehetőségek állnak rendelkezésre:
Tekintse meg egy erőforrás-szolgáltató REST API-műveleteit , és keresse meg a listaműveleteket. A tárfiókok például rendelkeznek a listKeys művelettel.
Használja a Get-AzProviderOperation PowerShell-parancsmagot. Az alábbi példa lekéri a tárfiókok összes listaműveletét:
Get-AzProviderOperation -OperationSearchString "Microsoft.Storage/*" | where {$_.Operation -like "*list*"} | FT Operation
A következő Azure CLI-paranccsal csak a listaműveleteket szűrheti:
az provider operation show --namespace Microsoft.Storage --query "resourceTypes[?name=='storageAccounts'].operations[].name | [?contains(@, 'list')]"
Visszaadott érték
A visszaadott objektum a list
használt függvénytől függően változik. Egy tárfiók esetében például a listKeys
következő formátumot adja vissza:
{
"keys": [
{
"keyName": "key1",
"permissions": "Full",
"value": "{value}"
},
{
"keyName": "key2",
"permissions": "Full",
"value": "{value}"
}
]
}
Más list
függvények eltérő visszatérési formátumokat használnak. Egy függvény formátumának megtekintéséhez vegye fel a kimenetek szakaszba a példasablonban látható módon.
Megjegyzések
Adja meg az erőforrást az erőforrás nevével vagy a resourceId függvénnyel. Ha ugyanabban a sablonban használ függvényt list
, amely üzembe helyezi a hivatkozott erőforrást, használja az erőforrás nevét.
Ha feltételesen üzembe helyezett erőforrásban használ list
függvényt, a rendszer akkor is kiértékeli a függvényt, ha az erőforrás nincs üzembe helyezve. Hibaüzenet jelenik meg, ha a list
függvény nem létező erőforrásra hivatkozik. if
A függvény használatával győződjön meg arról, hogy a függvény csak az erőforrás üzembe helyezésekor lesz kiértékelve. Tekintse meg a feltételesen üzembe helyezett erőforrást használó list
if
mintasablon if függvényét.
Példa lista
Az alábbi példa az üzembehelyezési szkriptek értékének beállításakor használhatólistKeys
.
"storageAccountSettings": {
"storageAccountName": "[variables('storageAccountName')]",
"storageAccountKey": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')), '2019-06-01').keys[0].value]"
}
A következő példa egy paramétert list
használó függvényt mutat be. Ebben az esetben a függvény a következő listAccountSas
: . Adjon át egy objektumot a lejárati időre. A lejárati időnek a jövőben kell lennie.
"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])
Meghatározza, hogy egy erőforrástípus támogatja-e a megadott helyhez vagy régióhoz tartozó zónákat. Ez a függvény csak a zonális erőforrásokat támogatja. A zónaredundáns szolgáltatások üres tömböt adnak vissza. További információt a rendelkezésre állási zónákat támogató Azure-szolgáltatásokban talál.
A Bicepben használja a pickZones függvényt .
Paraméterek
Paraméter | Kötelező | Típus | Leírás |
---|---|---|---|
providerNamespace | Igen | húr | Az erőforrástípus erőforrás-szolgáltatói névtere, amely ellenőrzi a zónatámogatást. |
resourceType | Igen | húr | A zónatámogatás ellenőrzéséhez használt erőforrástípus. |
hely | Igen | húr | A zónatámogatást ellenőrizni kívánt régió. |
numberOfZones | Nem | egész szám | A visszaadandó logikai zónák száma. Az alapértelmezett érték 1. A számnak 1 és 3 közötti pozitív egész számnak kell lennie. Használja az 1-et egyzónás erőforrásokhoz. Többzónás erőforrások esetén az értéknek kisebbnek vagy egyenlőnek kell lennie a támogatott zónák számánál. |
ellensúlyoz | Nem | egész szám | A kezdő logikai zóna eltolása. A függvény hibát ad vissza, ha az eltolás és a numberOfZones meghaladja a támogatott zónák számát. |
Visszaadott érték
Egy tömb a támogatott zónákkal. Ha az eltolás alapértelmezett értékeit használja, és numberOfZones
a zónákat támogató erőforrástípus és régió a következő tömböt adja vissza:
[
"1"
]
Ha a numberOfZones
paraméter értéke 3, a következőt adja vissza:
[
"1",
"2",
"3"
]
Ha az erőforrás típusa vagy régiója nem támogatja a zónákat, a függvény üres tömböt ad vissza. A zónaredundáns szolgáltatások esetében is üres tömb lesz visszaadva.
[
]
Megjegyzések
Az Azure Rendelkezésre állási zónákhoz különböző kategóriák tartoznak – zonális és zónaredundáns. A pickZones
függvény egy zónaerőforrás rendelkezésre állási zónájának visszaadására használható. Zónaredundáns szolgáltatások (ZRS) esetén a függvény egy üres tömböt ad vissza. A zonális erőforrások általában az zones
erőforrásdefiníció legfelső szintjén rendelkeznek tulajdonságokkal. A rendelkezésre állási zónák támogatási kategóriájának meghatározásához tekintse meg a rendelkezésre állási zónákat támogató Azure-szolgáltatásokat.
Annak megállapításához, hogy egy adott Azure-régió vagy hely támogatja-e a rendelkezésre állási zónákat, hívja meg a pickZones
függvényt egy zonális erőforrástípussal, például Microsoft.Network/publicIPAddresses
. Ha a válasz nem üres, a régió támogatja a rendelkezésre állási zónákat.
pickZones példa
Az alábbi sablon három eredményt jelenít meg a pickZones
függvény használatához.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {},
"functions": [],
"variables": {},
"resources": [],
"outputs": {
"supported": {
"type": "array",
"value": "[pickZones('Microsoft.Compute', 'virtualMachines', 'westus2')]"
},
"notSupportedRegion": {
"type": "array",
"value": "[pickZones('Microsoft.Compute', 'virtualMachines', 'westus')]"
},
"notSupportedType": {
"type": "array",
"value": "[pickZones('Microsoft.Cdn', 'profiles', 'westus2')]"
}
}
}
Az előző példák kimenete három tömböt ad vissza.
Név | Típus | Érték |
---|---|---|
támogatott | array | [ "1" ] |
notSupportedRegion | array | [] |
notSupportedType | array | [] |
A válasz pickZones
segítségével meghatározhatja, hogy null értéket adjon-e a zónákhoz, vagy virtuális gépeket rendeljen különböző zónákhoz. Az alábbi példa a zónák rendelkezésre állása alapján állítja be a zóna értékét.
"zones": {
"value": "[if(not(empty(pickZones('Microsoft.Compute', 'virtualMachines', 'westus2'))), string(add(mod(copyIndex(),3),1)), json('null'))]"
},
Az Azure Cosmos DB nem zonális erőforrás, de a pickZones
függvény segítségével meghatározhatja, hogy engedélyezi-e a zónaredundanciát a georeplicációhoz. Adja meg a Microsoft.Storage/StorageAccounts erőforrástípust annak megállapításához, hogy engedélyezi-e a zónaredundanciát.
"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')]"
}
}
]
Szolgáltatók
A szolgáltatói függvény elavult az ARM-sablonokban. A továbbiakban nem javasoljuk a használatát. Ha ezt a függvényt használta az erőforrás-szolgáltató API-verziójának lekéréséhez, javasoljuk, hogy adjon meg egy adott API-verziót a sablonban. Ha dinamikusan visszaadott API-verziót használ, az megszakíthatja a sablont, ha a tulajdonságok megváltoznak a verziók között.
A Bicepben a szolgáltatói függvény elavult.
A szolgáltatói művelet továbbra is elérhető a REST API-val. Arm-sablonon kívül is használható az erőforrás-szolgáltatóval kapcsolatos információk lekéréséhez.
utalás
A szimbolikus neveket nem tartalmazó sablonokban:
reference(resourceName or resourceIdentifier, [apiVersion], ['Full'])
A szimbolikus neveket tartalmazó sablonokban:
reference(symbolicName or resourceIdentifier, [apiVersion], ['Full'])
Egy erőforrás futtatókörnyezeti állapotát képviselő objektumot ad vissza. A függvény kimenete és viselkedése reference
nagymértékben függ attól, hogy az egyes erőforrás-szolgáltatók hogyan valósítják meg a PUT és GET válaszokat. Ha egy erőforráscsoport futtatókörnyezeti állapotát képviselő objektumtömböt szeretne visszaadni, tekintse meg a hivatkozásokat.
A Bicep biztosítja a referenciafüggvényt, de a legtöbb esetben nincs szükség a referenciafüggvényre. Javasoljuk, hogy inkább az erőforrás szimbolikus nevét használja. Lásd: referencia.
Paraméterek
Paraméter | Kötelező | Típus | Leírás |
---|---|---|---|
resourceName/resourceIdentifier vagy symbolicName/resourceIdentifier | Igen | húr | A szimbolikus neveket nem tartalmazó sablonokban adja meg az erőforrás nevét vagy egyedi azonosítóját. Amikor egy erőforrásra hivatkozik az aktuális sablonban, csak az erőforrás nevét adja meg paraméterként. Ha egy korábban üzembe helyezett erőforrásra hivatkozik, vagy ha az erőforrás neve nem egyértelmű, adja meg az erőforrás-azonosítót. A szimbolikus neveket tartalmazó sablonokban adja meg egy erőforrás szimbolikus nevét vagy egyedi azonosítóját. Amikor egy erőforrásra hivatkozik az aktuális sablonban, paraméterként csak az erőforrás szimbolikus nevét adja meg. Ha korábban üzembe helyezett erőforrásra hivatkozik, adja meg az erőforrás-azonosítót. |
apiVersion | Nem | húr | A megadott erőforrás API-verziója. Ez a paraméter akkor szükséges, ha az erőforrás nincs kiépítve ugyanazon a sablonon belül. Általában yyyy-mm-dd formátumban. Az erőforrás érvényes API-verzióit a sablonreferenciában találhatja meg. |
"Teljes" | Nem | húr | Az az érték, amely meghatározza, hogy a teljes erőforrás-objektumot adja-e vissza. Ha nem adja meg, a rendszer 'Full' csak az erőforrás tulajdonságobjektumát adja vissza. A teljes objektum olyan értékeket tartalmaz, mint az erőforrás-azonosító és a hely. |
Visszaadott érték
Minden erőforrástípus különböző tulajdonságokat ad vissza a referenciafüggvényhez. A függvény nem ad vissza egyetlen előre definiált formátumot. A visszaadott érték az argumentum értéke 'Full'
alapján is eltér. Egy erőforrástípus tulajdonságainak megtekintéséhez adja vissza az objektumot a kimenetek szakaszban a példában látható módon.
Megjegyzések
A referenciafüggvény lekéri egy korábban üzembe helyezett vagy az aktuális sablonban üzembe helyezett erőforrás futtatókörnyezeti állapotát. Ez a cikk mindkét forgatókönyvre mutat be példákat.
A függvény általában reference
egy adott értéket ad vissza egy objektumból, például a blobvégpont URI-ját vagy a teljes tartománynevet.
"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]"
}
}
Akkor használja 'Full'
, ha olyan erőforrásértékre van szüksége, amely nem része a tulajdonságok sémájának. A kulcstartó hozzáférési szabályzatainak beállításához például lekérheti egy virtuális gép identitástulajdonságát.
{
"type": "Microsoft.KeyVault/vaults",
"apiVersion": "2022-07-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"
]
}
}
],
...
Érvényes felhasználások
A reference
függvény csak egy sablon vagy egy erőforrásdefiníció üzembe helyezési és tulajdonságobjektumának kimeneti szakaszában használható. Nem használható az erőforrás-tulajdonságokhoz, például type
az location
, name
és az erőforrásdefiníció egyéb legfelső szintű tulajdonságaihoz. A tulajdonság iterációja esetén használhatja a reference
függvénytinput
, mert a kifejezés hozzá van rendelve az erőforrástulajdonsághoz.
A függvény nem használható a reference
tulajdonság értékének másolási count
ciklusban való beállítására. A hurok egyéb tulajdonságainak beállítására is használható. A count tulajdonság hivatkozása le van tiltva, mert ezt a tulajdonságot a reference
függvény feloldása előtt kell meghatározni.
Ha a reference
függvényt vagy bármely list*
függvényt egy beágyazott sablon kimeneti szakaszában szeretné használni, be kell állítania a expressionEvaluationOptions
belső hatókör kiértékelését, vagy beágyazott sablon helyett csatoltat kell használnia.
Ha feltételesen üzembe helyezett erőforrásban használja a reference
függvényt, a függvény akkor is kiértékelésre kerül, ha az erőforrás nincs üzembe helyezve. Hibaüzenet jelenik meg, ha a reference
függvény nem létező erőforrásra hivatkozik. if
A függvény használatával győződjön meg arról, hogy a függvény csak az erőforrás üzembe helyezésekor lesz kiértékelve. Tekintse meg a feltételesen üzembe helyezett erőforrást használó reference
if
mintasablon if függvényét.
Implicit függőség
A függvény használatával reference
implicit módon deklarálhatja, hogy az egyik erőforrás egy másik erőforrástól függ, ha a hivatkozott erőforrás ugyanazon sablonon belül van kiépítve, és a neve alapján hivatkozik az erőforrásra (nem az erőforrás-azonosítóra). A tulajdonságot nem kell használnia dependsOn
. A függvény kiértékelése csak akkor történik meg, ha a hivatkozott erőforrás üzembe helyezése befejeződött.
Erőforrás neve, szimbolikus neve vagy azonosítója
Ha ugyanabban a nem szimbolikus névsablonban üzembe helyezett erőforrásra hivatkozik, adja meg az erőforrás nevét.
"value": "[reference(parameters('storageAccountName'))]"
Ha olyan erőforrásra hivatkozik, amely ugyanabban a szimbolikus névsablonban van üzembe helyezve, adja meg az erőforrás szimbolikus nevét.
"value": "[reference('myStorage').primaryEndpoints]"
Vagy
"value": "[reference('myStorage', '2022-09-01', 'Full').location]"
Ha olyan erőforrásra hivatkozik, amely nem ugyanabban a sablonban van üzembe helyezve, adja meg az erőforrás-azonosítót és apiVersion
a .
"value": "[reference(resourceId(parameters('storageResourceGroup'), 'Microsoft.Storage/storageAccounts', parameters('storageAccountName')), '2022-09-01')]"
A hivatkozó erőforrással kapcsolatos kétértelműség elkerülése érdekében megadhat egy teljesen minősített erőforrás-azonosítót.
"value": "[reference(resourceId('Microsoft.Network/publicIPAddresses', parameters('ipAddressName')))]"
Egy erőforrás teljes körű hivatkozásának létrehozásakor a szegmensek típusból és névből való egyesítésének sorrendje nem csupán a kettő összefűzése. Ehelyett a névtér után használjon típus-/névpárok sorozatát a legkevésbé specifikustól a legspecifikusabbig:
{resource-provider-namespace}/{parent-resource-type}/{parent-resource-name}[/{child-resource-type}/{child-resource-name}]
Példa:
Microsoft.Compute/virtualMachines/myVM/extensions/myExt
Microsoft.Compute/virtualMachines/extensions/myVM/myExt
helyes, nem helyes
Az erőforrás-azonosítók létrehozásának egyszerűsítése érdekében használja a resourceId()
dokumentumban leírt függvényeket a concat()
függvény helyett.
Felügyelt identitás lekérése
Az Azure-erőforrások felügyelt identitásai olyan bővítmény típusú erőforrástípusok , amelyek implicit módon jönnek létre bizonyos erőforrásokhoz. Mivel a felügyelt identitás nincs explicit módon definiálva a sablonban, hivatkoznia kell arra az erőforrásra, amelyre az identitás vonatkozik. Az összes tulajdonság lekérésére használható Full
, beleértve az implicit módon létrehozott identitást is.
A minta a következő:
"[reference(resourceId(<resource-provider-namespace>, <resource-name>), <API-version>, 'Full').Identity.propertyName]"
Ha például egy virtuális gépre alkalmazott felügyelt identitás egyszerű azonosítóját szeretné lekérni, használja a következőt:
"[reference(resourceId('Microsoft.Compute/virtualMachines', variables('vmName')),'2019-12-01', 'Full').identity.principalId]",
A virtuálisgép-méretezési csoportra alkalmazott felügyelt identitás bérlőazonosítójának lekéréséhez használja a következőt:
"[reference(resourceId('Microsoft.Compute/virtualMachineScaleSets', variables('vmNodeType0Name')), 2019-12-01, 'Full').Identity.tenantId]"
Hivatkozási példa
Az alábbi példa egy erőforrást helyez üzembe, és erre az erőforrásra hivatkozik.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"storageAccountName": {
"type": "string"
},
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]"
}
},
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2022-09-01",
"name": "[parameters('storageAccountName')]",
"location": "[parameters('location')]",
"sku": {
"name": "Standard_LRS"
},
"kind": "Storage",
"tags": {},
"properties": {
}
}
],
"outputs": {
"referenceOutput": {
"type": "object",
"value": "[reference(parameters('storageAccountName'))]"
},
"fullReferenceOutput": {
"type": "object",
"value": "[reference(parameters('storageAccountName'), '2022-09-01', 'Full')]"
}
}
}
Az előző példa a két objektumot adja vissza. A tulajdonságok objektuma a következő formátumban van:
{
"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
}
A teljes objektum formátuma a következő:
{
"apiVersion":"2022-09-01",
"location":"southcentralus",
"sku": {
"name":"Standard_LRS",
"tier":"Standard"
},
"tags":{},
"kind":"Storage",
"properties": {
"creationTime":"2021-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"
}
Az alábbi példasablon egy olyan tárfiókra hivatkozik, amely nincs üzembe helyezve ebben a sablonban. A tárfiók már létezik ugyanabban az előfizetésben.
{
"$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')]"
}
}
}
Hivatkozások
references(symbolic name of a resource collection, ['Full', 'Properties])
A references
függvény ugyanúgy működik, mint a reference
. Ahelyett, hogy egy erőforrás futtatókörnyezeti állapotát bemutató objektumot ad vissza, a references
függvény egy erőforráscsoport futtatókörnyezeti állapotát képviselő objektumtömböt ad vissza. Ehhez a függvényhez ARM-sablonnyelvi verzióra 2.0
van szükség, és engedélyezve van a szimbolikus név :
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"languageVersion": "2.0",
"contentVersion": "1.0.0.0",
...
}
A Bicep-ben nincs explicit references
függvény. Ehelyett a szimbolikus gyűjteményhasználat közvetlenül történik, és a kódgenerálás során a Bicep lefordítja azt egy ARM-sablonra, amely az ARM-sablonfüggvényt references
használja. További információ: Referenciaerőforrás-/modulgyűjtemények.
Paraméterek
Paraméter | Kötelező | Típus | Leírás |
---|---|---|---|
Egy erőforráscsoport szimbolikus neve | Igen | húr | Az aktuális sablonban definiált erőforráscsoport szimbolikus neve. A references függvény nem támogatja az erőforrások hivatkozását az aktuális sablonon kívülre. |
'Full', 'Properties' | Nem | húr | Az az érték, amely meghatározza, hogy a teljes erőforrásobjektumok tömbje legyen-e visszaadva. Az alapértelmezett érték 'Properties' . Ha nem adja meg, a rendszer 'Full' csak az erőforrások tulajdonságobjektumait adja vissza. A teljes objektum olyan értékeket tartalmaz, mint az erőforrás-azonosító és a hely. |
Visszaadott érték
Az erőforrásgyűjtemény tömbje. Minden erőforrástípus különböző tulajdonságokat ad vissza a reference
függvényhez. A visszaadott érték az argumentum értéke 'Full'
alapján is eltér. További információ: referencia.
A kimeneti sorrend references
mindig növekvő sorrendbe van rendezve a másolási index alapján. Ezért a gyűjtemény első, 0 indexű erőforrása jelenik meg először, majd az 1. index és így tovább. Például: [worker-0, worker-1, worker-2, ...].
Az előző példában, ha a worker-0 és a worker-2 üzembe van helyezve, miközben az 1 . feldolgozó nem téves feltétel miatt van üzembe helyezve, a kimenet references
kihagyja a nem üzembe helyezett erőforrást, és megjeleníti az üzembe helyezetteket a számuk szerint rendezve. A kimenet a references
következő lesz : [worker-0, worker-2, ...]. Ha az összes erőforrás hiányzik, a függvény egy üres tömböt ad vissza.
Érvényes felhasználások
A references
függvény nem használható erőforrás-másolási hurkokban vagy Bicep-ciklusokban. A references
következő forgatókönyv például nem engedélyezett:
{
resources: {
"resourceCollection": {
"copy": { ... },
"properties": {
"prop": "[references(...)]"
}
}
}
}
Ha a references
függvényt vagy bármely list*
függvényt egy beágyazott sablon kimeneti szakaszában szeretné használni, be kell állítania a expressionEvaluationOptions
belső hatókör kiértékelését, vagy beágyazott sablon helyett csatoltat kell használnia.
Implicit függőség
A függvény használatával references
implicit módon deklarálja, hogy az egyik erőforrás egy másik erőforrástól függ. A tulajdonságot nem kell használnia dependsOn
. A függvény kiértékelése csak akkor történik meg, ha a hivatkozott erőforrás üzembe helyezése befejeződött.
Hivatkozási példa
Az alábbi példa egy erőforrásgyűjteményt helyez üzembe, és erre az erőforráscsoportra hivatkozik.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"languageVersion": "2.0",
"contentVersion": "1.0.0.0",
"parameters": {
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]",
"metadata": {
"description": "Location for all resources."
}
},
"numWorkers": {
"type": "int",
"defaultValue": 4,
"metadata": {
"description": "The number of workers"
}
}
},
"resources": {
"containerWorkers": {
"copy": {
"name": "containerWorkers",
"count": "[length(range(0, parameters('numWorkers')))]"
},
"type": "Microsoft.ContainerInstance/containerGroups",
"apiVersion": "2023-05-01",
"name": "[format('worker-{0}', range(0, parameters('numWorkers'))[copyIndex()])]",
"location": "[parameters('location')]",
"properties": {
"containers": [
{
"name": "[format('worker-container-{0}', range(0, parameters('numWorkers'))[copyIndex()])]",
"properties": {
"image": "mcr.microsoft.com/azuredocs/aci-helloworld",
"ports": [
{
"port": 80,
"protocol": "TCP"
}
],
"resources": {
"requests": {
"cpu": 1,
"memoryInGB": 2
}
}
}
}
],
"osType": "Linux",
"restartPolicy": "Always",
"ipAddress": {
"type": "Public",
"ports": [
{
"port": 80,
"protocol": "TCP"
}
]
}
}
},
"containerController": {
"type": "Microsoft.ContainerInstance/containerGroups",
"apiVersion": "2023-05-01",
"name": "controller",
"location": "[parameters('location')]",
"properties": {
"containers": [
{
"name": "controller-container",
"properties": {
"command": [
"echo",
"[format('Worker IPs are {0}', join(map(references('containerWorkers', 'full'), lambda('w', lambdaVariables('w').properties.ipAddress.ip)), ','))]"
],
"image": "mcr.microsoft.com/azuredocs/aci-helloworld",
"ports": [
{
"port": 80,
"protocol": "TCP"
}
],
"resources": {
"requests": {
"cpu": 1,
"memoryInGB": 2
}
}
}
}
],
"osType": "Linux",
"restartPolicy": "Always",
"ipAddress": {
"type": "Public",
"ports": [
{
"port": 80,
"protocol": "TCP"
}
]
}
},
"dependsOn": [
"containerWorkers"
]
}
},
"outputs": {
"workerIpAddresses": {
"type": "string",
"value": "[join(map(references('containerWorkers', 'full'), lambda('w', lambdaVariables('w').properties.ipAddress.ip)), ',')]"
},
"containersFull": {
"type": "array",
"value": "[references('containerWorkers', 'full')]"
},
"container": {
"type": "array",
"value": "[references('containerWorkers')]"
}
}
}
Az előző példa a három objektumot adja vissza.
"outputs": {
"workerIpAddresses": {
"type": "String",
"value": "20.66.74.26,20.245.100.10,13.91.86.58,40.83.249.30"
},
"containersFull": {
"type": "Array",
"value": [
{
"apiVersion": "2023-05-01",
"condition": true,
"copyContext": {
"copyIndex": 0,
"copyIndexes": {
"": 0,
"containerWorkers": 0
},
"name": "containerWorkers"
},
"copyLoopSymbolicName": "containerWorkers",
"deploymentResourceLineInfo": {
"lineNumber": 30,
"linePosition": 25
},
"existing": false,
"isAction": false,
"isConditionTrue": true,
"isTemplateResource": true,
"location": "westus",
"properties": {
"containers": [
{
"name": "worker-container-0",
"properties": {
"environmentVariables": [],
"image": "mcr.microsoft.com/azuredocs/aci-helloworld",
"instanceView": {
"currentState": {
"detailStatus": "",
"startTime": "2023-07-31T19:25:31.996Z",
"state": "Running"
},
"restartCount": 0
},
"ports": [
{
"port": 80,
"protocol": "TCP"
}
],
"resources": {
"requests": {
"cpu": 1.0,
"memoryInGB": 2.0
}
}
}
}
],
"initContainers": [],
"instanceView": {
"events": [],
"state": "Running"
},
"ipAddress": {
"ip": "20.66.74.26",
"ports": [
{
"port": 80,
"protocol": "TCP"
}
],
"type": "Public"
},
"isCustomProvisioningTimeout": false,
"osType": "Linux",
"provisioningState": "Succeeded",
"provisioningTimeoutInSeconds": 1800,
"restartPolicy": "Always",
"sku": "Standard"
},
"provisioningOperation": "Create",
"references": [],
"resourceGroupName": "demoRg",
"resourceId": "Microsoft.ContainerInstance/containerGroups/worker-0",
"scope": "",
"subscriptionId": "",
"symbolicName": "containerWorkers[0]"
},
...
]
},
"containers": {
"type": "Array",
"value": [
{
"containers": [
{
"name": "worker-container-0",
"properties": {
"environmentVariables": [],
"image": "mcr.microsoft.com/azuredocs/aci-helloworld",
"instanceView": {
"currentState": {
"detailStatus": "",
"startTime": "2023-07-31T19:25:31.996Z",
"state": "Running"
},
"restartCount": 0
},
"ports": [
{
"port": 80,
"protocol": "TCP"
}
],
"resources": {
"requests": {
"cpu": 1.0,
"memoryInGB": 2.0
}
}
}
}
],
"initContainers": [],
"instanceView": {
"events": [],
"state": "Running"
},
"ipAddress": {
"ip": "20.66.74.26",
"ports": [
{
"port": 80,
"protocol": "TCP"
}
],
"type": "Public"
},
"isCustomProvisioningTimeout": false,
"osType": "Linux",
"provisioningState": "Succeeded",
"provisioningTimeoutInSeconds": 1800,
"restartPolicy": "Always",
"sku": "Standard"
},
...
]
}
}
resourceGroup
Tekintse meg a resourceGroup hatókörfüggvényt.
A Bicepben használja a resourcegroup scope függvényt.
resourceId
resourceId([subscriptionId], [resourceGroupName], resourceType, resourceName1, [resourceName2], ...)
Egy erőforrás egyedi azonosítóját adja vissza. Ezt a függvényt akkor használja, ha az erőforrás neve nem egyértelmű, vagy nem ugyanazon a sablonon belül van kiépítve. A visszaadott azonosító formátuma attól függően változik, hogy az üzembe helyezés erőforráscsoport, előfizetés, felügyeleti csoport vagy bérlő hatókörében történik-e.
A Bicepben használja a resourceId függvényt.
Paraméterek
Paraméter | Kötelező | Típus | Leírás |
---|---|---|---|
subscriptionId | Nem | sztring (GUID formátumban) | Az alapértelmezett érték az aktuális előfizetés. Adja meg ezt az értéket, ha egy erőforrást egy másik előfizetésben kell lekérnie. Ezt az értéket csak erőforráscsoport vagy előfizetés hatókörében történő üzembe helyezéskor adja meg. |
resourceGroupName | Nem | húr | Az alapértelmezett érték az aktuális erőforráscsoport. Adja meg ezt az értéket, ha egy erőforrást egy másik erőforráscsoportban kell lekérnie. Csak akkor adja meg ezt az értéket, ha egy erőforráscsoport hatókörében telepít. |
resourceType | Igen | húr | Az erőforrás típusa, beleértve az erőforrás-szolgáltató névterét. |
resourceName1 | Igen | húr | Az erőforrás neve. |
resourceName2 | Nem | húr | Szükség esetén a következő erőforrásnév-szegmens. |
Ha az erőforrástípus több szegmenst is tartalmaz, folytassa az erőforrásnevek paraméterként való hozzáadását.
Visszaadott érték
Az erőforrás-azonosító különböző formátumban, különböző hatókörökben lesz visszaadva:
Erőforráscsoport hatóköre:
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}
Előfizetés hatóköre:
/subscriptions/{subscriptionId}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}
Felügyeleti csoport vagy bérlő hatóköre:
/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}
A félreértések elkerülése érdekében javasoljuk, hogy ne használja resourceId
az előfizetésben, felügyeleti csoportban vagy bérlőben üzembe helyezett erőforrások használatakor. Ehelyett használja a hatókörhöz tervezett azonosítófüggvényt.
- Előfizetési szintű erőforrások esetén használja az subscriptionResourceId függvényt.
- A felügyeleti csoportszintű erőforrásokhoz használja a managementGroupResourceId függvényt. A extensionResourceId függvénnyel hivatkozhat egy felügyeleti csoport bővítményeként implementált erőforrásra. A felügyeleti csoportban üzembe helyezett egyéni szabályzatdefiníciók például a felügyeleti csoport bővítményei. A tenantResourceId függvénnyel hivatkozhat a bérlőn üzembe helyezett, de a felügyeleti csoportban elérhető erőforrásokra. A beépített szabályzatdefiníciók például bérlőszintű erőforrásokként vannak implementálva.
- Bérlőszintű erőforrások esetén használja a tenantResourceId függvényt. Beépített szabályzatdefiníciókhoz használható
tenantResourceId
, mert bérlői szinten vannak implementálva.
Megjegyzések
A megadott paraméterek száma attól függően változik, hogy az erőforrás szülő- vagy gyermekerőforrás-e, és hogy az erőforrás ugyanabban az előfizetésben vagy erőforráscsoportban található-e.
Ha egy szülőerőforrás erőforrás-azonosítóját szeretné lekérni ugyanabban az előfizetésben és erőforráscsoportban, adja meg az erőforrás típusát és nevét.
"[resourceId('Microsoft.ServiceBus/namespaces', 'namespace1')]"
A gyermekerőforrás erőforrás-azonosítójának lekéréséhez figyeljen az erőforrástípus szegmenseinek számára. Adjon meg egy erőforrásnevet az erőforrástípus egyes szegmenseihez. A szegmens neve megegyezik a hierarchia adott részére vonatkozó erőforrás nevével.
"[resourceId('Microsoft.ServiceBus/namespaces/queues/authorizationRules', 'namespace1', 'queue1', 'auth1')]"
Ha egy erőforrás erőforrás-azonosítóját ugyanabban az előfizetésben, de más erőforráscsoportban szeretné lekérni, adja meg az erőforráscsoport nevét.
"[resourceId('otherResourceGroup', 'Microsoft.Storage/storageAccounts', 'examplestorage')]"
Ha egy másik előfizetésben és erőforráscsoportban lévő erőforrás erőforrás-azonosítóját szeretné lekérni, adja meg az előfizetés azonosítóját és az erőforráscsoport nevét.
"[resourceId('xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx', 'otherResourceGroup', 'Microsoft.Storage/storageAccounts','examplestorage')]"
Ezt a függvényt gyakran akkor kell használnia, ha tárfiókot vagy virtuális hálózatot használ egy másik erőforráscsoportban. Az alábbi példa bemutatja, hogyan használható könnyen egy külső erőforráscsoportból származó erőforrás:
{
"$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": "2022-11-01",
"name": "[parameters('nicName')]",
"location": "[parameters('location')]",
"properties": {
"ipConfigurations": [
{
"name": "ipconfig1",
"properties": {
"privateIPAllocationMethod": "Dynamic",
"subnet": {
"id": "[variables('subnet1Ref')]"
}
}
}
]
}
}
]
}
Példa erőforrás-azonosítóra
Az alábbi példa egy tárfiók erőforrás-azonosítóját adja vissza az erőforráscsoportban:
{
"$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')]"
}
}
}
Az előző példában szereplő kimenet az alapértelmezett értékekkel a következő:
Név | Típus | Érték |
---|---|---|
sameRGOutput | Sztring | /subscriptions/{current-sub-id}/resourceGroups/examplegroup/providers/Microsoft.Storage/storageAccounts/examplestorage |
differentRGOutput | Sztring | /subscriptions/{current-sub-id}/resourceGroups/otherResourceGroup/providers/Microsoft.Storage/storageAccounts/examplestorage |
differentSubOutput | Sztring | /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeeeee4e4e4e4e/resourceGroups/otherResourceGroup/providers/Microsoft.Storage/storageAccounts/examplestorage |
nestedResourceOutput | Sztring | /subscriptions/{current-sub-id}/resourceGroups/examplegroup/providers/Microsoft.SQL/servers/serverName/databases/databaseName |
előfizetést
Tekintse meg az előfizetés hatókörfüggvényét.
A Bicepben használja az előfizetés hatókörfüggvényét.
subscriptionResourceId
subscriptionResourceId([subscriptionId], resourceType, resourceName1, [resourceName2], ...)
Az előfizetés szintjén üzembe helyezett erőforrás egyedi azonosítóját adja vissza.
A Bicepben használja az subscriptionResourceId függvényt.
Paraméterek
Paraméter | Kötelező | Típus | Leírás |
---|---|---|---|
subscriptionId | Nem | sztring (GUID formátumban) | Az alapértelmezett érték az aktuális előfizetés. Adja meg ezt az értéket, ha egy erőforrást egy másik előfizetésben kell lekérnie. |
resourceType | Igen | húr | Az erőforrás típusa, beleértve az erőforrás-szolgáltató névterét. |
resourceName1 | Igen | húr | Az erőforrás neve. |
resourceName2 | Nem | húr | Szükség esetén a következő erőforrásnév-szegmens. |
Ha az erőforrástípus több szegmenst is tartalmaz, folytassa az erőforrásnevek paraméterként való hozzáadását.
Visszaadott érték
Az azonosító a következő formátumban lesz visszaadva:
/subscriptions/{subscriptionId}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}
Megjegyzések
Ezzel a függvénnyel lekérheti az erőforráscsoport helyett az előfizetésben üzembe helyezett erőforrások erőforrás-azonosítóját. A visszaadott azonosító eltér a resourceId függvény által visszaadott értéktől azáltal, hogy nem tartalmaz erőforráscsoport-értéket.
subscriptionResourceID példa
Az alábbi sablon egy beépített szerepkört rendel hozzá. Üzembe helyezheti egy erőforráscsoportban vagy előfizetésben. A függvény használatával subscriptionResourceId
lekéri a beépített szerepkörök erőforrás-azonosítóját.
{
"$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": "2022-04-01",
"name": "[parameters('roleNameGuid')]",
"properties": {
"roleDefinitionId": "[variables(parameters('builtInRoleType'))]",
"principalId": "[parameters('principalId')]"
}
}
]
}
managementGroupResourceId
managementGroupResourceId([managementGroupResourceId],resourceType, resourceName1, [resourceName2], ...)
A felügyeleti csoport szintjén üzembe helyezett erőforrás egyedi azonosítóját adja vissza.
A Bicepben használja a managementGroupResourceId függvényt.
Paraméterek
Paraméter | Kötelező | Típus | Leírás |
---|---|---|---|
managementGroupResourceId | Nem | sztring (GUID formátumban) | Az alapértelmezett érték az aktuális felügyeleti csoport. Adja meg ezt az értéket, ha egy erőforrást egy másik felügyeleti csoportban kell lekérnie. |
resourceType | Igen | húr | Az erőforrás típusa, beleértve az erőforrás-szolgáltató névterét. |
resourceName1 | Igen | húr | Az erőforrás neve. |
resourceName2 | Nem | húr | Szükség esetén a következő erőforrásnév-szegmens. |
Ha az erőforrástípus több szegmenst is tartalmaz, folytassa az erőforrásnevek paraméterként való hozzáadását.
Visszaadott érték
Az azonosító a következő formátumban lesz visszaadva:
/providers/Microsoft.Management/managementGroups/{managementGroupName}/providers/{resourceType}/{resourceName}
Megjegyzések
Ezzel a függvénnyel lekérheti a felügyeleti csoportban üzembe helyezett erőforrások erőforrás-azonosítóját, és nem erőforráscsoportot. A visszaadott azonosító eltér a resourceId függvény által visszaadott értéktől azáltal, hogy nem tartalmaz előfizetés-azonosítót és erőforráscsoport-értéket.
managementGroupResourceID példa
Az alábbi sablon létrehoz és hozzárendel egy szabályzatdefiníciót. A függvény használatával managementGroupResourceId
kéri le a szabályzatdefiníció erőforrás-azonosítóját.
{
"$schema": "https://schema.management.azure.com/schemas/2019-08-01/managementGroupDeploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"targetMG": {
"type": "string",
"metadata": {
"description": "Target Management Group"
}
},
"allowedLocations": {
"type": "array",
"defaultValue": [
"australiaeast",
"australiasoutheast",
"australiacentral"
],
"metadata": {
"description": "An array of the allowed locations, all other locations will be denied by the created policy."
}
}
},
"variables": {
"mgScope": "[tenantResourceId('Microsoft.Management/managementGroups', parameters('targetMG'))]",
"policyDefinitionName": "LocationRestriction"
},
"resources": [
{
"type": "Microsoft.Authorization/policyDefinitions",
"apiVersion": "2021-06-01",
"name": "[variables('policyDefinitionName')]",
"properties": {
"policyType": "Custom",
"mode": "All",
"parameters": {},
"policyRule": {
"if": {
"not": {
"field": "location",
"in": "[parameters('allowedLocations')]"
}
},
"then": {
"effect": "deny"
}
}
}
},
"location_lock": {
"type": "Microsoft.Authorization/policyAssignments",
"apiVersion": "2022-06-01",
"name": "location-lock",
"properties": {
"scope": "[variables('mgScope')]",
"policyDefinitionId": "[managementGroupResourceId('Microsoft.Authorization/policyDefinitions', variables('policyDefinitionName'))]"
},
"dependsOn": [
"[format('Microsoft.Authorization/policyDefinitions/{0}', variables('policyDefinitionName'))]"
]
}
]
}
tenantResourceId
tenantResourceId(resourceType, resourceName1, [resourceName2], ...)
A bérlői szinten üzembe helyezett erőforrás egyedi azonosítójának visszaadása.
A Bicepben használja a tenantResourceId függvényt.
Paraméterek
Paraméter | Kötelező | Típus | Leírás |
---|---|---|---|
resourceType | Igen | húr | Az erőforrás típusa, beleértve az erőforrás-szolgáltató névterét. |
resourceName1 | Igen | húr | Az erőforrás neve. |
resourceName2 | Nem | húr | Szükség esetén a következő erőforrásnév-szegmens. |
Ha az erőforrástípus több szegmenst is tartalmaz, folytassa az erőforrásnevek paraméterként való hozzáadását.
Visszaadott érték
Az azonosító a következő formátumban lesz visszaadva:
/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}
Megjegyzések
Ezzel a függvénnyel lekérheti a bérlőn üzembe helyezett erőforrás erőforrás-azonosítóját. A visszaadott azonosító eltér az egyéb erőforrás-azonosító függvények által visszaadott értékektől azáltal, hogy nem tartalmazza az erőforráscsoport- vagy előfizetési értékeket.
tenantResourceId példa
A beépített szabályzatdefiníciók bérlőszintű erőforrások. Egy beépített szabályzatdefinícióra hivatkozó szabályzat-hozzárendelés üzembe helyezéséhez használja a függvényt tenantResourceId
.
{
"$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": "2022-06-01",
"properties": {
"scope": "[subscriptionResourceId('Microsoft.Resources/resourceGroups', resourceGroup().name)]",
"policyDefinitionId": "[tenantResourceId('Microsoft.Authorization/policyDefinitions', parameters('policyDefinitionID'))]"
}
}
]
}
Következő lépések
- Az ARM-sablonok szakaszainak leírását az ARM-sablonok szerkezetének és szintaxisának ismertetése című témakörben találja.
- Ha több sablont szeretne egyesíteni, olvassa el a Csatolt és beágyazott sablonok használata Azure-erőforrások üzembe helyezésekor című témakört.
- Ha adott számú alkalommal szeretne iterálni egy erőforrástípus létrehozásakor, tekintse meg az erőforrás-iterációt ARM-sablonokban.
- A létrehozott sablon üzembe helyezéséről az Erőforrások üzembe helyezése ARM-sablonokkal és az Azure PowerShell-lel című témakörben olvashat.