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

リソース マネージャーには、リソース値を取得する次の関数が用意されています。Resource Manager provides the following functions for getting resource values:

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

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. 一般的に使用されるものに listKeyslistSecrets があります。Some common usages are listKeys and listSecrets.

parametersParameters

パラメーターParameter 必須Required TypeType 説明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.

実装Implementations

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

リソースの種類Resource type 関数名Function name
Microsoft.AnalysisServices/serversMicrosoft.AnalysisServices/servers listGatewayStatuslistGatewayStatus
Microsoft.Automation/automationAccountsMicrosoft.Automation/automationAccounts listKeyslistKeys
Microsoft.Batch/batchAccountsMicrosoft.Batch/batchAccounts listkeyslistkeys
Microsoft.BatchAI/workspaces/experiments/jobsMicrosoft.BatchAI/workspaces/experiments/jobs listoutputfileslistoutputfiles
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 listPolicieslistPolicies
Microsoft.ContainerRegistry/registriesMicrosoft.ContainerRegistry/registries listUsageslistUsages
Microsoft.ContainerRegistry/registries/webhooksMicrosoft.ContainerRegistry/registries/webhooks listEventslistEvents
Microsoft.ContainerService/managedClustersMicrosoft.ContainerService/managedClusters listClusterAdminCredentiallistClusterAdminCredential
Microsoft.ContainerService/managedClustersMicrosoft.ContainerService/managedClusters listClusterUserCredentiallistClusterUserCredential
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.Devices/iotHubsMicrosoft.Devices/iotHubs 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.DomainRegistrationMicrosoft.DomainRegistration listDomainRecommendationslistDomainRecommendations
Microsoft.DomainRegistration/topLevelDomainsMicrosoft.DomainRegistration/topLevelDomains listAgreementslistAgreements
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.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.MachineLearning/webServicesMicrosoft.MachineLearning/webServices listkeyslistkeys
Microsoft.MachineLearning/WorkspacesMicrosoft.MachineLearning/Workspaces listworkspacekeyslistworkspacekeys
Microsoft.MachineLearningServices/workspaces/computesMicrosoft.MachineLearningServices/workspaces/computes listKeyslistKeys
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.NotificationHubs/Namespaces/authorizationRulesMicrosoft.NotificationHubs/Namespaces/authorizationRules listkeyslistkeys
Microsoft.NotificationHubs/Namespaces/NotificationHubs/authorizationRulesMicrosoft.NotificationHubs/Namespaces/NotificationHubs/authorizationRules listkeyslistkeys
Microsoft.OperationalInsights/workspacesMicrosoft.OperationalInsights/workspaces listKeyslistKeys
Microsoft.Relay/namespaces/authorizationRulesMicrosoft.Relay/namespaces/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.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/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

どのリソースの種類にリスト操作が含まれているのかを判断するには、次のオプションを使用できます。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.

Example

次のテンプレート例は、outputs セクションでストレージ アカウントのプライマリ キーとセカンダリ キーを返す方法を示しています。The following example template shows how to return the primary and secondary keys from a storage account in the outputs section. また、ストレージ アカウントの SAS トークンも返します。It also returns a SAS token for the storage account.

SAS トークンを取得するには、有効期限のオブジェクトを渡します。To get the SAS token, pass an object for the expiry time. 有効期限は将来の日付にする必要があります。The expiry time must be in the future. この例は、list 関数を使用する方法を示したものです。This example is intended to show how you use the list functions. 通常、SAS トークンを出力値として返すのではなく、リソース値で使用します。Typically, you would use the SAS token in a resource value rather than return it as an output value. 出力値はデプロイ履歴に格納され、セキュリティで保護されません。Output values are stored in the deployment history and aren't secure.

{
    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "storagename": {
            "type": "string"
        },
        "location": {
            "type": "string",
            "defaultValue": "southcentralus"
        },
        "accountSasProperties": {
            "type": "object",
            "defaultValue": {
                "signedServices": "b",
                "signedPermission": "r",
                "signedExpiry": "2018-08-20T11:00:00Z",
                "signedResourceTypes": "s"
            }
        }
    },
    "resources": [
        {
            "apiVersion": "2018-02-01",
            "name": "[parameters('storagename')]",
            "location": "[parameters('location')]",
            "type": "Microsoft.Storage/storageAccounts",
            "sku": {
                "name": "Standard_LRS"
            },
            "kind": "StorageV2",
            "properties": {
                "supportsHttpsTrafficOnly": false,
                "accessTier": "Hot",
                "encryption": {
                    "services": {
                        "blob": {
                            "enabled": true
                        },
                        "file": {
                            "enabled": true
                        }
                    },
                    "keySource": "Microsoft.Storage"
                }
            },
            "dependsOn": []
        }
    ],
    "outputs": {
        "keys": {
            "type": "object",
            "value": "[listKeys(parameters('storagename'), '2018-02-01')]"
        },
        "accountSAS": {
            "type": "object",
            "value": "[listAccountSas(parameters('storagename'), '2018-02-01', parameters('accountSasProperties'))]"
        }
    }
}

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.

parametersParameters

パラメーターParameter 必須Required TypeType 説明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.

Example

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

{
    "$schema": "https://schema.management.azure.com/schemas/2015-01-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.

parametersParameters

パラメーターParameter 必須Required TypeType 説明Description
resourceName または resourceIdentifierresourceName or resourceIdentifier はいYes stringstring 名前またはリソースの一意の識別子。Name or unique identifier of a resource.
apiVersionapiVersion いいえNo stringstring 指定したリソースの API バージョンです。API version of the specified resource. 同じテンプレート内でリソースがプロビジョニングされない場合に、このパラメーターを追加します。Include this parameter when the resource isn't provisioned within same template. 通常、yyyy-mm-dd の形式。Typically, in the format, yyyy-mm-dd.
'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. また、返される値は、完全なオブジェクトを指定したかどうかによって異なります。Also, the returned value differs based on whether you specified the full object. あるリソースの種類のプロパティを確認するには、この例に示すように、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. 現在のテンプレート内のリソースを参照する場合は、パラメーターとしてリソース名のみを指定します。When referencing a resource in the current template, provide only the resource name as a parameter. 以前にデプロイされたリソースを参照する場合は、リソースのリソース ID と API バージョンを指定します。When referencing a previously deployed resource, provide the resource ID and an API version for the resource. リソースに有効な API バージョンは、テンプレート リファレンスで確認することができます。You can determine valid API versions for your resource in the template reference.

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. これを count と一緒に使用することはできません。カウントは、reference 関数が解決される前に決定される必要があるためです。You can't use it with count because the count must be determined before the reference function is resolved.

参照されているリソースを同じテンプレート内でプロビジョニングし、(リソース 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.

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.

ある種類のリソースによって返されるプロパティの名前と値を確認するには、outputs セクションでオブジェクトを返すテンプレートを作成します。To see the property names and values for a resource type, create a template that returns the object in the outputs section. その種類のリソースが既にある場合、このテンプレートは新しいリソースはデプロイせずにオブジェクトを返します。If you have an existing resource of that type, your template returns the object without deploying any new resources.

通常、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(concat('Microsoft.Storage/storageAccounts/', parameters('storageAccountName')), '2016-01-01').primaryEndpoints.blob]",
        "type" : "string"
    },
    "FQDN": {
        "value": "[reference(concat('Microsoft.Network/publicIPAddresses/', parameters('ipAddressName')), '2016-03-30').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": "[reference(concat('Microsoft.Compute/virtualMachines/', variables('vmName')), '2017-03-30', 'Full').identity.tenantId]",
    "accessPolicies": [
      {
        "tenantId": "[reference(concat('Microsoft.Compute/virtualMachines/', variables('vmName')), '2017-03-30', 'Full').identity.tenantId]",
        "objectId": "[reference(concat('Microsoft.Compute/virtualMachines/', variables('vmName')), '2017-03-30', 'Full').identity.principalId]",
        "permissions": {
          "keys": [
            "all"
          ],
          "secrets": [
            "all"
          ]
        }
      }
    ],
    ...

前のテンプレートの完全な例については、Windows での Key Vault に関するページを参照してください。For the complete example of the preceding template, see Windows to Key Vault. 同様の例を Linux についても利用できます。A similar example is available for Linux.

Example

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

{
  "$schema": "https://schema.management.azure.com/schemas/2015-01-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/2015-01-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}",
  "location": "{resourceGroupLocation}",
  "tags": {
  },
  "properties": {
    "provisioningState": "{status}"
  }
}

解説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 関数の一般的な用途では、リソース グループと同じ場所にリソースを作成します。A common use of the resourceGroup function is to create resources in the same location as the resource group. 次の例では、リソース グループの場所を使用して、Web サイトの場所を割り当てます。The following example uses the resource group location to assign the location for a web site.

"resources": [
   {
      "apiVersion": "2016-08-01",
      "type": "Microsoft.Web/sites",
      "name": "[parameters('siteName')]",
      "location": "[resourceGroup().location]",
      ...
   }
]

Example

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

{
    "$schema": "https://schema.management.azure.com/schemas/2015-01-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",
  "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.

parametersParameters

パラメーターParameter 必須Required TypeType 説明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.
resourceGroupNameresourceGroupName いいえNo stringstring 既定値は、現在のリソース グループです。Default value is current resource group. 別のリソース グループ内のリソースを取得する必要がある場合は、この値を指定します。Specify this value when you need to retrieve a resource in another 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 resource is nested.

戻り値Return value

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

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

解説Remarks

resourceId() 関数をサブスクリプション レベルのデプロイで使用した場合、そのレベルでデプロイされたリソースの ID のみを取得できます。When used with a subscription-level deployment, the resourceId() function can only retrieve the ID of resources deployed at that level. たとえば、ポリシー定義またはロール定義の ID は取得できますが、ストレージ アカウントの ID は取得できません。For example, you can get the ID of a policy definition or role definition, but not the ID of a storage account. リソース グループへのデプロイの場合は、その逆になります。For deployments to a resource group, the opposite is true. サブスクリプション レベルでデプロイされたリソースのリソース ID を取得することはできません。You can't get the resource ID of resources deployed at the subscription-level.

指定するパラメーター値は、リソースが現在のデプロイと同じサブスクリプションおよびリソース グループに含まれるかどうかによって異なります。The parameter values you specify depend on whether the resource is in the same subscription and resource group as the current deployment. 同じサブスクリプションとリソース グループ内にあるストレージ アカウントのリソース ID を取得するには、次のようにします。To get the resource ID for a storage account in the same subscription and resource group, use:

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

サブスクリプションは同じでもリソース グループが異なるストレージ アカウントのリソース ID を取得するには、次のようにします。To get the resource ID for a storage account in the same subscription but a different resource group, use:

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

サブスクリプションとリソース グループが異なるストレージ アカウントのリソース ID を取得するには、次のようにします。To get the resource ID for a storage account in a different subscription and resource group, use:

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

異なるリソース グループ内のデータベースのリソース ID を取得するには、次のようにします。To get the resource ID for a database in a different resource group, use:

"[resourceId('otherResourceGroup', 'Microsoft.SQL/servers/databases', parameters('serverName'), parameters('databaseName'))]"

サブスクリプション スコープでデプロイするときにサブスクリプション レベルのリソースのリソース ID を取得するには、次のようにします。To get the resource ID of a subscription-level resource when deploying at the subscription scope, use:

"[resourceId('Microsoft.Authorization/policyDefinitions', 'locationpolicy')]"

代替のリソース グループで、ストレージ アカウントや仮想ネットワークを使用するときには、多くの場合にこの関数を使用する必要があります。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/2015-01-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')]"
                  }
              }
          }]
       }
  }]
}

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/2015-01-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:

NameName 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

サブスクリプションsubscription

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

Example

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

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

次の手順Next steps