Funkce prostředků pro Bicep
Tento článek popisuje funkce Bicep pro získání hodnot prostředků.
Pokud chcete získat hodnoty z aktuálního nasazení, podívejte se na funkce hodnot nasazení.
extensionResourceId
extensionResourceId(resourceId, resourceType, resourceName1, [resourceName2], ...)
Vrátí ID prostředku rozšíření. Prostředek rozšíření je typ prostředku, který se použije na jiný prostředek, aby se přidal do svých schopností.
Obor názvů: az.
Funkce extensionResourceId
je dostupná v souborech Bicep, ale obvykle ji nepotřebujete. Místo toho použijte symbolický název prostředku a přistupovat k id
vlastnosti.
Základní formát ID prostředku vrácené touto funkcí je:
{scope}/providers/{extensionResourceProviderNamespace}/{extensionResourceType}/{extensionResourceName}
Segment oboru se liší podle rozšířeného prostředku.
Pokud se prostředek rozšíření použije na prostředek, vrátí se ID prostředku v následujícím formátu:
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{baseResourceProviderNamespace}/{baseResourceType}/{baseResourceName}/providers/{extensionResourceProviderNamespace}/{extensionResourceType}/{extensionResourceName}
Pokud je prostředek rozšíření použit pro skupinu prostředků, formát je:
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{extensionResourceProviderNamespace}/{extensionResourceType}/{extensionResourceName}
Pokud se prostředek rozšíření použije u předplatného, bude formát následující:
/subscriptions/{subscriptionId}/providers/{extensionResourceProviderNamespace}/{extensionResourceType}/{extensionResourceName}
Pokud se prostředek rozšíření použije pro skupinu pro správu, formát je následující:
/providers/Microsoft.Management/managementGroups/{managementGroupName}/providers/{extensionResourceProviderNamespace}/{extensionResourceType}/{extensionResourceName}
Definice vlastních zásad nasazená do skupiny pro správu se implementuje jako prostředek rozšíření. Pokud chcete vytvořit a přiřadit zásadu, nasaďte do skupiny pro správu následující soubor 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
}
}
Předdefinované definice zásad jsou prostředky na úrovni tenanta. Příklad nasazení předdefinované definice zásady najdete v tématu tenantResourceId.
getSecret
keyVaultName.getSecret(secretName)
Vrátí tajný klíč ze služby Azure Key Vault. Tato funkce slouží k předání tajného kódu do zabezpečeného řetězcového parametru modulu Bicep.
Poznámka:
az.getSecret(subscriptionId, resourceGroupName, keyVaultName, secretName, secretVersion)
funkci lze použít v .bicepparam
souborech k načtení tajných kódů trezoru klíčů. Další informace najdete v tématu getSecret.
Funkci můžete použít getSecret
jenom v params
části modulu. Můžete ho použít jenom s prostředkem Microsoft.KeyVault/vaults
.
module sql './sql.bicep' = {
name: 'deploySQL'
params: {
adminPassword: keyVault.getSecret('vmAdminPassword')
}
}
Pokud se pokusíte tuto funkci použít v jakékoli jiné části souboru Bicep, zobrazí se chyba. Pokud používáte tuto funkci s interpolací řetězců, i když se používá v části params, zobrazí se také chyba.
Funkci lze použít pouze s parametrem modulu, který má @secure()
dekorátor.
Trezor klíčů musí být enabledForTemplateDeployment
nastavený na true
hodnotu . Uživatel, který nasazuje soubor Bicep, musí mít přístup k tajnému kódu. Další informace najdete v tématu Použití služby Azure Key Vault k předání hodnoty zabezpečeného parametru během nasazení Bicep.
Kvalifikátor oboru názvů není potřeba, protože funkce se používá s typem prostředku.
Parametry
Parametr | Požaduje se | Type | Popis |
---|---|---|---|
secretName | Ano | string | Název tajného kódu uloženého v trezoru klíčů. |
Vrácená hodnota
Hodnota tajného kódu pro název tajného kódu.
Příklad
Následující soubor Bicep se používá jako modul. Má adminPassword
definovaný parametr s dekorátorem @secure()
.
param sqlServerName string
param adminLogin string
@secure()
param adminPassword string
resource sqlServer 'Microsoft.Sql/servers@2023-08-01-preview' = {
...
}
Následující soubor Bicep využívá předchozí soubor Bicep jako modul. Soubor Bicep odkazuje na existující trezor klíčů a zavolá getSecret
funkci, která načte tajný klíč trezoru klíčů, a pak předá hodnotu jako parametr modulu.
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')
}
}
seznam*
resourceName.list([apiVersion], [functionValues])
Funkci seznamu můžete volat pro libovolný typ prostředku pomocí operace, která začíná list
na . Mezi běžné použití patří list
, listKeys
, listKeyValue
a listSecrets
.
Syntaxe této funkce se liší podle názvu operace seznamu. Vrácené hodnoty se také liší podle operace. Bicep v současné době nepodporuje dokončování a ověřování list*
funkcí.
Pomocí rozhraní příkazového řádku Bicep verze 0.4.X nebo vyšší zavoláte funkci list pomocí operátoru přístupového objektu. Například storageAccount.listKeys()
.
Kvalifikátor oboru názvů není potřeba, protože funkce se používá s typem prostředku.
Parametry
Parametr | Požaduje se | Type | Popis |
---|---|---|---|
apiVersion | No | string | Pokud tento parametr nezadáte, použije se verze rozhraní API pro prostředek. Pokud potřebujete, aby funkce běžela s konkrétní verzí, zadejte pouze vlastní verzi rozhraní API. Použijte formát rrrr-mm-dd. |
functionValues | No | objekt | Objekt, který má hodnoty pro funkci. Tento objekt zadejte pouze pro funkce, které podporují příjem objektu s hodnotami parametrů, jako listAccountSas je například účet úložiště. Příklad předávání hodnot funkcí je uvedený v tomto článku. |
Platné použití
Funkce list
lze použít ve vlastnostech definice prostředku. Nepoužívejte list
funkci, která zveřejňuje citlivé informace ve výstupní části souboru Bicep. Výstupní hodnoty se ukládají v historii nasazení a můžou je načíst uživatel se zlými úmysly.
Při použití s iterativní smyčkou můžete použít list
funkce, protože input
výraz je přiřazen k vlastnosti prostředku. Nemůžete je použít, count
protože počet musí být určen před vyřešením list
funkce.
Pokud použijete list
funkci v prostředku, který je podmíněně nasazený, vyhodnotí se tato funkce i v případě, že prostředek není nasazený. Pokud funkce odkazuje na prostředek, který neexistuje, zobrazí se chyba list
. Pomocí podmíněného výrazu ?: – operátor se ujistěte, že se funkce vyhodnocuje pouze při nasazování prostředku.
Vrácená hodnota
Vrácený objekt se liší podle funkce seznamu, kterou používáte. Například listKeys
účet úložiště vrátí následující formát:
{
"keys": [
{
"keyName": "key1",
"permissions": "Full",
"value": "{value}"
},
{
"keyName": "key2",
"permissions": "Full",
"value": "{value}"
}
]
}
Jiné list
funkce mají různé návratové formáty. Pokud chcete zobrazit formát funkce, zahrňte ho do části výstupy, jak je znázorněno v ukázkovém souboru Bicep.
Příklad seznamu
Následující příklad nasadí účet úložiště a pak zavolá listKeys
tento účet úložiště. Klíč se používá při nastavování hodnoty pro skripty nasazení.
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
}
...
}
}
Následující příklad ukazuje list
funkci, která přebírá parametr. V tomto případě je listAccountSas
funkce . Předejte objekt pro dobu vypršení platnosti. Doba vypršení platnosti musí být v budoucnu.
param accountSasProperties object {
default: {
signedServices: 'b'
signedPermission: 'r'
signedExpiry: '2020-08-20T11:00:00Z'
signedResourceTypes: 's'
}
}
...
sasToken: storageAccount.listAccountSas('2021-04-01', accountSasProperties).accountSasToken
Implementace
Možné použití list*
jsou uvedeny v následující tabulce.
Typ prostředku | Název funkce |
---|---|
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/registry | listCredentials |
Microsoft.ContainerRegistry/registry | listUsages |
Microsoft.ContainerRegistry/registry/agentpools | listQueueStatus |
Microsoft.ContainerRegistry/registry/buildTasks | listSourceRepositoryProperties |
Microsoft.ContainerRegistry/registry/buildTasks/steps | listBuildArguments |
Microsoft.ContainerRegistry/registryies/taskruns | listDetails |
Microsoft.ContainerRegistry/registry/webhooks | listEvents |
Microsoft.ContainerRegistry/registry/runs | listLogSasUrl |
Microsoft.ContainerRegistry/registry/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/factory/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 | Virtuální pevné disky (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 | SeznamPrincipals |
Microsoft.LabServices/labs/users | list |
Microsoft.LabServices/labs/virtualMachines | list |
Microsoft.Logic/integrationAccounts/agreements | listContentCallbackUrl |
Microsoft.Logic/integrationAccounts/assemblyes | 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/opakování | 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 | list |
Microsoft.OperationalInsights/workspaces | listKeys |
Microsoft.PolicyInsights/nápravy | 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 | seznamconsentlinks |
Microsoft.Web/customApis | listWsdlInterfaces |
microsoft.web/locations | listwsdlinterfaces |
microsoft.web/apimanagementaccounts/apis/connections | listconnectionkeys |
microsoft.web/apimanagementaccounts/apis/connections | listsecrets |
microsoft.web/sites/backups | list |
Microsoft.Web/sites/config | list |
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 | list |
Microsoft.Web/sites/slots/config | list |
microsoft.web/sites/slots/functions | listsecrets |
Pokud chcete určit, které typy prostředků mají operaci seznamu, máte následující možnosti:
Zobrazte operace rozhraní REST API pro poskytovatele prostředků a vyhledejte operace se seznamem. Například účty úložiště mají operaci listKeys.
Použijte rutinu PowerShellu Get-AzProviderOperation . Následující příklad načte všechny operace se seznamem pro účty úložiště:
Get-AzProviderOperation -OperationSearchString "Microsoft.Storage/*" | where {$_.Operation -like "*list*"} | FT Operation
K filtrování pouze operací seznamu použijte následující příkaz Azure CLI:
az provider operation show --namespace Microsoft.Storage --query "resourceTypes[?name=='storageAccounts'].operations[].name | [?contains(@, 'list')]"
managementGroupResourceId
managementGroupResourceId(resourceType, resourceName1, [resourceName2], ...)
Vrátí jedinečný identifikátor prostředku nasazeného na úrovni skupiny pro správu.
Obor názvů: az.
Funkce managementGroupResourceId
je dostupná v souborech Bicep, ale obvykle ji nepotřebujete. Místo toho použijte symbolický název prostředku a přistupovat k id
vlastnosti.
Identifikátor se vrátí v následujícím formátu:
/providers/Microsoft.Management/managementGroups/{managementGroupName}/providers/{resourceType}/{resourceName}
Poznámky
Pomocí této funkce získáte ID prostředku pro prostředky nasazené do skupiny pro správu, nikoli skupinu prostředků. Vrácené ID se liší od hodnoty vrácené funkcí resourceId tím, že nezahrnuje ID předplatného a hodnotu skupiny prostředků.
příklad managementGroupResourceID
Následující šablona vytvoří a přiřadí definici zásady. Pomocí managementGroupResourceId
funkce získá ID prostředku pro definici zásady.
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])
Určuje, jestli typ prostředku podporuje zóny pro oblast. Tato funkce podporuje pouze zónové prostředky. Zónově redundantní služby vrací prázdné pole. Další informace najdete v tématu Služby Azure, které podporují zóny dostupnosti.
Obor názvů: az.
Parametry
Parametr | Požaduje se | Type | Popis |
---|---|---|---|
providerNamespace | Ano | string | Obor názvů poskytovatele prostředků pro typ prostředku, který zkontroluje podporu zóny. |
resourceType | Ano | string | Typ prostředku, který chcete zkontrolovat podporu zón. |
location | Ano | string | Oblast, ve které chcete zjistit podporu zóny. |
numberOfZones | No | integer | Počet logických zón, které se mají vrátit. Výchozí hodnota je 1. Číslo musí být kladné celé číslo od 1 do 3. Pro prostředky s jednou zónou použijte 1. U prostředků s více zónami musí být hodnota menší nebo rovna počtu podporovaných zón. |
offset | No | integer | Posun od počáteční logické zóny. Funkce vrátí chybu, pokud posun plus numberOfZones překročí počet podporovaných zón. |
Vrácená hodnota
Pole s podporovanými zónami. Při použití výchozích hodnot pro posun a numberOfZones
, typ a oblast prostředku, který podporuje zóny vrátí následující pole:
[
"1"
]
numberOfZones
Pokud je parametr nastaven na hodnotu 3, vrátí:
[
"1",
"2",
"3"
]
Pokud typ prostředku nebo oblast nepodporuje zóny, vrátí se prázdné pole.
[
]
Poznámky
Azure Zóny dostupnosti – zónově redundantní a zónově redundantní jsou různé kategorie. Funkci pickZones
lze použít k vrácení zóny dostupnosti pro zónový prostředek. Pro zónově redundantní služby (ZRS) vrátí funkce prázdné pole. Zónové prostředky obvykle mají zones
vlastnost na nejvyšší úrovni definice prostředku. Pokud chcete určit kategorii podpory zón dostupnosti, podívejte se na služby Azure, které podporují zóny dostupnosti.
Pokud chcete zjistit, jestli daná oblast Nebo umístění Azure podporuje zóny dostupnosti, zavolejte pickZones
funkci s typem zónového prostředku, například Microsoft.Network/publicIPAddresses
. Pokud odpověď není prázdná, oblast podporuje zóny dostupnosti.
PickZones example
Následující soubor Bicep zobrazuje tři výsledky pro použití pickZones
funkce.
output supported array = pickZones('Microsoft.Compute', 'virtualMachines', 'westus2')
output notSupportedRegion array = pickZones('Microsoft.Compute', 'virtualMachines', 'westus')
output notSupportedType array = pickZones('Microsoft.Cdn', 'profiles', 'westus2')
Výstup z předchozích příkladů vrátí tři pole.
Name | Typ | Hodnota |
---|---|---|
Podporováno | pole | [ "1" ] |
notSupportedRegion | pole | [] |
notSupportedType | pole | [] |
Pomocí odpovědi pickZones
můžete určit, jestli chcete poskytnout hodnotu null pro zóny nebo přiřadit virtuální počítače k různým zónům.
Poskytovatelů
Funkce zprostředkovatelů je v Bicep zastaralá. Už ho nedoporučujeme používat. Pokud jste tuto funkci použili k získání verze rozhraní API pro poskytovatele prostředků, doporučujeme ve svém souboru Bicep zadat konkrétní verzi rozhraní API. Pokud se vlastnosti mezi verzemi změní, může použití dynamicky vrácené verze rozhraní API přerušit vaši šablonu.
Operace zprostředkovatelů je stále dostupná prostřednictvím rozhraní REST API. Dá se použít mimo soubor Bicep k získání informací o poskytovateli prostředků.
Obor názvů: az.
reference
reference(resourceName or resourceIdentifier, [apiVersion], ['Full'])
Vrátí objekt představující stav modulu runtime prostředku. Výstup a chování reference
funkce vysoce závisí na tom, jak každý poskytovatel prostředků (RP) implementuje své odpovědi PUT a GET.
Obor názvů: az.
Soubory Bicep poskytují přístup k referenční funkci, i když je obvykle zbytečné. Místo toho se doporučuje použít symbolický název prostředku. Referenční funkci lze použít pouze v rámci properties
objektu prostředku a nelze ji použít pro vlastnosti nejvyšší úrovně, jako nebo name
location
. Totéž platí pro odkazy používající symbolický název. U vlastností, jako name
je například , je však možné vygenerovat šablonu bez použití referenční funkce. Dostatek informací o názvu prostředku je známo, že název přímo vygeneruje. Označuje se jako vlastnosti kompilace. Ověření Bicep může identifikovat nesprávné použití symbolického názvu.
Následující příklad nasadí účet úložiště. První dva výstupy vám poskytnou stejné výsledky.
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
Pokud chcete získat vlastnost z existujícího prostředku, který není nasazený v šabloně, použijte existing
klíčové slovo:
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
Pokud chcete odkazovat na prostředek, který je vnořený uvnitř nadřazeného prostředku, použijte vnořené příslušenství (::
). Tuto syntaxi použijete jenom v případě, že přistupujete k vnořenému prostředku mimo nadřazený prostředek.
vNet1::subnet1.properties.addressPrefix
Pokud se pokusíte odkazovat na prostředek, který neexistuje, zobrazí se NotFound
chyba a vaše nasazení selže.
resourceId
resourceId([subscriptionId], [resourceGroupName], resourceType, resourceName1, [resourceName2], ...)
Vrátí jedinečný identifikátor prostředku.
Obor názvů: az.
Funkce resourceId
je dostupná v souborech Bicep, ale obvykle ji nepotřebujete. Místo toho použijte symbolický název prostředku a přistupovat k id
vlastnosti.
Tuto funkci použijete, pokud je název prostředku nejednoznačný nebo není zřízený ve stejném souboru Bicep. Formát vráceného identifikátoru se liší podle toho, jestli se nasazení děje v oboru skupiny prostředků, předplatného, skupiny pro správu nebo tenanta.
Příklad:
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
Pokud chcete získat ID prostředku pro prostředek, který není nasazený v souboru Bicep, použijte existující klíčové slovo.
param storageAccountName string
resource storageAccount 'Microsoft.Storage/storageAccounts@2023-04-01' existing = {
name: storageAccountName
}
output storageID string = storageAccount.id
Další informace najdete ve funkci RESOURCEId šablony JSON.
subscriptionResourceId
subscriptionResourceId([subscriptionId], resourceType, resourceName1, [resourceName2], ...)
Vrátí jedinečný identifikátor prostředku nasazeného na úrovni předplatného.
Obor názvů: az.
Funkce subscriptionResourceId
je dostupná v souborech Bicep, ale obvykle ji nepotřebujete. Místo toho použijte symbolický název prostředku a přistupovat k id
vlastnosti.
Identifikátor se vrátí v následujícím formátu:
/subscriptions/{subscriptionId}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}
Poznámky
Pomocí této funkce získáte ID prostředku pro prostředky, které jsou nasazené v předplatném , a ne pro skupinu prostředků. Vrácené ID se liší od hodnoty vrácené funkcí resourceId tím, že nezahrnuje hodnotu skupiny prostředků.
subscriptionResourceID example
Následující soubor Bicep přiřadí předdefinované role. Můžete ho nasadit do skupiny prostředků nebo předplatného. Pomocí subscriptionResourceId
funkce získá ID prostředku pro předdefinované role.
@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], ...)
Vrátí jedinečný identifikátor prostředku nasazeného na úrovni tenanta.
Obor názvů: az.
Funkce tenantResourceId
je dostupná v souborech Bicep, ale obvykle ji nepotřebujete. Místo toho použijte symbolický název prostředku a přistupovat k id
vlastnosti.
Identifikátor se vrátí v následujícím formátu:
/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}
Předdefinované definice zásad jsou prostředky na úrovni tenanta. Pokud chcete nasadit přiřazení zásad, které odkazuje na předdefinované definice zásad, použijte tenantResourceId
funkci.
@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)
}
}
Další kroky
- Pokud chcete získat hodnoty z aktuálního nasazení, podívejte se na funkce hodnot nasazení.
- Pokud chcete iterovat zadaný počet opakování při vytváření typu prostředku, přečtěte si téma Iterativní smyčky v Bicep.