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):

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 listkövetkezők: , listKeyslistKeyValueé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/openid Csatlakozás Providers listSecrets
Microsoft.ApiManagement/service/subscriptions listSecrets
Microsoft.AppConfiguration/configurationStores ListKeys
Microsoft.AppPlatform/Spring listTestKeys
Microsoft.Automation/automationAccounts listKeys
Microsoft.Batch/batchAccounts listKeys
Microsoft.BatchAI/workspaces/experiments/jobs listoutputfiles
Microsoft.BotService/botServices/channels listChannelWithKeys
Microsoft.Cache/redis listKeys
Microsoft.CognitiveServices/accounts listKeys
Microsoft.ContainerRegistry/regisztrációs adatbázisok listBuildSourceUploadUrl
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 listCluster Rendszergazda Credential
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 listSourceShareSynchronization Gépház
Microsoft.DataShare/accounts/shareSubscriptions listSynchronizationDetails
Microsoft.DataShare/accounts/shareSubscriptions listSynchronizations
Microsoft.Devices/iotHubs listKeys
Microsoft.Devices/iotHubs/iotHubKeys listKeys
Microsoft.Devices/provisioningServices/keys listKeys
Microsoft.Devices/provisioningServices listKeys
Microsoft.DevTestLab/labs ListVhds
Microsoft.DevTestLab/labs/schedules ListApplicable
Microsoft.DevTestLab/labs/users/serviceFabrics ListApplicableSchedules
Microsoft.DevTestLab/labs/virtualMachines ListApplicableSchedules
Microsoft.DocumentDB/databaseAccounts listKeys
Microsoft.DocumentDB/databaseAccounts/notebookWorkspaces listázás Csatlakozás ionInfo
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.Machine Tanulás/webServices listkeys
Microsoft.Machine Tanulás/Workspaces listworkspacekeys
Microsoft. Térképek/fiókok 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.Operational Elemzések/workspaces list
Microsoft.Operational Elemzések/workspaces listKeys
Microsoft.Policy Elemzések/szervizelések listDeployments
Microsoft.RedHatOpenShift/openShiftClusters lista hitelesítő adatai
Microsoft.Relay/namespaces/authorizationRules listKeys
Microsoft.Relay/namespaces/disasterRecoveryConfigs/authorizationRules listKeys
Microsoft.Relay/namespaces/Hybrid Csatlakozás ions/authorizationRules listKeys
Microsoft.Relay/namespaces/WcfRelays/authorizationRules listkeys
Microsoft.Search/searchServices listázás Rendszergazda Kulcsok
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ó listif 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.
Eltolás 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 numberOfZonesa 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.

Hivatkozá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 typeaz 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 expressionEvaluationOptionsbelső 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ó referenceif 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]"

Or

"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 apiVersiona .

"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/myExtMicrosoft.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 expressionEvaluationOptionsbelső 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/11111111-1111-1111-1111-111111111/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