ARM テンプレート用のリソース関数Resource functions for ARM templates

Resource Manager では、Azure Resource Manager (ARM) テンプレートでリソースの値を取得するために、次の関数が提供されています。Resource Manager provides the following functions for getting resource values in your Azure Resource Manager (ARM) template:

パラメーター、変数、現在のデプロイから値を取得する方法については、「 デプロイの値関数」を参照してください。To get values from parameters, variables, or the current deployment, see Deployment value functions.

extensionResourceIdextensionResourceId

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

拡張リソースのリソース ID を返します。これは、その機能に追加する別のリソースに適用されるリソースの種類です。Returns the resource ID for an extension resource, which is a resource type that is applied to another resource to add to its capabilities.

パラメーターParameters

パラメーターParameter 必須Required TypeType 説明Description
resourceIdresourceId はいYes stringstring 拡張リソースが適用されるリソースのリソース ID。The resource ID for the resource that the extension resource is applied to.
resourceTyperesourceType はいYes stringstring リソース プロバイダーの名前空間を含むリソースの種類。Type of resource including resource provider namespace.
resourceName1resourceName1 はいYes stringstring リソースの名前。Name of resource.
resourceName2resourceName2 いいえNo stringstring 次のリソース名セグメント (必要な場合)。Next resource name segment, if needed.

さらに他のセグメントがリソースの種類に含まれる場合は、続けてリソース名をパラメーターとして追加します。Continue adding resource names as parameters when the resource type includes more segments.

戻り値Return value

この関数から返されるリソース ID の基本形式は次のとおりです。The basic format of the resource ID returned by this function is:

{scope}/providers/{extensionResourceProviderNamespace}/{extensionResourceType}/{extensionResourceName}

スコープ セグメントは、拡張されるリソースによって変わります。The scope segment varies by the resource being extended.

拡張リソースがリソースに適用される場合、リソース ID は次の形式で返されます。When the extension resource is applied to a resource, the resource ID is returned in the following format:

/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{baseResourceProviderNamespace}/{baseResourceType}/{baseResourceName}/providers/{extensionResourceProviderNamespace}/{extensionResourceType}/{extensionResourceName}

拡張リソースがリソース グループに適用される場合、形式は次のようになります。When the extension resource is applied to a resource group, the format is:

/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{extensionResourceProviderNamespace}/{extensionResourceType}/{extensionResourceName}

拡張リソースがサブスクリプションに適用される場合、形式は次のようになります。When the extension resource is applied to a subscription, the format is:

/subscriptions/{subscriptionId}/providers/{extensionResourceProviderNamespace}/{extensionResourceType}/{extensionResourceName}

拡張リソースが管理グループに適用される場合、形式は次のようになります。When the extension resource is applied to a management group, the format is:

/providers/Microsoft.Management/managementGroups/{managementGroupName}/providers/{extensionResourceProviderNamespace}/{extensionResourceType}/{extensionResourceName}

extensionResourceId の例extensionResourceId example

次の例では、リソース グループ ロックのリソース ID が返されます。The following example returns the resource ID for a resource group lock.

{
    "$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 custom policy definition deployed to a management group is implemented as an extension resource. ポリシーを作成して割り当てるには、次のテンプレートを管理グループにデプロイします。To create and assign a policy, deploy the following template to a management group.

{
    "$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'))]",
        "policyDefinition": "LocationRestriction"
    },
    "resources": [
        {
            "type": "Microsoft.Authorization/policyDefinitions",
            "name": "[variables('policyDefinition')]",
            "apiVersion": "2019-09-01",
            "properties": {
                "policyType": "Custom",
                "mode": "All",
                "parameters": {
                },
                "policyRule": {
                    "if": {
                        "not": {
                            "field": "location",
                            "in": "[parameters('allowedLocations')]"
                        }
                    },
                    "then": {
                        "effect": "deny"
                    }
                }
            }
        },
        {
            "type": "Microsoft.Authorization/policyAssignments",
            "name": "location-lock",
            "apiVersion": "2019-09-01",
            "dependsOn": [
                "[variables('policyDefinition')]"
            ],
            "properties": {
                "scope": "[variables('mgScope')]",
                "policyDefinitionId": "[extensionResourceId(variables('mgScope'), 'Microsoft.Authorization/policyDefinitions', variables('policyDefinition'))]"
            }
        }
    ]
}

組み込みのポリシー定義は、テナント レベルのリソースです。Built-in policy definitions are tenant level resources. 組み込みのポリシー定義をデプロイする例については、「tenantResourceId」を参照してください。For an example of deploying a built-in policy definition, see tenantResourceId.

list*list*

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

この関数の構文はリスト操作の名前によって異なります。The syntax for this function varies by name of the list operations. 実装ごとに、リスト操作をサポートするリソースの種類の値が返されます。Each implementation returns values for the resource type that supports a list operation. 操作名は list で始める必要があります。The operation name must start with list. 一般的な使用法として、listKeyslistKeyValuelistSecrets などがあります。Some common usages are listKeys, listKeyValue, and listSecrets.

パラメーターParameters

パラメーターParameter 必須Required 種類Type 説明Description
resourceName または resourceIdentifierresourceName or resourceIdentifier はいYes stringstring リソースの一意識別子です。Unique identifier for the resource.
apiVersionapiVersion はいYes stringstring リソースのランタイム状態の API バージョン。API version of resource runtime state. 通常、yyyy-mm-dd の形式。Typically, in the format, yyyy-mm-dd.
functionValuesfunctionValues いいえNo objectobject 関数の値を持つオブジェクト。An object that has values for the function. このオブジェクトは、ストレージ アカウントの listAccountSas など、パラメーター値を持つオブジェクトの受信をサポートする関数に対してのみ指定します。Only provide this object for functions that support receiving an object with parameter values, such as listAccountSas on a storage account. 関数値を渡す例をこの記事で紹介します。An example of passing function values is shown in this article.

有効な使用方法Valid uses

リスト関数は、リソース定義のプロパティで使用できます。The list functions can be used in the properties of a resource definition. テンプレートの outputs セクションでは、機密情報を公開するリスト関数を使用しないでください。Don't use a list function that exposes sensitive information in the outputs section of a template. 出力値はデプロイ履歴に格納されるため、悪意のあるユーザーによって取得される可能性があります。Output values are stored in the deployment history and could be retrieved by a malicious user.

プロパティの反復処理で使用する場合には、式がリソース プロパティに割り当てられるため、input に対して list 関数を使用できます。When used with property iteration, you can use the list functions for input because the expression is assigned to the resource property. これらを count と一緒に使用することはできません。カウントは、list 関数が解決される前に決定される必要があるためです。You can't use them with count because the count must be determined before the list function is resolved.

実装Implementations

list* の使用例を次の表にまとめています。The possible uses of list* are shown in the following table.

リソースの種類Resource type 関数名Function name
Microsoft.Addons/supportProvidersMicrosoft.Addons/supportProviders listsupportplaninfolistsupportplaninfo
Microsoft.AnalysisServices/serversMicrosoft.AnalysisServices/servers listGatewayStatuslistGatewayStatus
Microsoft.ApiManagement/service/authorizationServersMicrosoft.ApiManagement/service/authorizationServers listSecretslistSecrets
Microsoft.ApiManagement/service/gatewaysMicrosoft.ApiManagement/service/gateways listKeyslistKeys
Microsoft.ApiManagement/service/identityProvidersMicrosoft.ApiManagement/service/identityProviders listSecretslistSecrets
Microsoft.ApiManagement/service/namedValuesMicrosoft.ApiManagement/service/namedValues listValuelistValue
Microsoft.ApiManagement/service/openidConnectProvidersMicrosoft.ApiManagement/service/openidConnectProviders listSecretslistSecrets
Microsoft.AppConfiguration/configurationStoresMicrosoft.AppConfiguration/configurationStores ListKeysListKeys
Microsoft.AppPlatform/SpringMicrosoft.AppPlatform/Spring listTestKeyslistTestKeys
Microsoft.Automation/automationAccountsMicrosoft.Automation/automationAccounts listKeyslistKeys
Microsoft.Batch/batchAccountsMicrosoft.Batch/batchAccounts listkeyslistkeys
Microsoft.BatchAI/workspaces/experiments/jobsMicrosoft.BatchAI/workspaces/experiments/jobs listoutputfileslistoutputfiles
Microsoft.Blockchain/blockchainMembersMicrosoft.Blockchain/blockchainMembers listApiKeyslistApiKeys
Microsoft.Blockchain/blockchainMembers/transactionNodesMicrosoft.Blockchain/blockchainMembers/transactionNodes listApiKeyslistApiKeys
Microsoft.BotService/botServices/channelsMicrosoft.BotService/botServices/channels listChannelWithKeyslistChannelWithKeys
Microsoft.Cache/redisMicrosoft.Cache/redis listKeyslistKeys
Microsoft.CognitiveServices/accountsMicrosoft.CognitiveServices/accounts listKeyslistKeys
Microsoft.ContainerRegistry/registriesMicrosoft.ContainerRegistry/registries listBuildSourceUploadUrllistBuildSourceUploadUrl
Microsoft.ContainerRegistry/registriesMicrosoft.ContainerRegistry/registries listCredentialslistCredentials
Microsoft.ContainerRegistry/registriesMicrosoft.ContainerRegistry/registries listUsageslistUsages
Microsoft.ContainerRegistry/registries/agentpoolsMicrosoft.ContainerRegistry/registries/agentpools listQueueStatuslistQueueStatus
Microsoft.ContainerRegistry/registries/buildTasksMicrosoft.ContainerRegistry/registries/buildTasks listSourceRepositoryPropertieslistSourceRepositoryProperties
Microsoft.ContainerRegistry/registries/buildTasks/stepsMicrosoft.ContainerRegistry/registries/buildTasks/steps listBuildArgumentslistBuildArguments
Microsoft.ContainerRegistry/registries/taskrunsMicrosoft.ContainerRegistry/registries/taskruns listDetailslistDetails
Microsoft.ContainerRegistry/registries/webhooksMicrosoft.ContainerRegistry/registries/webhooks listEventslistEvents
Microsoft.ContainerRegistry/registries/runsMicrosoft.ContainerRegistry/registries/runs listLogSasUrllistLogSasUrl
Microsoft.ContainerRegistry/registries/tasksMicrosoft.ContainerRegistry/registries/tasks listDetailslistDetails
Microsoft.ContainerService/managedClustersMicrosoft.ContainerService/managedClusters listClusterAdminCredentiallistClusterAdminCredential
Microsoft.ContainerService/managedClustersMicrosoft.ContainerService/managedClusters listClusterMonitoringUserCredentiallistClusterMonitoringUserCredential
Microsoft.ContainerService/managedClustersMicrosoft.ContainerService/managedClusters listClusterUserCredentiallistClusterUserCredential
Microsoft.ContainerService/managedClusters/accessProfilesMicrosoft.ContainerService/managedClusters/accessProfiles listCredentiallistCredential
Microsoft.DataBox/jobsMicrosoft.DataBox/jobs listCredentialslistCredentials
Microsoft.DataFactory/datafactories/gatewaysMicrosoft.DataFactory/datafactories/gateways listauthkeyslistauthkeys
Microsoft.DataFactory/factories/integrationruntimesMicrosoft.DataFactory/factories/integrationruntimes listauthkeyslistauthkeys
Microsoft.DataLakeAnalytics/accounts/storageAccounts/ContainersMicrosoft.DataLakeAnalytics/accounts/storageAccounts/Containers listSasTokenslistSasTokens
Microsoft.DataShare/accounts/sharesMicrosoft.DataShare/accounts/shares listSynchronizationslistSynchronizations
Microsoft.DataShare/accounts/shareSubscriptionsMicrosoft.DataShare/accounts/shareSubscriptions listSourceShareSynchronizationSettingslistSourceShareSynchronizationSettings
Microsoft.DataShare/accounts/shareSubscriptionsMicrosoft.DataShare/accounts/shareSubscriptions listSynchronizationDetailslistSynchronizationDetails
Microsoft.DataShare/accounts/shareSubscriptionsMicrosoft.DataShare/accounts/shareSubscriptions listSynchronizationslistSynchronizations
Microsoft.Devices/iotHubsMicrosoft.Devices/iotHubs listkeyslistkeys
Microsoft.Devices/iotHubs/iotHubKeysMicrosoft.Devices/iotHubs/iotHubKeys listkeyslistkeys
Microsoft.Devices/provisioningServices/keysMicrosoft.Devices/provisioningServices/keys listkeyslistkeys
Microsoft.Devices/provisioningServicesMicrosoft.Devices/provisioningServices listkeyslistkeys
Microsoft.DevTestLab/labsMicrosoft.DevTestLab/labs ListVhdsListVhds
Microsoft.DevTestLab/labs/schedulesMicrosoft.DevTestLab/labs/schedules ListApplicableListApplicable
Microsoft.DevTestLab/labs/users/serviceFabricsMicrosoft.DevTestLab/labs/users/serviceFabrics ListApplicableSchedulesListApplicableSchedules
Microsoft.DevTestLab/labs/virtualMachinesMicrosoft.DevTestLab/labs/virtualMachines ListApplicableSchedulesListApplicableSchedules
Microsoft.DocumentDB/databaseAccountsMicrosoft.DocumentDB/databaseAccounts listConnectionStringslistConnectionStrings
Microsoft.DocumentDB/databaseAccountsMicrosoft.DocumentDB/databaseAccounts listKeyslistKeys
Microsoft.DocumentDB/databaseAccounts/notebookWorkspacesMicrosoft.DocumentDB/databaseAccounts/notebookWorkspaces listConnectionInfolistConnectionInfo
Microsoft.DomainRegistrationMicrosoft.DomainRegistration listDomainRecommendationslistDomainRecommendations
Microsoft.DomainRegistration/topLevelDomainsMicrosoft.DomainRegistration/topLevelDomains listAgreementslistAgreements
Microsoft.EventGrid/domainsMicrosoft.EventGrid/domains listKeyslistKeys
Microsoft.EventGrid/topicsMicrosoft.EventGrid/topics listKeyslistKeys
Microsoft.EventHub/namespaces/authorizationRulesMicrosoft.EventHub/namespaces/authorizationRules listkeyslistkeys
Microsoft.EventHub/namespaces/disasterRecoveryConfigs/authorizationRulesMicrosoft.EventHub/namespaces/disasterRecoveryConfigs/authorizationRules listkeyslistkeys
Microsoft.EventHub/namespaces/eventhubs/authorizationRulesMicrosoft.EventHub/namespaces/eventhubs/authorizationRules listkeyslistkeys
Microsoft.ImportExport/jobsMicrosoft.ImportExport/jobs listBitLockerKeyslistBitLockerKeys
Microsoft.Kusto/Clusters/DatabasesMicrosoft.Kusto/Clusters/Databases ListPrincipalsListPrincipals
Microsoft.LabServices/usersMicrosoft.LabServices/users ListEnvironmentsListEnvironments
Microsoft.LabServices/usersMicrosoft.LabServices/users ListLabsListLabs
Microsoft.Logic/integrationAccounts/agreementsMicrosoft.Logic/integrationAccounts/agreements listContentCallbackUrllistContentCallbackUrl
Microsoft.Logic/integrationAccounts/assembliesMicrosoft.Logic/integrationAccounts/assemblies listContentCallbackUrllistContentCallbackUrl
Microsoft.Logic/integrationAccountsMicrosoft.Logic/integrationAccounts listCallbackUrllistCallbackUrl
Microsoft.Logic/integrationAccountsMicrosoft.Logic/integrationAccounts listKeyVaultKeyslistKeyVaultKeys
Microsoft.Logic/integrationAccounts/mapsMicrosoft.Logic/integrationAccounts/maps listContentCallbackUrllistContentCallbackUrl
Microsoft.Logic/integrationAccounts/partnersMicrosoft.Logic/integrationAccounts/partners listContentCallbackUrllistContentCallbackUrl
Microsoft.Logic/integrationAccounts/schemasMicrosoft.Logic/integrationAccounts/schemas listContentCallbackUrllistContentCallbackUrl
Microsoft.Logic/workflowsMicrosoft.Logic/workflows listCallbackUrllistCallbackUrl
Microsoft.Logic/workflowsMicrosoft.Logic/workflows listSwaggerlistSwagger
Microsoft.Logic/workflows/runs/actionsMicrosoft.Logic/workflows/runs/actions listExpressionTraceslistExpressionTraces
Microsoft.Logic/workflows/runs/actions/repetitionsMicrosoft.Logic/workflows/runs/actions/repetitions listExpressionTraceslistExpressionTraces
Microsoft.Logic/workflows/triggersMicrosoft.Logic/workflows/triggers listCallbackUrllistCallbackUrl
Microsoft.Logic/workflows/versions/triggersMicrosoft.Logic/workflows/versions/triggers listCallbackUrllistCallbackUrl
Microsoft.MachineLearning/webServicesMicrosoft.MachineLearning/webServices listkeyslistkeys
Microsoft.MachineLearning/WorkspacesMicrosoft.MachineLearning/Workspaces listworkspacekeyslistworkspacekeys
Microsoft.MachineLearningServices/workspaces/computesMicrosoft.MachineLearningServices/workspaces/computes listKeyslistKeys
Microsoft.MachineLearningServices/workspaces/computesMicrosoft.MachineLearningServices/workspaces/computes listNodeslistNodes
Microsoft.MachineLearningServices/workspacesMicrosoft.MachineLearningServices/workspaces listKeyslistKeys
Microsoft.Maps/accountsMicrosoft.Maps/accounts listKeyslistKeys
Microsoft.Media/mediaservices/assetsMicrosoft.Media/mediaservices/assets listContainerSaslistContainerSas
Microsoft.Media/mediaservices/assetsMicrosoft.Media/mediaservices/assets listStreamingLocatorslistStreamingLocators
Microsoft.Media/mediaservices/streamingLocatorsMicrosoft.Media/mediaservices/streamingLocators listContentKeyslistContentKeys
Microsoft.Media/mediaservices/streamingLocatorsMicrosoft.Media/mediaservices/streamingLocators listPathslistPaths
Microsoft.Network/applicationSecurityGroupsMicrosoft.Network/applicationSecurityGroups listIpConfigurationslistIpConfigurations
Microsoft.NotificationHubs/Namespaces/authorizationRulesMicrosoft.NotificationHubs/Namespaces/authorizationRules listkeyslistkeys
Microsoft.NotificationHubs/Namespaces/NotificationHubs/authorizationRulesMicrosoft.NotificationHubs/Namespaces/NotificationHubs/authorizationRules listkeyslistkeys
Microsoft.OperationalInsights/workspacesMicrosoft.OperationalInsights/workspaces listlist
Microsoft.OperationalInsights/workspacesMicrosoft.OperationalInsights/workspaces listKeyslistKeys
Microsoft.PolicyInsights/remediationsMicrosoft.PolicyInsights/remediations listDeploymentslistDeployments
Microsoft.RedHatOpenShift/openShiftClustersMicrosoft.RedHatOpenShift/openShiftClusters listCredentialslistCredentials
Microsoft.Relay/namespaces/authorizationRulesMicrosoft.Relay/namespaces/authorizationRules listkeyslistkeys
Microsoft.Relay/namespaces/disasterRecoveryConfigs/authorizationRulesMicrosoft.Relay/namespaces/disasterRecoveryConfigs/authorizationRules listkeyslistkeys
Microsoft.Relay/namespaces/HybridConnections/authorizationRulesMicrosoft.Relay/namespaces/HybridConnections/authorizationRules listkeyslistkeys
Microsoft.Relay/namespaces/WcfRelays/authorizationRulesMicrosoft.Relay/namespaces/WcfRelays/authorizationRules listkeyslistkeys
Microsoft.Search/searchServicesMicrosoft.Search/searchServices listAdminKeyslistAdminKeys
Microsoft.Search/searchServicesMicrosoft.Search/searchServices listQueryKeyslistQueryKeys
Microsoft.ServiceBus/namespaces/authorizationRulesMicrosoft.ServiceBus/namespaces/authorizationRules listkeyslistkeys
Microsoft.ServiceBus/namespaces/disasterRecoveryConfigs/authorizationRulesMicrosoft.ServiceBus/namespaces/disasterRecoveryConfigs/authorizationRules listkeyslistkeys
Microsoft.ServiceBus/namespaces/queues/authorizationRulesMicrosoft.ServiceBus/namespaces/queues/authorizationRules listkeyslistkeys
Microsoft.ServiceBus/namespaces/topics/authorizationRulesMicrosoft.ServiceBus/namespaces/topics/authorizationRules listkeyslistkeys
Microsoft.SignalRService/SignalRMicrosoft.SignalRService/SignalR listkeyslistkeys
Microsoft.Storage/storageAccountsMicrosoft.Storage/storageAccounts listAccountSaslistAccountSas
Microsoft.Storage/storageAccountsMicrosoft.Storage/storageAccounts listkeyslistkeys
Microsoft.Storage/storageAccountsMicrosoft.Storage/storageAccounts listServiceSaslistServiceSas
Microsoft.StorSimple/managers/devicesMicrosoft.StorSimple/managers/devices listFailoverSetslistFailoverSets
Microsoft.StorSimple/managers/devicesMicrosoft.StorSimple/managers/devices listFailoverTargetslistFailoverTargets
Microsoft.StorSimple/managersMicrosoft.StorSimple/managers listActivationKeylistActivationKey
Microsoft.StorSimple/managersMicrosoft.StorSimple/managers listPublicEncryptionKeylistPublicEncryptionKey
Microsoft.Synapse/workspaces/integrationRuntimesMicrosoft.Synapse/workspaces/integrationRuntimes listAuthKeyslistAuthKeys
Microsoft.Web/connectionGatewaysMicrosoft.Web/connectionGateways ListStatusListStatus
microsoft.web/connectionsmicrosoft.web/connections listconsentlinkslistconsentlinks
Microsoft.Web/customApisMicrosoft.Web/customApis listWsdlInterfaceslistWsdlInterfaces
microsoft.web/locationsmicrosoft.web/locations listwsdlinterfaceslistwsdlinterfaces
microsoft.web/apimanagementaccounts/apis/connectionsmicrosoft.web/apimanagementaccounts/apis/connections listconnectionkeyslistconnectionkeys
microsoft.web/apimanagementaccounts/apis/connectionsmicrosoft.web/apimanagementaccounts/apis/connections listsecretslistsecrets
microsoft.web/sites/backupsmicrosoft.web/sites/backups listlist
Microsoft.Web/sites/configMicrosoft.Web/sites/config listlist
microsoft.web/sites/functionsmicrosoft.web/sites/functions listkeyslistkeys
microsoft.web/sites/functionsmicrosoft.web/sites/functions listsecretslistsecrets
microsoft.web/sites/hybridconnectionnamespaces/relaysmicrosoft.web/sites/hybridconnectionnamespaces/relays listkeyslistkeys
microsoft.web/sitesmicrosoft.web/sites listsyncfunctiontriggerstatuslistsyncfunctiontriggerstatus
microsoft.web/sites/slots/functionsmicrosoft.web/sites/slots/functions listsecretslistsecrets
microsoft.web/sites/slots/backupsmicrosoft.web/sites/slots/backups listlist
Microsoft.Web/sites/slots/configMicrosoft.Web/sites/slots/config listlist
microsoft.web/sites/slots/functionsmicrosoft.web/sites/slots/functions listsecretslistsecrets

どのリソースの種類にリスト操作が含まれているのかを判断するには、次のオプションを使用できます。To determine which resource types have a list operation, you have the following options:

  • リソース プロバイダーの REST API の操作に関するページを参照して、リスト操作を検索します。View the REST API operations for a resource provider, and look for list operations. たとえば、ストレージ アカウントには listKeys 操作があります。For example, storage accounts have the listKeys operation.

  • Get-AzProviderOperation PowerShell コマンドレットを使用します。Use the Get-AzProviderOperation PowerShell cmdlet. 次の例では、ストレージ アカウントのすべてのリスト操作が取得されます。The following example gets all list operations for storage accounts:

    Get-AzProviderOperation -OperationSearchString "Microsoft.Storage/*" | where {$_.Operation -like "*list*"} | FT Operation
    
  • 次の Azure CLI コマンドを使って、リスト操作のみをフィルター処理します。Use the following Azure CLI command to filter only the list operations:

    az provider operation show --namespace Microsoft.Storage --query "resourceTypes[?name=='storageAccounts'].operations[].name | [?contains(@, 'list')]"
    

戻り値Return value

返されるオブジェクトは、使用するリスト関数によって異なります。The returned object varies by the list function you use. たとえば、ストレージ アカウントに対して listKeys は次の形式を返します。For example, the listKeys for a storage account returns the following format:

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

他のリスト関数の戻り値の形式はさまざまです。Other list functions have different return formats. 関数の形式を確認するには、テンプレートの例に示すように、outputs セクションにその関数を含めてください。To see the format of a function, include it in the outputs section as shown in the example template.

解説Remarks

リソース名または resourceId 関数を使用して、リソースを指定します。Specify the resource by using either the resource name or the resourceId function. 参照されているリソースをデプロイするのと同じテンプレートでリスト関数を使うときは、リソース名を使ってください。When using a list function in the same template that deploys the referenced resource, use the resource name.

list 関数を条件付きでデプロイされるリソースで使用した場合、この関数はリソースがデプロイされていなくても評価されます。If you use a list function in a resource that is conditionally deployed, the function is evaluated even if the resource isn't deployed. list 関数で存在しないリソースを参照した場合、エラーが返されます。You get an error if the list function refers to a resource that doesn't exist. リソースのデプロイ中にのみこの関数が評価されるようにするには、if 関数を使用します。Use the if function to make sure the function is only evaluated when the resource is being deployed. if と list を条件付きでデプロイされるリソースで使用するサンプル テンプレートについては、if 関数に関する説明を参照してください。See the if function for a sample template that uses if and list with a conditionally deployed resource.

リストの例List example

次の例では、デプロイ スクリプトの値を設定するときに listKeys を使用します。The following example uses listKeys when setting a value for deployment scripts.

"storageAccountSettings": {
    "storageAccountName": "[variables('storageAccountName')]",
    "storageAccountKey": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')), '2019-06-01').keys[0].value]"
}

次の例は、パラメーターを受け取るリスト関数を示しています。The next example shows a list function that takes a parameter. この場合の関数は listAccountSas です。In this case, the function is listAccountSas. 有効期限のオブジェクトを渡します。Pass an object for the expiry time. 有効期限は将来の日付にする必要があります。The expiry time must be in the future.

"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]"

pickZonespickZones

pickZones(providerNamespace, resourceType, location, [numberOfZones], [offset])

リソースの種類がリージョンのゾーンをサポートしているかどうかを判断します。Determines whether a resource type supports zones for a region.

パラメーターParameters

パラメーターParameter 必須Required Type 説明Description
providerNamespaceproviderNamespace はいYes stringstring ゾーンのサポートについて確認するためのリソースの種類のリソース プロバイダーの名前空間。The resource provider namespace for the resource type to check for zone support.
resourceTyperesourceType はいYes stringstring ゾーンのサポートについて確認するためのリソースの種類。The resource type to check for zone support.
locationlocation はいYes stringstring ゾーンのサポートについて確認するためのリージョン。The region to check for zone support.
numberOfZonesnumberOfZones いいえNo 整数 (integer)integer 返される論理ゾーンの数。The number of logical zones to return. 既定値は 1 です。The default is 1. この数は、1 から 3 の正の整数である必要があります。The number must a positive integer from 1 to 3. 単一ゾーンのリソースには 1 を使用します。Use 1 for single-zoned resources. 複数ゾーンのリソースの場合、サポートされているゾーンの数以下の値である必要があります。For multi-zoned resources, the value must be less than or equal to the number of supported zones.
offsetoffset いいえNo 整数 (integer)integer 開始論理ゾーンからのオフセット。The offset from the starting logical zone. オフセットと numberOfZones の合計が、サポートされているゾーンの数を超えた場合、関数はエラーを返します。The function returns an error if offset plus numberOfZones exceeds the number of supported zones.

戻り値Return value

サポートされているゾーンを含む配列。An array with the supported zones. Offset および numberOfZones の既定値を使用する場合、ゾーンをサポートするリソースの種類とリージョンは次の配列を返します。When using the default values for offset and numberOfZones, a resource type and region that supports zones returns the following array:

[
    "1"
]

numberOfZones パラメーターが 3 に設定されている場合は、次を返します。When the numberOfZones parameter is set to 3, it returns:

[
    "1",
    "2",
    "3"
]

リソースの種類またはリージョンがゾーンをサポートしていない場合は、空の配列が返されます。When the resource type or region doesn't support zones, an empty array is returned.

[
]

pickZones の例pickZones example

次のテンプレートは、pickZones 関数を使用した場合の 3 つの結果を示しています。The following template shows three results for using the pickZones function.

{
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {},
    "functions": [],
    "variables": {},
    "resources": [],
    "outputs": {
        "supported": {
            "type": "array",
            "value": "[pickZones('Microsoft.Compute', 'virtualMachines', 'westus2')]"
        },
        "notSupportedRegion": {
            "type": "array",
            "value": "[pickZones('Microsoft.Compute', 'virtualMachines', 'northcentralus')]"
        },
        "notSupportedType": {
            "type": "array",
            "value": "[pickZones('Microsoft.Cdn', 'profiles', 'westus2')]"
        }
    }
}

前の例からの出力は、3 つの配列を返します。The output from the preceding examples returns three arrays.

名前Name TypeType Value
サポート対象supported arrayarray [ "1" ][ "1" ]
notSupportedRegionnotSupportedRegion arrayarray [][]
notSupportedTypenotSupportedType arrayarray [][]

ゾーンに対して null を指定するか、別のゾーンに仮想マシンを割り当てるかを決定するために、pickZones からの応答を使用することができます。You can use the response from pickZones to determine whether to provide null for zones or assign virtual machines to different zones. 次の例では、ゾーンの可用性に基づいて、ゾーンの値を設定します。The following example sets a value for the zone based on the availability of zones.

"zones": {
    "value": "[if(not(empty(pickZones('Microsoft.Compute', 'virtualMachines', 'westus2'))), string(add(mod(copyIndex(),3),1)), json('null'))]"
},

providersproviders

providers(providerNamespace, [resourceType])

リソース プロバイダーとサポートされているそのリソースの種類に関する情報を返します。Returns information about a resource provider and its supported resource types. リソースの種類を指定しない場合、関数はリソース プロバイダーでサポートされているすべての種類を返します。If you don't provide a resource type, the function returns all the supported types for the resource provider.

パラメーターParameters

パラメーターParameter 必須Required Type 説明Description
providerNamespaceproviderNamespace はいYes stringstring プロバイダーの名前空間Namespace of the provider
resourceTyperesourceType いいえNo stringstring 指定した名前空間内にあるリソースの種類。The type of resource within the specified namespace.

戻り値Return value

サポートされている各種類は、次の形式で返されます。Each supported type is returned in the following format:

{
    "resourceType": "{name of resource type}",
    "locations": [ all supported locations ],
    "apiVersions": [ all supported API versions ]
}

戻り値の配列の順序は保証されません。Array ordering of the returned values isn't guaranteed.

プロバイダーの例Providers example

次のテンプレート例は、provider 関数の使用方法を示しています。The following example template shows how to use the provider function:

{
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "providerNamespace": {
            "type": "string"
        },
        "resourceType": {
            "type": "string"
        }
    },
    "resources": [],
    "outputs": {
        "providerOutput": {
            "value": "[providers(parameters('providerNamespace'), parameters('resourceType'))]",
            "type" : "object"
        }
    }
}

Microsoft.Web リソース プロバイダーでリソースの種類が sites の場合、前の例では、次の形式のオブジェクトが返されます。For the Microsoft.Web resource provider and sites resource type, the preceding example returns an object in the following format:

{
  "resourceType": "sites",
  "locations": [
    "South Central US",
    "North Europe",
    "West Europe",
    "Southeast Asia",
    ...
  ],
  "apiVersions": [
    "2016-08-01",
    "2016-03-01",
    "2015-08-01-preview",
    "2015-08-01",
    ...
  ]
}

referencereference

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

リソースのランタイム状態を表すオブジェクトを返します。Returns an object representing a resource's runtime state.

パラメーターParameters

パラメーターParameter 必須Required Type 説明Description
resourceName または resourceIdentifierresourceName or resourceIdentifier はいYes stringstring 名前またはリソースの一意の識別子。Name or unique identifier of a resource. 現在のテンプレート内のリソースを参照する場合は、パラメーターとしてリソース名のみを指定します。When referencing a resource in the current template, provide only the resource name as a parameter. 以前にデプロイされたリソースを参照する場合、またはリソースの名前があいまいな場合は、リソース ID を指定します。When referencing a previously deployed resource or when the name of the resource is ambiguous, provide the resource ID.
apiVersionapiVersion いいえNo stringstring 指定したリソースの API バージョンです。API version of the specified resource. このパラメーターは、同じテンプレート内でリソースがプロビジョニングされない場合に必要です。This parameter is required when the resource isn't provisioned within same template. 通常、yyyy-mm-dd の形式。Typically, in the format, yyyy-mm-dd. リソースに有効な API のバージョンについては、テンプレート リファレンスを参照してください。For valid API versions for your resource, see template reference.
'Full''Full' いいえNo stringstring 完全なリソース オブジェクトを返すかどうかを指定する値。Value that specifies whether to return the full resource object. 'Full' を指定しない場合、リソースのプロパティ オブジェクトのみが返されます。If you don't specify 'Full', only the properties object of the resource is returned. 完全なオブジェクトには、リソース ID や場所などの値が含まれます。The full object includes values such as the resource ID and location.

戻り値Return value

あらゆるリソースの種類で、reference 関数のさまざまなプロパティが返されます。Every resource type returns different properties for the reference function. この関数は、定義済みの単一の形式を返しません。The function doesn't return a single, predefined format. また、戻り値は、'Full' 引数の値によって異なります。Also, the returned value differs based on the value of the 'Full' argument. あるリソースの種類のプロパティを確認するには、この例に示すように、outputs セクションでオブジェクトを返します。To see the properties for a resource type, return the object in the outputs section as shown in the example.

解説Remarks

reference 関数は、以前にデプロイされたリソースまたは現在のテンプレートにデプロイされたリソースのいずれかのランタイム状態を取得します。The reference function retrieves the runtime state of either a previously deployed resource or a resource deployed in the current template. この記事では、両方のシナリオの例を示します。This article shows examples for both scenarios.

通常、reference 関数は、BLOB エンドポイント URI や完全修飾ドメイン名などのオブジェクトから特定の値を返すために使用します。Typically, you use the reference function to return a particular value from an object, such as the blob endpoint URI or fully qualified domain name.

"outputs": {
    "BlobUri": {
        "value": "[reference(resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName'))).primaryEndpoints.blob]",
        "type" : "string"
    },
    "FQDN": {
        "value": "[reference(resourceId('Microsoft.Network/publicIPAddresses', parameters('ipAddressName'))).dnsSettings.fqdn]",
        "type" : "string"
    }
}

'Full' は、プロパティのスキーマに含まれないリソースの値が必要なときに使用します。Use 'Full' when you need resource values that aren't part of the properties schema. たとえば、キー コンテナーのアクセス ポリシーを設定するために、仮想マシンの ID プロパティを取得する場合です。For example, to set key vault access policies, get the identity properties for a virtual machine.

{
  "type": "Microsoft.KeyVault/vaults",
  "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"
          ]
        }
      }
    ],
    ...

有効な使用方法Valid uses

reference 関数は、リソース定義のプロパティと、テンプレートまたはデプロイの出力セクションでのみ使用できます。The reference function can only be used in the properties of a resource definition and the outputs section of a template or deployment. プロパティの反復処理で使用する場合には、式がリソース プロパティに割り当てられるため、input に対して reference 関数を使用できます。When used with property iteration, you can use the reference function for input because the expression is assigned to the resource property.

reference 関数を使用してコピー ループの count プロパティの値を設定することはできません。You can't use the reference function to set the value of the count property in a copy loop. ループ内のその他のプロパティの設定には使用できます。You can use to set other properties in the loop. count プロパティの参照はブロックされます。このプロパティは reference 関数が解決される前に決定される必要があるためです。Reference is blocked for the count property because that property must be determined before the reference function is resolved.

入れ子になったテンプレートの outputs セクションで reference 関数または list* 関数を使用するには、内部スコープ評価を使用するか、入れ子になったテンプレートの代わりにリンクを使用するように expressionEvaluationOptions を設定する必要があります。To use the reference function or any list* function in the outputs section of a nested template, you must set the expressionEvaluationOptions to use inner scope evaluation or use a linked instead of a nested template.

reference 関数を条件付きでデプロイされるリソースで使用した場合、この関数はリソースがデプロイされていなくても評価されます。If you use the reference function in a resource that is conditionally deployed, the function is evaluated even if the resource isn't deployed. reference 関数で存在しないリソースを参照した場合、エラーが返されます。You get an error if the reference function refers to a resource that doesn't exist. リソースのデプロイ中にのみこの関数が評価されるようにするには、if 関数を使用します。Use the if function to make sure the function is only evaluated when the resource is being deployed. 条件付きでデプロイされるリソースで if と reference を使用するサンプル テンプレートについては、if 関数に関する説明を参照してください。See the if function for a sample template that uses if and reference with a conditionally deployed resource.

暗黙の依存関係Implicit dependency

参照されているリソースを同じテンプレート内でプロビジョニングし、(リソース ID ではなく) 名前でリソースを参照する場合は、reference 関数を使用することにより、あるリソースが他のリソースに依存することを暗黙的に宣言します。By using the reference function, you implicitly declare that one resource depends on another resource if the referenced resource is provisioned within same template and you refer to the resource by its name (not resource ID). dependsOn プロパティを一緒に使用する必要はありません。You don't need to also use the dependsOn property. 参照先のリソースがデプロイを完了するまで、関数は評価されません。The function isn't evaluated until the referenced resource has completed deployment.

リソースの名前または識別子Resource name or identifier

同じテンプレートでデプロイされるリソースを参照するときは、リソースの名前を指定します。When referencing a resource that is deployed in the same template, provide the name of the resource.

"value": "[reference(parameters('storageAccountName'))]"

同じテンプレートでデプロイされないリソースを参照するときは、リソース ID と apiVersion を指定します。When referencing a resource that isn't deployed in the same template, provide the resource ID and apiVersion.

"value": "[reference(resourceId(parameters('storageResourceGroup'), 'Microsoft.Storage/storageAccounts', parameters('storageAccountName')), '2018-07-01')]"

参照しているリソースがあいまいにならないようにするには、完全修飾リソース識別子を指定します。To avoid ambiguity about which resource you're referencing, you can provide a fully qualified resource identifier.

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

リソースに対する完全修飾参照を作成する場合、種類と名前からセグメントを結合する順序は、単に 2 つの連結ではありません。When constructing a fully qualified reference to a resource, the order to combine segments from the type and name isn't simply a concatenation of the two. 名前空間の後に、"種類/名前" のペアを具体性の低いものから高いものへの順に使用します。Instead, after the namespace, use a sequence of type/name pairs from least specific to most specific:

{resource-provider-namespace}/{parent-resource-type}/{parent-resource-name}[/{child-resource-type}/{child-resource-name}]{resource-provider-namespace}/{parent-resource-type}/{parent-resource-name}[/{child-resource-type}/{child-resource-name}]

次に例を示します。For example:

Microsoft.Compute/virtualMachines/myVM/extensions/myExtは正しいMicrosoft.Compute/virtualMachines/extensions/myVM/myExtは正しくないMicrosoft.Compute/virtualMachines/myVM/extensions/myExt is correct Microsoft.Compute/virtualMachines/extensions/myVM/myExt is not correct

リソース ID の作成を簡略化するには、concat() 関数ではなく、このドキュメントで説明されている resourceId() 関数を使用します。To simplify the creation of any resource ID, use the resourceId() functions described in this document instead of the concat() function.

マネージド ID を取得するGet managed identity

Azure リソースのマネージド ID は、一部のリソースに対して暗黙的に作成される拡張リソースの種類です。Managed identities for Azure resources are extension resource types that are created implicitly for some resources. テンプレートにはマネージ ID が明示的に定義されていないため、ID が適用されるリソースを参照する必要があります。Because the managed identity isn't explicitly defined in the template, you must reference the resource that the identity is applied to. 暗黙的に作成された ID を含め、すべてのプロパティを取得するには、Full を使用します。Use Full to get all of the properties, including the implicitly created identity.

パターンは次のとおりです。The pattern is:

"[reference(resourceId(<resource-provider-namespace>, <resource-name>, <API-version>, 'Full').Identity.propertyName]"

たとえば、仮想マシンに適用されるマネージド ID のプリンシパル ID を取得するには、次を使用します。For example, to get the principal ID for a managed identity that is applied to a virtual machine, use:

"[reference(resourceId('Microsoft.Compute/virtualMachines', variables('vmName')),'2019-12-01', 'Full').identity.principalId]",

または、仮想マシン スケール セットに適用されるマネージド ID のテナント ID を取得するには、次を使用します。Or, to get the tenant ID for a managed identity that is applied to a virtual machine scale set, use:

"[reference(resourceId('Microsoft.Compute/virtualMachineScaleSets',  variables('vmNodeType0Name')), 2019-12-01, 'Full').Identity.tenantId]"

参照の例Reference example

次のテンプレート例では、リソースをデプロイし、そのリソースを参照します。The following example template deploys a resource, and references that resource.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
      "storageAccountName": {
          "type": "string"
      }
  },
  "resources": [
    {
      "name": "[parameters('storageAccountName')]",
      "type": "Microsoft.Storage/storageAccounts",
      "apiVersion": "2016-12-01",
      "sku": {
        "name": "Standard_LRS"
      },
      "kind": "Storage",
      "location": "[resourceGroup().location]",
      "tags": {},
      "properties": {
      }
    }
  ],
  "outputs": {
      "referenceOutput": {
          "type": "object",
          "value": "[reference(parameters('storageAccountName'))]"
      },
      "fullReferenceOutput": {
        "type": "object",
        "value": "[reference(parameters('storageAccountName'), '2016-12-01', 'Full')]"
      }
    }
}

前の例では、2 つのオブジェクトが返されます。The preceding example returns the two objects. properties オブジェクトの形式は次のとおりです。The properties object is in the following format:

{
   "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
}

完全なオブジェクトの形式は次のとおりです。The full object is in the following format:

{
  "apiVersion":"2016-12-01",
  "location":"southcentralus",
  "sku": {
    "name":"Standard_LRS",
    "tier":"Standard"
  },
  "tags":{},
  "kind":"Storage",
  "properties": {
    "creationTime":"2017-10-09T18:55:40.5863736Z",
    "primaryEndpoints": {
      "blob":"https://examplestorage.blob.core.windows.net/",
      "file":"https://examplestorage.file.core.windows.net/",
      "queue":"https://examplestorage.queue.core.windows.net/",
      "table":"https://examplestorage.table.core.windows.net/"
    },
    "primaryLocation":"southcentralus",
    "provisioningState":"Succeeded",
    "statusOfPrimary":"available",
    "supportsHttpsTrafficOnly":false
  },
  "subscriptionId":"<subscription-id>",
  "resourceGroupName":"functionexamplegroup",
  "resourceId":"Microsoft.Storage/storageAccounts/examplestorage",
  "referenceApiVersion":"2016-12-01",
  "condition":true,
  "isConditionTrue":true,
  "isTemplateResource":false,
  "isAction":false,
  "provisioningOperation":"Read"
}

次のテンプレート例では、このテンプレートでデプロイされていないストレージ アカウントが参照されます。The following example template references a storage account that isn't deployed in this template. このストレージ アカウントは、既に同じサブスクリプション内に存在します。The storage account already exists within the same subscription.

{
    "$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": {
            "value": "[reference(resourceId(parameters('storageResourceGroup'), 'Microsoft.Storage/storageAccounts', parameters('storageAccountName')), '2018-07-01')]",
            "type": "object"
        }
    }
}

resourceGroupresourceGroup

resourceGroup()

現在のリソース グループを表すオブジェクトを返します。Returns an object that represents the current resource group.

戻り値Return value

返されるオブジェクトの形式は次のとおりです。The returned object is in the following format:

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

managedBy プロパティは、別のサービスによって管理されているリソースを含むリソース グループに対してのみ返されます。The managedBy property is returned only for resource groups that contain resources that are managed by another service. Managed Applications、Databricks、および AKS の場合、プロパティの値は管理しているリソースのリソース ID になります。For Managed Applications, Databricks, and AKS, the value of the property is the resource ID of the managing resource.

解説Remarks

resourceGroup() 関数は、サブスクリプション レベルでデプロイされたテンプレートで使用できません。The resourceGroup() function can't be used in a template that is deployed at the subscription level. リソース グループにデプロイされているテンプレートでのみ使用できます。It can only be used in templates that are deployed to a resource group. 親テンプレートがサブスクリプションにデプロイされていても、リソース グループをターゲットとするリンク済みまたは入れ子になったテンプレート (内側のスコープを持つ)resourceGroup() 関数を使用することができます。You can use the resourceGroup() function in a linked or nested template (with inner scope) that targets a resource group, even when the parent template is deployed to the subscription. そのシナリオでは、リンク済みまたは入れ子になったテンプレートはリソース グループ レベルでデプロイされます。In that scenario, the linked or nested template is deployed at the resource group level. サブスクリプション レベル デプロイでのリソース グループのターゲット設定の詳細については、「複数のサブスクリプションまたはリソース グループに Azure リソースをデプロイする」を参照してください。For more information about targeting a resource group in a subscription level deployment, see Deploy Azure resources to more than one subscription or resource group.

resourceGroup 関数の一般的な用途では、リソース グループと同じ場所にリソースを作成します。A common use of the resourceGroup function is to create resources in the same location as the resource group. 次の例では、既定のパラメーター値にリソース グループの場所を使用します。The following example uses the resource group location for a default parameter value.

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

resourceGroup 関数を使用して、リソース グループからリソースにタグを適用することもできます。You can also use the resourceGroup function to apply tags from the resource group to a resource. 詳細については、「リソース グループからタグを適用する」を参照してください。For more information, see Apply tags from resource group.

入れ子になっているテンプレートを使用して複数のリソース グループにデプロイするとき、resourceGroup 関数を評価するためのスコープを指定できます。When using nested templates to deploy to multiple resource groups, you can specify the scope for evaluating the resourceGroup function. 詳細については、「複数のサブスクリプションまたはリソース グループに Azure リソースをデプロイする」を参照してください。For more information, see Deploy Azure resources to more than one subscription or resource group.

リソース グループの例Resource group example

次のテンプレート例は、リソース グループのプロパティを返します。The following example template returns the properties of the resource group.

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

前の例では、次の形式のオブジェクトが返されます。The preceding example returns an object in the following format:

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

resourceIdresourceId

resourceId([subscriptionId], [resourceGroupName], resourceType, resourceName1, [resourceName2], ...)

リソースの一意の識別子を返します。Returns the unique identifier of a resource. リソース名があいまいであるか、同じテンプレート内でプロビジョニングされていないときに、この関数を使用します。You use this function when the resource name is ambiguous or not provisioned within the same template. 返される ID の形式は、デプロイがリソース グループ、サブスクリプション、管理グループ、またはテナントのスコープで行われるかどうかによって異なります。The format of the returned identifier varies based on whether the deployment happens at the scope of a resource group, subscription, management group, or tenant.

パラメーターParameters

パラメーターParameter 必須Required Type 説明Description
subscriptionIdsubscriptionId いいえNo 文字列 (GUID 形式)string (In GUID format) 既定値は、現在のサブスクリプションです。Default value is the current subscription. 別のサブスクリプション内のリソースを取得する必要がある場合は、この値を指定します。Specify this value when you need to retrieve a resource in another subscription. リソース グループまたはサブスクリプションのスコープでデプロイする場合にのみ、この値を指定します。Only provide this value when deploying at the scope of a resource group or subscription.
resourceGroupNameresourceGroupName いいえNo stringstring 既定値は、現在のリソース グループです。Default value is current resource group. 別のリソース グループ内のリソースを取得する必要がある場合は、この値を指定します。Specify this value when you need to retrieve a resource in another resource group. リソース グループのスコープでデプロイする場合にのみ、この値を指定します。Only provide this value when deploying at the scope of a resource group.
resourceTyperesourceType はいYes stringstring リソース プロバイダーの名前空間を含むリソースの種類。Type of resource including resource provider namespace.
resourceName1resourceName1 はいYes stringstring リソースの名前。Name of resource.
resourceName2resourceName2 いいえNo stringstring 次のリソース名セグメント (必要な場合)。Next resource name segment, if needed.

さらに他のセグメントがリソースの種類に含まれる場合は、続けてリソース名をパラメーターとして追加します。Continue adding resource names as parameters when the resource type includes more segments.

戻り値Return value

テンプレートがリソース グループのスコープでデプロイされると、リソース ID は次の形式で返されます。When the template is deployed at the scope of a resource group, the resource ID is returned in the following format:

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

他のデプロイのスコープ用の resourceId 関数を使用できますが、ID の形式は変更されます。You can use the resourceId function for other deployment scopes, but the format of the ID changes.

サブスクリプションにデプロイするときに resourceId を使用する場合、リソース ID は次の形式で返されます。If you use resourceId while deploying to a subscription, the resource ID is returned in the following format:

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

管理グループまたはテナントにデプロイするときに resourceId を使用する場合、リソース ID は次の形式で返されます。If you use resourceId while deploying to a management group or tenant, the resource ID is returned in the following format:

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

混乱を避けるために、サブスクリプション、管理グループ、またはテナントにデプロイされたリソースを操作するときは、resourceId を使用しないことをお勧めします。To avoid confusion, we recommend that you not use resourceId when working with resources deployed to the subscription, management group, or tenant. 代わりに、そのスコープに対して設計されている ID 関数を使用します。Instead, use the ID function that is designed for the scope.

サブスクリプション レベルのリソースの場合、subscriptionResourceId 関数を使用します。For subscription-level resources, use the subscriptionResourceId function.

管理グループレベルのリソースの場合、extensionResourceId 関数を使用して、管理グループの拡張として実装されているリソースを参照してください。For management group-level resources, use the extensionResourceId function to reference a resource that is implemented as an extension of a management group. たとえば、管理グループにデプロイされているカスタム ポリシー定義は、管理グループの拡張機能です。For example, custom policy definitions that are deployed to a management group are extensions of the management group. テナントにデプロイされているが管理グループで使用できるリソースを参照するには、tenantResourceId 関数を使用します。Use the tenantResourceId function to reference resources that are deployed to the tenant but available in your management group. たとえば、組み込みのポリシー定義は、テナント レベルのリソースとして実装されます。For example, built-in policy definitions are implemented as tenant level resources.

テナントレベルのリソースの場合、tenantResourceId 関数を使用します。For tenant-level resources, use the tenantResourceId function. 組み込みのポリシー定義はテナント レベルで実装されているため、tenantResourceId を使用します。Use tenantResourceId for built-in policy definitions because they are implemented at the tenant level.

解説Remarks

指定するパラメーターの数は、リソースが親であるか子であるか、また、リソースが同じサブスクリプション (またはリソース グループ) にあるかどうかで異なります。The number of parameters you provide varies based on whether the resource is a parent or child resource, and whether the resource is in the same subscription or resource group.

同じサブスクリプションおよび同じリソース グループに存在する親リソースの ID を取得するには、リソースの種類と名前を指定します。To get the resource ID for a parent resource in the same subscription and resource group, provide the type and name of the resource.

"[resourceId('Microsoft.ServiceBus/namespaces', 'namespace1')]"

子リソースのリソース ID を取得するには、リソースの種類に含まれるセグメント数に注目します。To get the resource ID for a child resource, pay attention to the number of segments in the resource type. リソースの種類を構成するセグメントごとにリソース名を指定してください。Provide a resource name for each segment of the resource type. セグメントの名前は、その階層部分に存在するリソースと対応関係にあります。The name of the segment corresponds to the resource that exists for that part of the hierarchy.

"[resourceId('Microsoft.ServiceBus/namespaces/queues/authorizationRules', 'namespace1', 'queue1', 'auth1')]"

同じサブスクリプションで、リソース グループが異なるリソースの ID を取得するには、リソース グループの名前を指定します。To get the resource ID for a resource in the same subscription but different resource group, provide the resource group name.

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

サブスクリプションもリソース グループも異なるリソースの ID を取得するには、サブスクリプション ID とリソース グループ名を指定します。To get the resource ID for a resource in a different subscription and resource group, provide the subscription ID and resource group name.

"[resourceId('xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx', 'otherResourceGroup', 'Microsoft.Storage/storageAccounts','examplestorage')]"

代替のリソース グループで、ストレージ アカウントや仮想ネットワークを使用するときには、多くの場合にこの関数を使用する必要があります。Often, you need to use this function when using a storage account or virtual network in an alternate resource group. 次の例は、外部のリソース グループのリソースを簡単に使用する方法を示しています。The following example shows how a resource from an external resource group can easily be used:

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
      "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": [
  {
      "apiVersion": "2015-05-01-preview",
      "type": "Microsoft.Network/networkInterfaces",
      "name": "[parameters('nicName')]",
      "location": "[parameters('location')]",
      "properties": {
          "ipConfigurations": [{
              "name": "ipconfig1",
              "properties": {
                  "privateIPAllocationMethod": "Dynamic",
                  "subnet": {
                      "id": "[variables('subnet1Ref')]"
                  }
              }
          }]
       }
  }]
}

リソース ID の例Resource ID example

次のテンプレート例では、リソース グループ内にあるストレージ アカウントのリソース ID を返します。The following example template returns the resource ID for a storage account in the resource group:

{
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "resources": [],
    "outputs": {
        "sameRGOutput": {
            "value": "[resourceId('Microsoft.Storage/storageAccounts','examplestorage')]",
            "type" : "string"
        },
        "differentRGOutput": {
            "value": "[resourceId('otherResourceGroup', 'Microsoft.Storage/storageAccounts','examplestorage')]",
            "type" : "string"
        },
        "differentSubOutput": {
            "value": "[resourceId('11111111-1111-1111-1111-111111111111', 'otherResourceGroup', 'Microsoft.Storage/storageAccounts','examplestorage')]",
            "type" : "string"
        },
        "nestedResourceOutput": {
            "value": "[resourceId('Microsoft.SQL/servers/databases', 'serverName', 'databaseName')]",
            "type" : "string"
        }
    }
}

既定値を使用した場合の前の例の出力は次のようになります。The output from the preceding example with the default values is:

名前Name TypeType Value
sameRGOutputsameRGOutput StringString /subscriptions/{current-sub-id}/resourceGroups/examplegroup/providers/Microsoft.Storage/storageAccounts/examplestorage/subscriptions/{current-sub-id}/resourceGroups/examplegroup/providers/Microsoft.Storage/storageAccounts/examplestorage
differentRGOutputdifferentRGOutput StringString /subscriptions/{current-sub-id}/resourceGroups/otherResourceGroup/providers/Microsoft.Storage/storageAccounts/examplestorage/subscriptions/{current-sub-id}/resourceGroups/otherResourceGroup/providers/Microsoft.Storage/storageAccounts/examplestorage
differentSubOutputdifferentSubOutput StringString /subscriptions/11111111-1111-1111-1111-111111111111/resourceGroups/otherResourceGroup/providers/Microsoft.Storage/storageAccounts/examplestorage/subscriptions/11111111-1111-1111-1111-111111111111/resourceGroups/otherResourceGroup/providers/Microsoft.Storage/storageAccounts/examplestorage
nestedResourceOutputnestedResourceOutput StringString /subscriptions/{current-sub-id}/resourceGroups/examplegroup/providers/Microsoft.SQL/servers/serverName/databases/databaseName/subscriptions/{current-sub-id}/resourceGroups/examplegroup/providers/Microsoft.SQL/servers/serverName/databases/databaseName

subscriptionsubscription

subscription()

現在のデプロイのサブスクリプションの詳細を返します。Returns details about the subscription for the current deployment.

戻り値Return value

この関数は次の形式を返します。The function returns the following format:

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

解説Remarks

入れ子になっているテンプレートを使用して複数のサブスクリプションにデプロイするとき、サブスクリプション関数を評価するためのスコープを指定できます。When using nested templates to deploy to multiple subscriptions, you can specify the scope for evaluating the subscription function. 詳細については、「複数のサブスクリプションまたはリソース グループに Azure リソースをデプロイする」を参照してください。For more information, see Deploy Azure resources to more than one subscription or resource group.

サブスクリプションの例Subscription example

次のテンプレート例は、outputs セクションで呼び出される subscription 関数を示しています。The following example template shows the subscription function called in the outputs section.

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

subscriptionResourceIdsubscriptionResourceId

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

サブスクリプション レベルでデプロイされたリソースの一意の識別子を返します。Returns the unique identifier for a resource deployed at the subscription level.

パラメーターParameters

パラメーターParameter 必須Required Type 説明Description
subscriptionIdsubscriptionId いいえNo 文字列 (GUID 形式)string (in GUID format) 既定値は、現在のサブスクリプションです。Default value is the current subscription. 別のサブスクリプション内のリソースを取得する必要がある場合は、この値を指定します。Specify this value when you need to retrieve a resource in another subscription.
resourceTyperesourceType はいYes stringstring リソース プロバイダーの名前空間を含むリソースの種類。Type of resource including resource provider namespace.
resourceName1resourceName1 はいYes stringstring リソースの名前。Name of resource.
resourceName2resourceName2 いいえNo stringstring 次のリソース名セグメント (必要な場合)。Next resource name segment, if needed.

さらに他のセグメントがリソースの種類に含まれる場合は、続けてリソース名をパラメーターとして追加します。Continue adding resource names as parameters when the resource type includes more segments.

戻り値Return value

識別子は、次の形式で返されます。The identifier is returned in the following format:

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

解説Remarks

この関数を使用すると、リソース グループではなく、サブスクリプションにデプロイされているリソースのリソース ID を取得できます。You use this function to get the resource ID for resources that are deployed to the subscription rather than a resource group. 返される ID は、リソース グループ値が含まれていないという点で、resourceId 関数から返される値とは異なります。The returned ID differs from the value returned by the resourceId function by not including a resource group value.

subscriptionResourceID の例subscriptionResourceID example

次のテンプレートでは、組み込みのロールが割り当てられます。The following template assigns a built-in role. リソース グループまたはサブスクリプションにデプロイできます。You can deploy it to either a resource group or subscription. また、subscriptionResourceId 関数を使って、組み込みロールのリソース ID を取得することができます。It uses the subscriptionResourceId function to get the resource ID for built-in roles.

{
    "$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": "2018-09-01-preview",
            "name": "[parameters('roleNameGuid')]",
            "properties": {
                "roleDefinitionId": "[variables(parameters('builtInRoleType'))]",
                "principalId": "[parameters('principalId')]"
            }
        }
    ]
}

tenantResourceIdtenantResourceId

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

テナント レベルでデプロイされたリソースの一意の識別子を返します。Returns the unique identifier for a resource deployed at the tenant level.

パラメーターParameters

パラメーターParameter 必須Required Type 説明Description
resourceTyperesourceType はいYes stringstring リソース プロバイダーの名前空間を含むリソースの種類。Type of resource including resource provider namespace.
resourceName1resourceName1 はいYes stringstring リソースの名前。Name of resource.
resourceName2resourceName2 いいえNo stringstring 次のリソース名セグメント (必要な場合)。Next resource name segment, if needed.

さらに他のセグメントがリソースの種類に含まれる場合は、続けてリソース名をパラメーターとして追加します。Continue adding resource names as parameters when the resource type includes more segments.

戻り値Return value

識別子は、次の形式で返されます。The identifier is returned in the following format:

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

解説Remarks

テナントにデプロイされているリソースのリソース ID を取得するには、この関数を使用します。You use this function to get the resource ID for a resource that is deployed to the tenant. 返される ID は、リソース グループまたはサブスクリプションの値を含まないという点で、他のリソース ID 関数から返される値とは異なります。The returned ID differs from the values returned by other resource ID functions by not including resource group or subscription values.

tenantResourceId の例tenantResourceId example

組み込みのポリシー定義は、テナント レベルのリソースです。Built-in policy definitions are tenant level resources. 組み込みのポリシー定義を参照するポリシー割り当てをデプロイするには、tenantResourceId 関数を使用します。To deploy a policy assignment that references a built-in policy definition, use the tenantResourceId function.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "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."
      }
    },
    "policyDefinitionID": {
      "type": "string",
      "defaultValue": "0a914e76-4921-4c19-b460-a2d36003525a",
      "metadata": {
        "description": "Specifies the ID of the policy definition or policy set definition being assigned."
      }
    }
  },
  "resources": [
    {
      "type": "Microsoft.Authorization/policyAssignments",
      "name": "[parameters('policyAssignmentName')]",
      "apiVersion": "2019-09-01",
      "properties": {
        "scope": "[subscriptionResourceId('Microsoft.Resources/resourceGroups', resourceGroup().name)]",
        "policyDefinitionId": "[tenantResourceId('Microsoft.Authorization/policyDefinitions', parameters('policyDefinitionID'))]"
      }
    }
  ]
}

次のステップNext steps