Bicep 的 Resource 函數
本文說明用來取得資源值的 Bicep 函數。
若要從目前的部署中取得值,請參閱部署值函數。
extensionResourceId
extensionResourceId(resourceId, resourceType, resourceName1, [resourceName2], ...)
傳回延伸模組資源的資源識別碼。 延伸模組資源是資源類型,其會套用至另一個資源以新增至其功能。
命名空間:az。
extensionResourceId
函數可在 Bicep 檔案中取得,但您通常不需要。 相反地,請使用資源的符號名稱,並存取 id
屬性。
此函式所傳回之資源識別碼的基本格式為:
{scope}/providers/{extensionResourceProviderNamespace}/{extensionResourceType}/{extensionResourceName}
範圍區段會隨著要擴充的資源而不同。
當延伸模組資源套用至資源時,資源識別碼會以下列格式傳回:
/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。
您只能從模組的 getSecret
區段內使用 params
函式。 您只能將其與 Microsoft.KeyVault/vaults
資源搭配使用。
module sql './sql.bicep' = {
name: 'deploySQL'
params: {
adminPassword: keyVault.getSecret('vmAdminPassword')
}
}
如果您嘗試在 Bicep 檔案的任何其他部分中使用此函式,會收到錯誤。 如果您使用此函式搭配字串插補,則即使在 params 區段中使用時,您也會收到錯誤。
函式只能搭配具有 @secure()
裝飾項目的模組參數使用。
金鑰保存庫必須將 enabledForTemplateDeployment
設定為 true
。 部署 Bicep 檔案的使用者必須具有祕密的存取。 如需詳細資訊,請參閱在 Bicep 部署期間使用 Azure Key Vault 以傳遞安全的參數值。
因為函數會與資源類型搭配使用,所以不需要命名空間限定詞。
參數
參數 | 必要 | 類型 | 描述 |
---|---|---|---|
secretName | Yes | 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
的任何資源類型。 常見的使用方式包括 list
、listKeys
、listKeyValue
和 listSecrets
。
此函數的語法會因 list 作業的名稱而異。 傳回值也會因作業而異。 Bicep 目前不支援 list*
函數的完成和驗證。
使用 Bicep CLI 版本 0.4.X 或更高版本時,您可以使用存取子運算子來呼叫 list 函數。 例如: storageAccount.listKeys()
。
因為函數會與資源類型搭配使用,所以不需要命名空間限定詞。
參數
參數 | 必要 | 類型 | 描述 |
---|---|---|---|
apiVersion | No | string | 如果您未提供此參數,則會使用資源的 API 版本。 只有當您需要使用特定版本來執行函數時,才提供自訂 API 版本。 使用 yyyy-mm-dd 格式。 |
functionValues | No | object | 具有函式值的物件。 僅針對支援接收具有參數值之物件 (例如儲存體帳戶上的 listAccountSas ) 的函式提供此物件。 本文會顯示傳遞函式值的範例。 |
有效用法
list
函數可以在資源定義的屬性中使用。 請勿在 Bicep 檔案的輸出區段中使用會公開敏感性資訊的 list
函數。 輸出值會被儲存在部署歷程記錄中,而且可能會由惡意使用者擷取。
與反覆式迴圈搭配使用時,您可以將 list
函數用於 input
,因為運算式會指派給資源屬性。 您無法將其搭配 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 作業,您可以使用下列選項:
檢視資源提供者的 REST API 作業,並尋找 list 作業。 例如,儲存體帳戶具有 listKeys 作業。
使用 Get-AzProviderOperation PowerShell Cmdlet。 下列範例會取得儲存體帳戶的所有 list 作業︰
Get-AzProviderOperation -OperationSearchString "Microsoft.Storage/*" | where {$_.Operation -like "*list*"} | FT Operation
使用下列 Azure CLI 命令可只篩選出 list 作業:
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}
備註
您可以使用此函數,為部署至管理群組 (而不是資源群組) 的資源取得資源識別碼。 傳回的識別碼與 resourceId 函數所傳回的值不同;其中不含訂閱 ID 和資源群組值。
managementGroupResourceID 範例
下列範本會建立並指派原則定義。 其會使用 managementGroupResourceId
函數來取得原則定義的資源識別碼。
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。
參數
參數 | 必要 | 類型 | 描述 |
---|---|---|---|
providerNamespace | Yes | string | 用於檢查區域支援的資源類型的資源提供者命名空間。 |
resourceType | Yes | string | 用於檢查區域支援的資源類型。 |
location | Yes | string | 用於檢查區域支援的 Azure 區域。 |
numberOfZones | No | 整數 | 要傳回的邏輯區域數目。 預設值是 1。 此數字必須是介於 1 到 3 之間的正整數。 單一區域資源使用 1。 若為多區域資源,此值必須小於或等於支援的區域數目。 |
offset | No | 整數 | 從起始邏輯區域算起的位移。 如果位移加上 numberOfZones 超過支援的區域數目,函式會傳回錯誤。 |
傳回值
具有支援區域的陣列。 對位移和 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')
前述範例的輸出會傳回三個陣列。
名稱 | 類型 | 值 |
---|---|---|
服務 | 陣列 | [ "1" ] |
notSupportedRegion | 陣列 | [] |
notSupportedType | 陣列 | [] |
您可以使用 pickZones
的回應來判斷是否向區域提供 Null,或將虛擬機器指派給不同的區域。
提供者
提供者函數已在 Bicep 中被取代。 我們不再建議使用。 如果您使用此函式來取得資源提供者的 API 版本,建議您在 Bicep 檔案中提供特定的 API 版本。 如果使用動態傳回的 API 版本,若版本間發生屬性變更時可能會造成您的範本中斷。
提供者作業仍可透過 REST API 取得。 這可以在 Bicep 檔案外使用,以取得資源提供者的相關資訊。
命名空間:az。
參考
reference(resourceName or resourceIdentifier, [apiVersion], ['Full'])
傳回代表資源執行階段狀態的物件。 函式 reference
的輸出和行為高度依賴每個資源提供者 (RP) 如何實作其 PUT 和 GET 回應。
命名空間:az。
Bicep 檔案會提供參考函式的存取權,但通常不需要。 相反地,建議使用資源的符號名稱。 參考函式只能在資源的物件內properties
使用,而且無法用於 或 location
等name
最上層屬性。 使用符號名稱的參考一般而言也是相同情況。 不過,對於 這類 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 檔案中未部署資源的資源識別碼,請使用現有的關鍵字。
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}
備註
您可以使用此函式,對部署至訂用帳戶 (而不是資源群組) 的資源取得資源識別碼。 傳回的識別碼與 resourceId 函式所傳回的值不同;其中不含資源群組值。
subscriptionResourceID 範例
下列 Bicep 檔案會指派內建角色。 您可以將其部署至資源群組或訂用帳戶。 其會使用 subscriptionResourceId
函數來取得內建角色的資源識別碼。
@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 中的反覆式迴圈。