Bicep의 리소스 함수
이 문서에서는 리소스 값을 가져오는 Bicep 함수에 대해 설명합니다.
현재 배포에서 값을 가져오려면 배포 값 함수를 참조하세요.
extensionResourceId
extensionResourceId(resourceId, resourceType, resourceName1, [resourceName2], ...)
확장 리소스에 대한 리소스 ID를 반환합니다. 확장 리소스는 해당 기능에 추가하기 위해 다른 리소스에 적용되는 리소스 종류입니다.
네임스페이스: az.
extensionResourceId
함수는 Bicep 파일에서 사용할 수 있지만 일반적으로 필요하지 않습니다. 대신 리소스에 대한 기호 이름을 사용하고 id
속성에 액세스합니다.
이 함수에서 반환되는 리소스 ID의 기본 형식은 다음과 같습니다.
{scope}/providers/{extensionResourceProviderNamespace}/{extensionResourceType}/{extensionResourceName}
범위 세그먼트는 확장되는 리소스에 따라 달라집니다.
확장 리소스가 리소스에 적용되는 경우 리소스 ID는 다음 형식으로 반환됩니다.
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{baseResourceProviderNamespace}/{baseResourceType}/{baseResourceName}/providers/{extensionResourceProviderNamespace}/{extensionResourceType}/{extensionResourceName}
확장 리소스가 리소스 그룹에 적용되는 경우 형식은 다음과 같습니다.
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{extensionResourceProviderNamespace}/{extensionResourceType}/{extensionResourceName}
확장 리소스가 구독에 적용되는 경우 형식은 다음과 같습니다.
/subscriptions/{subscriptionId}/providers/{extensionResourceProviderNamespace}/{extensionResourceType}/{extensionResourceName}
확장 리소스가 관리 그룹에 적용되는 경우 형식은 다음과 같습니다.
/providers/Microsoft.Management/managementGroups/{managementGroupName}/providers/{extensionResourceProviderNamespace}/{extensionResourceType}/{extensionResourceName}
관리 그룹에 배포된 사용자 지정 정책은 확장 리소스로 구현됩니다. 정책을 만들고 할당하려면 관리 그룹에 다음 Bicep 파일을 배포합니다.
targetScope = 'managementGroup'
@description('An array of the allowed locations, all other locations will be denied by the created policy.')
param allowedLocations array = [
'australiaeast'
'australiasoutheast'
'australiacentral'
]
resource policyDefinition 'Microsoft.Authorization/policyDefinitions@2023-04-01' = {
name: 'locationRestriction'
properties: {
policyType: 'Custom'
mode: 'All'
parameters: {}
policyRule: {
if: {
not: {
field: 'location'
in: allowedLocations
}
}
then: {
effect: 'deny'
}
}
}
}
resource policyAssignment 'Microsoft.Authorization/policyAssignments@2024-04-01' = {
name: 'locationAssignment'
properties: {
policyDefinitionId: policyDefinition.id
}
}
기본 제공 정책 정의는 테넌트 수준 리소스입니다. 기본 제공 정책 정의 배포에 대한 예제는 tenantResourceId를 참조하세요.
getSecret
keyVaultName.getSecret(secretName)
Azure Key Vault에서 비밀을 반환합니다. 이 함수를 사용하여 Bicep 모듈의 보안 문자열 매개 변수에 비밀을 전달합니다.
참고 항목
az.getSecret(subscriptionId, resourceGroupName, keyVaultName, secretName, secretVersion)
함수는 .bicepparam
파일에서 키 자격 증명 모음 비밀을 검색하는 데 사용될 수 있습니다. 자세한 내용은 getSecret을 참조하세요.
모듈의 params
섹션 내에서만 getSecret
함수를 사용할 수 있습니다. Microsoft.KeyVault/vaults
리소스에서만 사용할 수 있습니다.
module sql './sql.bicep' = {
name: 'deploySQL'
params: {
adminPassword: keyVault.getSecret('vmAdminPassword')
}
}
Bicep 파일의 다른 부분에서 이 함수를 사용하려고 하면 오류가 발생합니다. 매개 변수 섹션에서 사용되는 경우에도 문자열 보간과 함께 이 함수를 사용하는 경우에도 오류가 발생합니다.
함수는 @secure()
데코레이터가 있는 모듈 매개 변수에서만 사용될 수 있습니다.
Key Vault에는 true
로 설정된 enabledForTemplateDeployment
가 있어야 합니다. Bicep 파일을 배포하는 사용자가 비밀에 액세스할 수 있어야 합니다. 자세한 내용은 Azure Key Vault를 사용하여 Bicep 배포 중에 보안 매개 변수 값 전달을 참조하세요.
함수가 리소스 종류와 함께 사용되기 때문에 네임스페이스 한정자가 필요하지 않습니다.
매개 변수
매개 변수 | 필수 | Type | 설명 |
---|---|---|---|
secretName | 예 | string | 키 자격 증명 모음에 저장된 비밀의 이름입니다. |
반환 값
비밀 이름의 비밀 값입니다.
예시
다음 Bicep 파일은 모듈로 사용됩니다. @secure()
데코레이터로 정의된 adminPassword
매개 변수가 있습니다.
param sqlServerName string
param adminLogin string
@secure()
param adminPassword string
resource sqlServer 'Microsoft.Sql/servers@2023-08-01-preview' = {
...
}
다음 Bicep 파일은 이전 Bicep 파일을 모듈로 사용합니다. Bicep 파일은 기존 키 자격 증명 모음을 참조하고 getSecret
함수를 호출하여 키 자격 증명 모음 비밀을 검색한 다음, 값을 매개 변수로 모듈에 전달합니다.
param sqlServerName string
param adminLogin string
param subscriptionId string
param kvResourceGroup string
param kvName string
resource keyVault 'Microsoft.KeyVault/vaults@2023-07-01' existing = {
name: kvName
scope: resourceGroup(subscriptionId, kvResourceGroup )
}
module sql './sql.bicep' = {
name: 'deploySQL'
params: {
sqlServerName: sqlServerName
adminLogin: adminLogin
adminPassword: keyVault.getSecret('vmAdminPassword')
}
}
list*
resourceName.list([apiVersion], [functionValues])
list
로 시작하는 작업을 통해 모든 리소스 종류에 대한 목록 함수를 호출할 수 있습니다. 일반적으로 사용되는 일부 함수는 list
, listKeys
, listKeyValue
및 listSecrets
입니다.
이 함수의 구문은 목록 작업의 이름에 따라 다릅니다. 또한 반환된 값은 연산에 따라 달라집니다. Bicep은 현재 list*
함수 완성 및 유효성 검사를 지원하지 않습니다.
Bicep CLI 버전 0.4.X 이상에서는 접근자 연산자를 사용하여 목록 함수를 호출합니다. 예: storageAccount.listKeys()
.
함수가 리소스 종류와 함께 사용되기 때문에 네임스페이스 한정자가 필요하지 않습니다.
매개 변수
매개 변수 | 필수 | Type | 설명 |
---|---|---|---|
apiVersion | 아니요 | string | 이 매개 변수를 제공하지 않으면 리소스에 대한 API 버전이 사용됩니다. 함수를 특정 버전으로 실행해야 하는 경우에만 사용자 지정 API 버전을 제공합니다. yyyy-mm-dd 형식을 사용합니다. |
functionValues | 아니요 | 개체 | 함수에 대한 값이 있는 개체입니다. 스토리지 계정에서 listAccountSas 와 같이 매개 변수 값이 있는 개체 수신을 지원하는 함수에 대해서만 이 개체를 제공합니다. 함수 값을 전달하는 예제가 이 문서에 나와 있습니다. |
올바른 용도
list
함수는 리소스 정의의 속성에서 사용할 수 있습니다. Bicep 파일의 출력 섹션에서 중요한 정보를 노출하는 list
함수를 사용하지 마세요. 출력 값은 배포 기록에 저장되며 악의적인 사용자가 이를 검색할 수 있습니다.
반복 루프와 함께 사용하면 표현식이 리소스 속성에 할당되기 때문에 input
에 대해 list
함수를 사용할 수 있습니다. list
함수를 확인하기 전에 개수를 결정해야 하므로 count
와 함께 사용할 수 없습니다.
조건부로 배포된 리소스에서 list
함수를 사용하는 경우 리소스가 배포되지 않은 경우에도 함수가 평가됩니다. list
함수가 존재하지 않는 리소스를 참조하면 오류가 발생합니다. 조건식 ?: 연산자를 사용하여 리소스가 배포될 때만 함수가 평가되도록 합니다.
반환 값
반환된 개체는 사용하는 list 함수에 따라 다릅니다. 예를 들어 스토리지 계정의 listKeys
는 다음 형식을 반환합니다.
{
"keys": [
{
"keyName": "key1",
"permissions": "Full",
"value": "{value}"
},
{
"keyName": "key2",
"permissions": "Full",
"value": "{value}"
}
]
}
다른 list
함수는 반환 형식이 다릅니다. 함수의 형식을 보려면 예제 Bicep 파일에 표시된 것처럼 출력 섹션에 포함합니다.
목록 예제
다음 예에서는 스토리지 계정을 배포한 다음 해당 스토리지 계정에서 listKeys
를 호출합니다. 키는 배포 스크립트 값을 설정할 때 사용됩니다.
resource storageAccount 'Microsoft.Storage/storageAccounts@2023-04-01' = {
name: 'dscript${uniqueString(resourceGroup().id)}'
location: location
kind: 'StorageV2'
sku: {
name: 'Standard_LRS'
}
}
resource dScript 'Microsoft.Resources/deploymentScripts@2023-08-01' = {
name: 'scriptWithStorage'
location: location
...
properties: {
azCliVersion: '2.0.80'
storageAccountSettings: {
storageAccountName: storageAccount.name
storageAccountKey: storageAccount.listKeys().keys[0].value
}
...
}
}
다음 예는 매개 변수를 사용하는 list
함수를 보여 줍니다. 이 경우 함수는 listAccountSas
입니다. 만료 시간 동안 개체를 전달합니다. 만료 시간은 미래 시간이어야 합니다.
param accountSasProperties object {
default: {
signedServices: 'b'
signedPermission: 'r'
signedExpiry: '2020-08-20T11:00:00Z'
signedResourceTypes: 's'
}
}
...
sasToken: storageAccount.listAccountSas('2021-04-01', accountSasProperties).accountSasToken
구현
list*
의 가능한 사용은 다음 표에 나와 있습니다.
리소스 종류 | 함수 이름 |
---|---|
Microsoft.Addons/supportProviders | listsupportplaninfo |
Microsoft.AnalysisServices/servers | listGatewayStatus |
Microsoft.ApiManagement/service/authorizationServers | listSecrets |
Microsoft.ApiManagement/service/gateways | listKeys |
Microsoft.ApiManagement/service/identityProviders | listSecrets |
Microsoft.ApiManagement/service/namedValues | listValue |
Microsoft.ApiManagement/service/openidConnectProviders | listSecrets |
Microsoft.ApiManagement/service/subscriptions | listSecrets |
Microsoft.AppConfiguration/configurationStores | ListKeys |
Microsoft.AppPlatform/Spring | listTestKeys |
Microsoft.Automation/automationAccounts | listKeys |
Microsoft.Batch/batchAccounts | listkeys |
Microsoft.BatchAI/workspaces/experiments/jobs | listoutputfiles |
Microsoft.BotService/botServices/channels | listChannelWithKeys |
Microsoft.Cache/redis | listKeys |
Microsoft.CognitiveServices/accounts | listKeys |
Microsoft.ContainerRegistry/registries | listCredentials |
Microsoft.ContainerRegistry/registries | listUsages |
Microsoft.ContainerRegistry/registries/agentpools | listQueueStatus |
Microsoft.ContainerRegistry/registries/buildTasks | listSourceRepositoryProperties |
Microsoft.ContainerRegistry/registries/buildTasks/steps | listBuildArguments |
Microsoft.ContainerRegistry/registries/taskruns | listDetails |
Microsoft.ContainerRegistry/registries/webhooks | listEvents |
Microsoft.ContainerRegistry/registries/runs | listLogSasUrl |
Microsoft.ContainerRegistry/registries/tasks | listDetails |
Microsoft.ContainerService/managedClusters | listClusterAdminCredential |
Microsoft.ContainerService/managedClusters | listClusterMonitoringUserCredential |
Microsoft.ContainerService/managedClusters | listClusterUserCredential |
Microsoft.ContainerService/managedClusters/accessProfiles | listCredential |
Microsoft.DataBox/jobs | listCredentials |
Microsoft.DataFactory/datafactories/gateways | listauthkeys |
Microsoft.DataFactory/factories/integrationruntimes | listauthkeys |
Microsoft.DataLakeAnalytics/accounts/storageAccounts/Containers | listSasTokens |
Microsoft.DataShare/accounts/shares | listSynchronizations |
Microsoft.DataShare/accounts/shareSubscriptions | listSourceShareSynchronizationSettings |
Microsoft.DataShare/accounts/shareSubscriptions | listSynchronizationDetails |
Microsoft.DataShare/accounts/shareSubscriptions | listSynchronizations |
Microsoft.Devices/iotHubs | listkeys |
Microsoft.Devices/iotHubs/iotHubKeys | listkeys |
Microsoft.Devices/provisioningServices/keys | listkeys |
Microsoft.Devices/provisioningServices | listkeys |
Microsoft.DevTestLab/labs | ListVhds |
Microsoft.DevTestLab/labs/schedules | ListApplicable |
Microsoft.DevTestLab/labs/users/serviceFabrics | ListApplicableSchedules |
Microsoft.DevTestLab/labs/virtualMachines | ListApplicableSchedules |
Microsoft.DocumentDB/databaseAccounts | listKeys |
Microsoft.DocumentDB/databaseAccounts/notebookWorkspaces | listConnectionInfo |
Microsoft.DomainRegistration | listDomainRecommendations |
Microsoft.DomainRegistration/topLevelDomains | listAgreements |
Microsoft.EventGrid/domains | listKeys |
Microsoft.EventGrid/topics | listKeys |
Microsoft.EventHub/namespaces/authorizationRules | listkeys |
Microsoft.EventHub/namespaces/disasterRecoveryConfigs/authorizationRules | listkeys |
Microsoft.EventHub/namespaces/eventhubs/authorizationRules | listkeys |
Microsoft.ImportExport/jobs | listBitLockerKeys |
Microsoft.Kusto/Clusters/Databases | ListPrincipals |
Microsoft.LabServices/labs/users | 목록 |
Microsoft.LabServices/labs/virtualMachines | 목록 |
Microsoft.Logic/integrationAccounts/agreements | listContentCallbackUrl |
Microsoft.Logic/integrationAccounts/assemblies | listContentCallbackUrl |
Microsoft.Logic/integrationAccounts | listCallbackUrl |
Microsoft.Logic/integrationAccounts | listKeyVaultKeys |
Microsoft.Logic/integrationAccounts/maps | listContentCallbackUrl |
Microsoft.Logic/integrationAccounts/partners | listContentCallbackUrl |
Microsoft.Logic/integrationAccounts/schemas | listContentCallbackUrl |
Microsoft.Logic/workflows | listCallbackUrl |
Microsoft.Logic/workflows | listSwagger |
Microsoft.Logic/workflows/runs/actions | listExpressionTraces |
Microsoft.Logic/workflows/runs/actions/repetitions | listExpressionTraces |
Microsoft.Logic/workflows/triggers | listCallbackUrl |
Microsoft.Logic/workflows/versions/triggers | listCallbackUrl |
Microsoft.MachineLearning/webServices | listkeys |
Microsoft.MachineLearning/Workspaces | listworkspacekeys |
Microsoft.MachineLearningServices/workspaces/computes | listKeys |
Microsoft.MachineLearningServices/workspaces/computes | listNodes |
Microsoft.MachineLearningServices/workspaces | listKeys |
Microsoft.Maps/accounts | listKeys |
Microsoft.Media/mediaservices/assets | listContainerSas |
Microsoft.Media/mediaservices/assets | listStreamingLocators |
Microsoft.Media/mediaservices/streamingLocators | listContentKeys |
Microsoft.Media/mediaservices/streamingLocators | listPaths |
Microsoft.Network/applicationSecurityGroups | listIpConfigurations |
Microsoft.NotificationHubs/Namespaces/authorizationRules | listkeys |
Microsoft.NotificationHubs/Namespaces/NotificationHubs/authorizationRules | listkeys |
Microsoft.OperationalInsights/workspaces | 목록 |
Microsoft.OperationalInsights/workspaces | listKeys |
Microsoft.PolicyInsights/remediations | listDeployments |
Microsoft.RedHatOpenShift/openShiftClusters | listCredentials |
Microsoft.Relay/namespaces/disasterRecoveryConfigs/authorizationRules | listkeys |
Microsoft.Search/searchServices | listAdminKeys |
Microsoft.Search/searchServices | listQueryKeys |
Microsoft.SignalRService/SignalR | listkeys |
Microsoft.Storage/storageAccounts | listAccountSas |
Microsoft.Storage/storageAccounts | listkeys |
Microsoft.Storage/storageAccounts | listServiceSas |
Microsoft.StorSimple/managers/devices | listFailoverSets |
Microsoft.StorSimple/managers/devices | listFailoverTargets |
Microsoft.StorSimple/managers | listActivationKey |
Microsoft.StorSimple/managers | listPublicEncryptionKey |
Microsoft.Synapse/workspaces/integrationRuntimes | listAuthKeys |
Microsoft.Web/connectionGateways | ListStatus |
microsoft.web/connections | listconsentlinks |
Microsoft.Web/customApis | listWsdlInterfaces |
microsoft.web/locations | listwsdlinterfaces |
microsoft.web/apimanagementaccounts/apis/connections | listconnectionkeys |
microsoft.web/apimanagementaccounts/apis/connections | listsecrets |
microsoft.web/sites/backups | 목록 |
Microsoft.Web/sites/config | 목록 |
microsoft.web/sites/functions | listkeys |
microsoft.web/sites/functions | listsecrets |
microsoft.web/sites/hybridconnectionnamespaces/relays | listkeys |
microsoft.web/sites | listsyncfunctiontriggerstatus |
microsoft.web/sites/slots/functions | listsecrets |
microsoft.web/sites/slots/backups | 목록 |
Microsoft.Web/sites/slots/config | 목록 |
microsoft.web/sites/slots/functions | listsecrets |
list 작업이 있는 리소스 유형을 확인할 수 있게 다음 PowerShell 옵션이 제공됩니다.
리소스 공급자에 대한 REST API 작업을 보고 list 작업을 찾습니다. 예를 들어 스토리지 계정에는 listKeys 작업이 있습니다.
Get-AzProviderOperation PowerShell cmdlet을 사용합니다. 다음 예제에서는 스토리지 계정에 대한 모든 list 작업을 가져옵니다.
Get-AzProviderOperation -OperationSearchString "Microsoft.Storage/*" | where {$_.Operation -like "*list*"} | FT Operation
다음 Azure CLI 명령을 사용하여 목록 작업만 필터링합니다.
az provider operation show --namespace Microsoft.Storage --query "resourceTypes[?name=='storageAccounts'].operations[].name | [?contains(@, 'list')]"
managementGroupResourceId
managementGroupResourceId(resourceType, resourceName1, [resourceName2], ...)
관리 그룹 수준에서 배포된 리소스의 고유 식별자를 반환합니다.
네임스페이스: az.
managementGroupResourceId
함수는 Bicep 파일에서 사용할 수 있지만 일반적으로 필요하지 않습니다. 대신 리소스에 대한 기호 이름을 사용하고 id
속성에 액세스합니다.
식별자는 다음 형식으로 반환됩니다.
/providers/Microsoft.Management/managementGroups/{managementGroupName}/providers/{resourceType}/{resourceName}
설명
이 함수를 사용하여 리소스 그룹이 아닌 관리 그룹에 배포되는 리소스의 리소스 ID를 가져옵니다. 반환된 ID는 구독 ID 및 리소스 그룹 값을 포함하지 않는다는 점에서 resourceId 함수에서 반환된 값과 다릅니다.
managementGroupResourceID 예
다음 템플릿은 정책 정의를 만들고 할당합니다. managementGroupResourceId
함수를 사용하여 정책 정의를 위한 리소스 ID를 가져옵니다.
targetScope = 'managementGroup'
@description('Target Management Group')
param targetMG string
@description('An array of the allowed locations, all other locations will be denied by the created policy.')
param allowedLocations array = [
'australiaeast'
'australiasoutheast'
'australiacentral'
]
var mgScope = tenantResourceId('Microsoft.Management/managementGroups', targetMG)
var policyDefinitionName = 'LocationRestriction'
resource policyDefinition 'Microsoft.Authorization/policyDefinitions@2023-04-01' = {
name: policyDefinitionName
properties: {
policyType: 'Custom'
mode: 'All'
parameters: {}
policyRule: {
if: {
not: {
field: 'location'
in: allowedLocations
}
}
then: {
effect: 'deny'
}
}
}
}
resource location_lock 'Microsoft.Authorization/policyAssignments@2024-04-01' = {
name: 'location-lock'
properties: {
scope: mgScope
policyDefinitionId: managementGroupResourceId('Microsoft.Authorization/policyDefinitions', policyDefinitionName)
}
dependsOn: [
policyDefinition
]
}
pickZones
pickZones(providerNamespace, resourceType, location, [numberOfZones], [offset])
리소스 종류가 지역에 대한 영역을 지원하는지 여부를 결정합니다. 이 함수는 영역 리소스만 지원합니다. 영역 중복 서비스는 빈 배열을 반환합니다. 자세한 내용은 가용성 영역을 지원하는 Azure 서비스를 참조 하세요.
네임스페이스: az.
매개 변수
매개 변수 | 필수 | Type | 설명 |
---|---|---|---|
providerNamespace | 예 | string | 영역 지원을 확인할 리소스 종류에 대한 리소스 공급자 네임스페이스입니다. |
resourceType | 예 | string | 영역 지원을 확인할 리소스 종류입니다. |
location | 예 | string | 영역 지원을 확인할 지역입니다. |
numberOfZones | 아니요 | 정수 | 반환할 논리적 영역의 수입니다. 기본값은 1입니다. 숫자는 1~3 사이의 양수여야 합니다. 단일 영역 리소스에 대해 1을 사용합니다. 다중 영역 리소스의 경우 값은 지원되는 영역 수보다 적거나 같아야 합니다. |
offset | 아니요 | 정수 | 시작 논리적 영역의 오프셋입니다. offset과 numberOfZones의 합이 지원되는 영역의 수를 초과하는 경우 함수에서 오류를 반환합니다. |
반환 값
지원되는 영역이 있는 배열입니다. offset 및 numberOfZones
에 대한 기본값을 사용할 때 영역을 지원하는 리소스 종류 및 지역은 다음 배열을 반환합니다.
[
"1"
]
numberOfZones
매개 변수가 3으로 설정된 경우 다음을 반환합니다.
[
"1",
"2",
"3"
]
리소스 유형 또는 지역이 영역을 지원하지 않는 경우 빈 배열이 반환됩니다.
[
]
설명
Azure 가용성 영역의 범주에는 영역 및 영역 중복이 있습니다. pickZones
함수를 사용하여 영역 리소스에 대한 가용성 영역을 반환할 수 있습니다. ZRS(영역 중복 서비스)의 경우 함수는 빈 배열을 반환합니다. 영역 리소스에는 일반적으로 리소스 정의의 최상위 수준에 zones
속성이 있습니다. 가용성 영역에 대한 지원 범주를 확인하려면 가용성 영역을 지원하는 Azure 서비스를 참조 하세요.
지정된 Azure 지역 또는 위치가 가용성 영역을 지원하는지 확인하려면 Microsoft.Network/publicIPAddresses
와 같은 영역 리소스 종류로 pickZones
함수를 호출합니다. 응답이 비어 있지 않은 경우 해당 지역은 가용성 영역을 지원합니다.
pickZones 예제
다음 Bicep 파일은 pickZones
함수를 사용한 세 가지 결과를 보여 줍니다.
output supported array = pickZones('Microsoft.Compute', 'virtualMachines', 'westus2')
output notSupportedRegion array = pickZones('Microsoft.Compute', 'virtualMachines', 'westus')
output notSupportedType array = pickZones('Microsoft.Cdn', 'profiles', 'westus2')
이전 예제의 출력은 3개의 배열을 반환합니다.
이름 | 타입 | 값 |
---|---|---|
지원 | 배열 | [ "1" ] |
notSupportedRegion | 배열 | [] |
notSupportedType | 배열 | [] |
pickZones
의 응답을 사용하여 영역에 null을 제공할지 아니면 가상 머신을 다른 영역에 할당할지 결정할 수 있습니다.
providers
공급자 함수는 Bicep에서 더 이상 사용되지 않습니다. 더는 사용하지 않는 것이 좋습니다. 리소스 공급자의 API 버전을 가져오기 위해 이 함수를 사용한 경우 Bicep 파일에 특정 API 버전을 제공하는 것이 좋습니다. 버전 간에 속성이 변경된 경우 동적으로 반환된 API 버전을 사용하면 템플릿이 손상될 수 있습니다.
공급자 작업은 REST API를 통해 계속 사용할 수 있습니다. Bicep 파일 외부에서 리소스 공급자에 대한 정보를 가져오는 데 사용할 수 있습니다.
네임스페이스: az.
reference
reference(resourceName or resourceIdentifier, [apiVersion], ['Full'])
리소스의 런타임 상태를 나타내는 개체를 반환합니다. reference
함수의 출력 및 동작은 각 RP(리소스 공급자)가 PUT 및 GET 응답을 구현하는 방법에 크게 의존합니다.
네임스페이스: az.
Bicep 파일은 일반적으로 불필요하지만 참조 함수에 대한 액세스를 제공합니다. 대신 리소스의 기호 이름을 사용하는 것이 좋습니다. 참조 함수는 리소스의 properties
개체 내에서만 사용할 수 있으며 name
또는 location
같은 최상위 속성에는 사용할 수 없습니다. 일반적으로 기호 이름을 사용하는 참조에도 동일하게 적용됩니다. 그러나 name
같은 속성의 경우 참조 함수를 사용하지 않고 템플릿을 생성할 수 있습니다. 리소스 이름에 대한 충분한 정보가 있으면 이름을 직접 내보낼 수 있습니다. 컴파일 시간 속성이라고 합니다. Bicep 유효성 검사는 기호 이름의 잘못된 사용을 식별할 수 있습니다.
다음 예제에서는 저장소 계정을 배포합니다. 처음 두 개의 출력은 동일한 결과를 제공합니다.
param storageAccountName string = uniqueString(resourceGroup().id)
param location string = resourceGroup().location
resource storageAccount 'Microsoft.Storage/storageAccounts@2023-04-01' = {
name: storageAccountName
location: location
kind: 'Storage'
sku: {
name: 'Standard_LRS'
}
}
output storageObjectSymbolic object = storageAccount.properties
output storageObjectReference object = reference('storageAccount')
output storageName string = storageAccount.name
output storageLocation string = storageAccount.location
템플릿에 배포되지 않은 기존 리소스에서 속성을 가져오려면 existing
키워드를 사용합니다.
param storageAccountName string
resource storageAccount 'Microsoft.Storage/storageAccounts@2023-04-01' existing = {
name: storageAccountName
}
// use later in template as often as needed
output blobAddress string = storageAccount.properties.primaryEndpoints.blob
부모 리소스 내에 중첩된 리소스를 참조하려면 중첩된 접근자(::
)를 사용합니다. 부모 리소스 외부에서 중첩된 리소스에 액세스하는 경우에만 이 구문을 사용합니다.
vNet1::subnet1.properties.addressPrefix
존재하지 않는 리소스를 참조하려고 하면 NotFound
오류가 발생하고 배포에 실패합니다.
resourceId
resourceId([subscriptionId], [resourceGroupName], resourceType, resourceName1, [resourceName2], ...)
리소스의 고유 식별자를 반환합니다.
네임스페이스: az.
resourceId
함수는 Bicep 파일에서 사용할 수 있지만 일반적으로 필요하지 않습니다. 대신 리소스에 대한 기호 이름을 사용하고 id
속성에 액세스합니다.
리소스 이름이 모호하거나 동일한 Bicep 파일 내에서 프로비전되지 않은 경우 이 함수를 사용합니다. 반환된 식별자의 형식은 리소스 그룹, 구독, 관리 그룹 또는 테넌트 중에서 테넌트가 어떤 범위에서 발생하는지에 따라 달라집니다.
예시:
param storageAccountName string
param location string = resourceGroup().location
resource storageAccount 'Microsoft.Storage/storageAccounts@2023-04-01' = {
name: storageAccountName
location: location
kind: 'Storage'
sku: {
name: 'Standard_LRS'
}
}
output storageID string = storageAccount.id
Bicep 파일에 배포되지 않은 리소스에 대한 리소스 ID를 가져오려면 기존 키워드를 사용합니다.
param storageAccountName string
resource storageAccount 'Microsoft.Storage/storageAccounts@2023-04-01' existing = {
name: storageAccountName
}
output storageID string = storageAccount.id
자세한 내용은 JSON 템플릿 resourceId 함수를 참조하세요.
subscriptionResourceId
subscriptionResourceId([subscriptionId], resourceType, resourceName1, [resourceName2], ...)
구독 수준에서 배포된 리소스의 고유 식별자를 반환합니다.
네임스페이스: az.
subscriptionResourceId
함수는 Bicep 파일에서 사용할 수 있지만 일반적으로 필요하지 않습니다. 대신 리소스에 대한 기호 이름을 사용하고 id
속성에 액세스합니다.
식별자는 다음 형식으로 반환됩니다.
/subscriptions/{subscriptionId}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}
설명
이 함수를 사용하여 리소스 그룹이 아닌 구독에 배포된 리소스의 리소스 ID를 가져올 수 있습니다. 반환되는 ID는 리소스 그룹 값을 포함하지 않으므로 resourceId 함수에서 반환하는 값과 다릅니다.
subscriptionResourceID 예제
다음 Bicep 파일은 기본 제공 역할을 할당합니다. 리소스 그룹 또는 구독에 배포할 수 있습니다. subscriptionResourceId
함수를 사용하여 기본 제공 역할의 리소스 ID를 가져옵니다.
@description('Principal Id')
param principalId string
@allowed([
'Owner'
'Contributor'
'Reader'
])
@description('Built-in role to assign')
param builtInRoleType string
var roleDefinitionId = {
Owner: {
id: subscriptionResourceId('Microsoft.Authorization/roleDefinitions', '8e3af657-a8ff-443c-a75c-2fe8c4bcb635')
}
Contributor: {
id: subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'b24988ac-6180-42a0-ab88-20f7382dd24c')
}
Reader: {
id: subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'acdd72a7-3385-48ef-bd42-f606fba81ae7')
}
}
resource roleAssignment 'Microsoft.Authorization/roleAssignments@2022-04-01' = {
name: guid(resourceGroup().id, principalId, roleDefinitionId[builtInRoleType].id)
properties: {
roleDefinitionId: roleDefinitionId[builtInRoleType].id
principalId: principalId
}
}
tenantResourceId
tenantResourceId(resourceType, resourceName1, [resourceName2], ...)
테넌트 수준에서 배포된 리소스의 고유 식별자를 반환합니다.
네임스페이스: az.
tenantResourceId
함수는 Bicep 파일에서 사용할 수 있지만 일반적으로 필요하지 않습니다. 대신 리소스에 대한 기호 이름을 사용하고 id
속성에 액세스합니다.
식별자는 다음 형식으로 반환됩니다.
/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}
기본 제공 정책 정의는 테넌트 수준 리소스입니다. 기본 제공 정책 정의를 참조하는 정책 할당을 배포하려면 tenantResourceId
함수를 사용합니다.
@description('Specifies the ID of the policy definition or policy set definition being assigned.')
param policyDefinitionID string = '0a914e76-4921-4c19-b460-a2d36003525a'
@description('Specifies the name of the policy assignment, can be used defined or an idempotent name as the defaultValue provides.')
param policyAssignmentName string = guid(policyDefinitionID, resourceGroup().name)
resource policyAssignment 'Microsoft.Authorization/policyAssignments@2024-04-01' = {
name: policyAssignmentName
properties: {
scope: subscriptionResourceId('Microsoft.Resources/resourceGroups', resourceGroup().name)
policyDefinitionId: tenantResourceId('Microsoft.Authorization/policyDefinitions', policyDefinitionID)
}
}
다음 단계
- 현재 배포에서 값을 가져오려면 배포 값 함수를 참조하세요.
- 리소스 종류를 만들 때 지정된 횟수만큼 반복하려면 Bicep의 반복 루프를 참조하세요.