Azure Resource Manager 템플릿용 리소스 함수Resource functions for Azure Resource Manager templates

Resource Manager는 리소스 값을 가져오기 위한 다음 함수를 제공합니다.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.

매개 변수Parameters

매개 변수를 포함해야 합니다.Parameter 필수Required 형식Type 설명Description
resourceName 또는 resourceIdentifierresourceName or resourceIdentifier Yes 문자열string 리소스에 대한 고유 식별자.Unique identifier for the resource.
apiVersionapiVersion Yes 문자열string 리소스 런타임 상태의 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

list 작업이 있는 리소스 유형을 확인할 수 있게 다음 PowerShell 옵션이 제공됩니다.To determine which resource types have a list operation, you have the following options:

  • 리소스 공급자에 대한 REST API 작업을 보고 list 작업을 찾습니다.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 cmdlet을 사용합니다.Use the Get-AzProviderOperation PowerShell cmdlet. 다음 예제에서는 저장소 계정에 대한 모든 list 작업을 가져옵니다.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

반환된 개체는 사용하는 list 함수에 따라 다릅니다.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}"
    }
  ]
}

다른 list 함수는 다른 반환 형식을 갖습니다.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. 참조된 리소스를 배포하는 동일한 템플릿에서 list 함수를 사용하는 경우 리소스 이름을 사용합니다.When using a list function in the same template that deploys the referenced resource, use the resource name.

사용 하는 경우는 목록 리소스 배포 되지 않는 경우에 리소스를 조건부로 배포 되는 함수에 함수 계산 됩니다.If you use a list function in a resource that is conditionally deployed, the function is evaluated even if the resource isn't deployed. 오류가 발생 합니다 목록 함수 존재 하지 않는 리소스를 가리킵니다.You get an error if the list function refers to a resource that doesn't exist. 사용 된 경우 함수는 리소스가 있는 경우에 계산 되도록 하는 함수입니다.Use the if function to make sure the function is only evaluated when the resource exists. 참조를 하는 경우 함수 경우 사용 하는 샘플 템플릿은 조건부로 배포 된 리소스를 사용 하 여 목록에 대 한 합니다.See the if function for a sample template that uses if and list with a conditionally deployed resource.

Example

다음 예제 템플릿에서는 출력 섹션의 저장소 계정에서 기본 및 보조 키를 반환하는 방법을 보여줍니다.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. 이 예제에서는 목록 함수를 사용하는 방법을 표시할 것입니다.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.

매개 변수Parameters

매개 변수를 포함해야 합니다.Parameter 필수Required 형식Type 설명Description
providerNamespaceproviderNamespace Yes 문자열string 공급자의 네임스페이스입니다.Namespace of the provider
resourceTyperesourceType 아닙니다.No 문자열string 지정된 네임스페이스 내의 리소스 유형입니다.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

다음 예제 템플릿에서는 공급자 함수를 사용하는 방법을 보여줍니다.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 리소스 공급자 및 사이트 리소스 유형의 경우 앞의 예제는 다음과 같은 형식의 개체를 반환합니다.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 문자열string 리소스의 이름 또는 고유 식별자입니다.Name or unique identifier of a resource.
apiVersionapiVersion 아닙니다.No 문자열string 지정된 리소스의 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 문자열string 전체 리소스 개체를 반환할지 여부를 지정하는 값입니다.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

참조 함수는 이전에 배포한 리소스 또는 현재 템플릿에 배포된 리소스의 런타임 상태를 검색합니다.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.

참조 함수는 리소스 정의의 속성과 템플릿 또는 배포의 출력 섹션에서만 사용할 수 있습니다.The reference function can only be used in the properties of a resource definition and the outputs section of a template or deployment.

참조 함수를 사용하여 참조되는 리소스가 동일한 템플릿 내에서 프로비전되는 경우 한 리소스가 다른 리소스에 종속되도록 암시적으로 선언하고, 해당 이름별로 리소스를 참조합니다(리소스 ID 아님).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.

사용 하는 경우는 참조 리소스 배포 되지 않는 경우에 리소스를 조건부로 배포 되는 함수에 함수 계산 됩니다.If you use the reference function in a resource that is conditionally deployed, the function is evaluated even if the resource isn't deployed. 오류가 발생 합니다 참조 함수 존재 하지 않는 리소스를 가리킵니다.You get an error if the reference function refers to a resource that doesn't exist. 사용 된 경우 함수는 리소스가 있는 경우에 계산 되도록 하는 함수입니다.Use the if function to make sure the function is only evaluated when the resource exists. 참조를 하는 경우 함수 경우 사용 하는 샘플 템플릿 및 조건에 따라 배포 된 리소스를 사용 하 여 참조 합니다.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"
          ]
        }
      }
    ],
    ...

이전 템플릿의 전체 예제는 WindowsToKeyvault를 참조하세요.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')]"
      }
    }
}

앞의 예제에서는 두 개의 개체를 반환합니다.The preceding example returns the two objects. 속성 개체의 형식은 다음과 같습니다.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. 다음 예에서는 리소스 그룹 위치를 사용하여 웹 사이트에 대한 위치를 할당합니다.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.

매개 변수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.
resourceGroupNameresourceGroupName 아닙니다.No 문자열string 기본값은 현재 리소스 그룹입니다.Default value is current resource group. 다른 리소스 그룹에서 리소스를 검색해야 하는 경우 이 값을 지정합니다.Specify this value when you need to retrieve a resource in another resource group.
resourceTyperesourceType Yes 문자열string 리소스 공급자 네임스페이스를 포함하는 리소스 유형입니다.Type of resource including resource provider namespace.
resourceName1resourceName1 Yes 문자열string 리소스의 이름입니다.Name of resource.
resourceName2resourceName2 아닙니다.No 문자열string 리소스가 중첩된 경우 다음 리소스 이름 세그먼트입니다.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:

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

Example

다음 예제 템플릿에서는 출력 섹션에서 호출되는 구독 함수를 보여줍니다.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