Funkcje zasobów dla Bicep
W tym artykule opisano funkcje Bicep służące do pobierania wartości zasobów.
Aby uzyskać wartości z bieżącego wdrożenia, zobacz Funkcje wartości wdrożenia.
extensionResourceId
extensionResourceId(resourceId, resourceType, resourceName1, [resourceName2], ...)
Zwraca identyfikator zasobu dla zasobu rozszerzenia. Zasób rozszerzenia to typ zasobu, który jest stosowany do innego zasobu w celu dodania do jego możliwości.
Przestrzeń nazw: az.
Funkcja extensionResourceId
jest dostępna w plikach Bicep, ale zazwyczaj nie jest potrzebna. Zamiast tego użyj nazwy symbolicznej zasobu i uzyskaj dostęp do id
właściwości .
Podstawowy format identyfikatora zasobu zwróconego przez tę funkcję to:
{scope}/providers/{extensionResourceProviderNamespace}/{extensionResourceType}/{extensionResourceName}
Segment zakresu zależy od rozszerzonego zasobu.
Po zastosowaniu zasobu rozszerzenia do zasobu identyfikator zasobu jest zwracany w następującym formacie:
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{baseResourceProviderNamespace}/{baseResourceType}/{baseResourceName}/providers/{extensionResourceProviderNamespace}/{extensionResourceType}/{extensionResourceName}
Gdy zasób rozszerzenia jest stosowany do grupy zasobów, format to:
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{extensionResourceProviderNamespace}/{extensionResourceType}/{extensionResourceName}
Po zastosowaniu zasobu rozszerzenia do subskrypcji format to:
/subscriptions/{subscriptionId}/providers/{extensionResourceProviderNamespace}/{extensionResourceType}/{extensionResourceName}
Gdy zasób rozszerzenia jest stosowany do grupy zarządzania, format to:
/providers/Microsoft.Management/managementGroups/{managementGroupName}/providers/{extensionResourceProviderNamespace}/{extensionResourceType}/{extensionResourceName}
Niestandardowa definicja zasad wdrożona w grupie zarządzania jest implementowana jako zasób rozszerzenia. Aby utworzyć i przypisać zasady, wdróż następujący plik Bicep w grupie zarządzania.
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
}
}
Wbudowane definicje zasad to zasoby na poziomie dzierżawy. Aby zapoznać się z przykładem wdrażania wbudowanej definicji zasad, zobacz tenantResourceId.
getSecret
keyVaultName.getSecret(secretName)
Zwraca wpis tajny z usługi Azure Key Vault. Ta funkcja służy do przekazywania wpisu tajnego do bezpiecznego parametru ciągu modułu Bicep.
Uwaga
az.getSecret(subscriptionId, resourceGroupName, keyVaultName, secretName, secretVersion)
Funkcji można używać w .bicepparam
plikach do pobierania wpisów tajnych magazynu kluczy. Aby uzyskać więcej informacji, zobacz getSecret.
Funkcji można używać getSecret
tylko z params
sekcji modułu. Można go używać tylko z zasobem Microsoft.KeyVault/vaults
.
module sql './sql.bicep' = {
name: 'deploySQL'
params: {
adminPassword: keyVault.getSecret('vmAdminPassword')
}
}
Jeśli spróbujesz użyć tej funkcji w jakiejkolwiek innej części pliku Bicep, wystąpi błąd. Jeśli używasz tej funkcji z interpolacją ciągów, występuje również błąd, nawet w przypadku użycia w sekcji params.
Funkcji można używać tylko z parametrem modułu @secure()
, który ma dekorator.
Magazyn kluczy musi mieć enabledForTemplateDeployment
ustawioną wartość true
. Użytkownik wdrażający plik Bicep musi mieć dostęp do wpisu tajnego. Aby uzyskać więcej informacji, zobacz Use Azure Key Vault to pass secure parameter value during Bicep deployment (Używanie usługi Azure Key Vault do przekazywania wartości bezpiecznego parametru podczas wdrażania Bicep).
Kwalifikator przestrzeni nazw nie jest wymagany, ponieważ funkcja jest używana z typem zasobu.
Parametry
Parametr | Wymagania | Type | Opis |
---|---|---|---|
secretName | Tak | string | Nazwa wpisu tajnego przechowywanego w magazynie kluczy. |
Wartość zwracana
Wartość wpisu tajnego dla nazwy wpisu tajnego.
Przykład
Poniższy plik Bicep jest używany jako moduł. Ma adminPassword
on parametr zdefiniowany za pomocą dekoratora @secure()
.
param sqlServerName string
param adminLogin string
@secure()
param adminPassword string
resource sqlServer 'Microsoft.Sql/servers@2023-08-01-preview' = {
...
}
Poniższy plik Bicep używa poprzedniego pliku Bicep jako modułu. Plik Bicep odwołuje się do istniejącego magazynu kluczy i wywołuje getSecret
funkcję w celu pobrania wpisu tajnego magazynu kluczy, a następnie przekazuje wartość jako parametr do modułu.
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')
}
}
Listy*
resourceName.list([apiVersion], [functionValues])
Funkcję listy dla dowolnego typu zasobu można wywołać za pomocą operacji rozpoczynającej się od list
. Niektóre typowe zastosowania to list
, , listKeys
listKeyValue
i listSecrets
.
Składnia tej funkcji różni się w zależności od nazwy operacji listy. Zwrócone wartości różnią się również w zależności od operacji. Bicep nie obsługuje obecnie uzupełniania i walidacji funkcji list*
.
Interfejs wiersza polecenia Bicep w wersji 0.4.X lub nowszej wywołuje funkcję listy przy użyciu operatora dostępu. Na przykład storageAccount.listKeys()
.
Kwalifikator przestrzeni nazw nie jest wymagany, ponieważ funkcja jest używana z typem zasobu.
Parametry
Parametr | Wymagania | Type | Opis |
---|---|---|---|
apiVersion | Nie. | string | Jeśli nie podasz tego parametru, używana jest wersja interfejsu API dla zasobu. Podaj niestandardową wersję interfejsu API tylko wtedy, gdy potrzebna jest funkcja do uruchomienia z określoną wersją. Użyj formatu rrrr-mm-dd. |
functionValues | Nie. | obiekt | Obiekt, który ma wartości dla funkcji. Udostępniaj ten obiekt tylko dla funkcji, które obsługują odbieranie obiektu z wartościami parametrów, takimi jak listAccountSas na koncie magazynu. Przykład przekazywania wartości funkcji jest pokazany w tym artykule. |
Prawidłowe zastosowania
Funkcje list
mogą być używane we właściwościach definicji zasobu. Nie używaj list
funkcji, która uwidacznia poufne informacje w sekcji danych wyjściowych pliku Bicep. Wartości wyjściowe są przechowywane w historii wdrożenia i mogą być pobierane przez złośliwego użytkownika.
W przypadku użycia z pętlą iteracyjną można użyć list
funkcji , input
ponieważ wyrażenie jest przypisane do właściwości zasobu. Nie można ich używać, count
ponieważ przed rozwiązaniem list
funkcji należy określić liczbę.
Jeśli używasz list
funkcji w zasobie, który jest wdrażany warunkowo, funkcja jest oceniana nawet wtedy, gdy zasób nie został wdrożony. Jeśli funkcja odwołuje się do zasobu, który nie istnieje, występuje błąd list
. Użyj operatora wyrażenia warunkowego ?: aby upewnić się, że funkcja jest oceniana tylko podczas wdrażania zasobu.
Wartość zwracana
Zwrócony obiekt różni się w zależności od używanej funkcji listy. Na przykład dla listKeys
konta magazynu zwraca następujący format:
{
"keys": [
{
"keyName": "key1",
"permissions": "Full",
"value": "{value}"
},
{
"keyName": "key2",
"permissions": "Full",
"value": "{value}"
}
]
}
Inne list
funkcje mają różne formaty zwracane. Aby wyświetlić format funkcji, uwzględnij ją w sekcji danych wyjściowych, jak pokazano w przykładowym pliku Bicep.
Przykład listy
Poniższy przykład wdraża konto magazynu, a następnie wywołuje listKeys
to konto magazynu. Klucz jest używany podczas ustawiania wartości dla skryptów wdrażania.
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
}
...
}
}
W następnym przykładzie pokazano list
funkcję, która przyjmuje parametr. W tym przypadku funkcja to listAccountSas
. Przekaż obiekt przez czas wygaśnięcia. Czas wygaśnięcia musi być w przyszłości.
param accountSasProperties object {
default: {
signedServices: 'b'
signedPermission: 'r'
signedExpiry: '2020-08-20T11:00:00Z'
signedResourceTypes: 's'
}
}
...
sasToken: storageAccount.listAccountSas('2021-04-01', accountSasProperties).accountSasToken
Implementacje
Możliwe zastosowania programu list*
przedstawiono w poniższej tabeli.
Typ zasobu | Nazwa funkcji |
---|---|
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/openid Połączenie Providers | 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/rejestry | listCredentials |
Microsoft.ContainerRegistry/rejestry | 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/rejestry/zadania | listDetails |
Microsoft.ContainerService/managedClusters | listCluster Administracja Credential |
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 | listSourceShareSynchronization Ustawienia |
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 | list Połączenie ionInfo |
Microsoft.DomainRegistration | listDomain Rekomendacje |
Microsoft.DomainRegistration/topLevelDomains | listAgreements |
Microsoft.EventGrid/domains | listKeys |
Microsoft.EventGrid/topics | listKeys |
Microsoft.EventHub/przestrzenie nazw/authorizationRules | listkeys |
Microsoft.EventHub/przestrzenie nazw/disasterRecoveryConfigs/authorizationRules | listkeys |
Microsoft.EventHub/namespaces/eventhubs/authorizationRules | listkeys |
Microsoft.ImportExport/jobs | listBitLockerKeys |
Microsoft.Kusto/Clusters/Databases | ListPrincipals |
Microsoft.LabServices/labs/users | lista |
Microsoft.LabServices/labs/virtualMachines | lista |
Microsoft.Logic/integrationAccounts/agreement | 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.Machine Edukacja/webServices | listkeys |
Microsoft.Machine Edukacja/Workspaces | listworkspacekeys |
Microsoft.Machine Edukacja Services/workspaces/computes | listKeys |
Microsoft.Machine Edukacja Services/workspaces/computes | listNodes |
Microsoft.Machine Edukacja Services/workspaces | listKeys |
Microsoft. Mapy/konta | 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/Przestrzenie nazw/authorizationRules | listkeys |
Microsoft.NotificationHubs/Przestrzenie nazw/NotificationHubs/authorizationRules | listkeys |
Microsoft.Operational Szczegółowe informacje/workspaces | lista |
Microsoft.Operational Szczegółowe informacje/workspaces | listKeys |
Microsoft.Policy Szczegółowe informacje/korygowania | listDeployments |
Microsoft.RedHatOpenShift/openShiftClusters | listCredentials |
Microsoft.Relay/przestrzenie nazw/disasterRecoveryConfigs/authorizationRules | listkeys |
Microsoft.Search/searchServices | list Administracja Keys |
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/menedżerowie | listActivationKey |
Microsoft.StorSimple/menedżerowie | 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 | lista |
Microsoft.Web/sites/config | lista |
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 | lista |
Microsoft.Web/sites/slots/config | lista |
microsoft.web/sites/slots/functions | listsecrets |
Aby określić, które typy zasobów mają operację listy, dostępne są następujące opcje:
Wyświetl operacje interfejsu API REST dla dostawcy zasobów i poszukaj operacji listy. Na przykład konta magazynu mają operację listKeys.
Użyj polecenia cmdlet Get-AzProviderOperation programu PowerShell. Poniższy przykład pobiera wszystkie operacje listy dla kont magazynu:
Get-AzProviderOperation -OperationSearchString "Microsoft.Storage/*" | where {$_.Operation -like "*list*"} | FT Operation
Użyj następującego polecenia interfejsu wiersza polecenia platformy Azure, aby filtrować tylko operacje listy:
az provider operation show --namespace Microsoft.Storage --query "resourceTypes[?name=='storageAccounts'].operations[].name | [?contains(@, 'list')]"
managementGroupResourceId
managementGroupResourceId(resourceType, resourceName1, [resourceName2], ...)
Zwraca unikatowy identyfikator zasobu wdrożonego na poziomie grupy zarządzania.
Przestrzeń nazw: az.
Funkcja managementGroupResourceId
jest dostępna w plikach Bicep, ale zazwyczaj nie jest potrzebna. Zamiast tego użyj nazwy symbolicznej zasobu i uzyskaj dostęp do id
właściwości .
Identyfikator jest zwracany w następującym formacie:
/providers/Microsoft.Management/managementGroups/{managementGroupName}/providers/{resourceType}/{resourceName}
Uwagi
Ta funkcja służy do pobierania identyfikatora zasobu dla zasobów wdrożonych w grupie zarządzania, a nie grupy zasobów. Zwrócony identyfikator różni się od wartości zwracanej przez funkcję resourceId , nie uwzględniając identyfikatora subskrypcji i wartości grupy zasobów.
przykład managementGroupResourceID
Poniższy szablon tworzy i przypisuje definicję zasad. Używa managementGroupResourceId
funkcji , aby uzyskać identyfikator zasobu dla definicji zasad.
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])
Określa, czy typ zasobu obsługuje strefy dla regionu. Ta funkcja obsługuje tylko zasoby strefowe. Usługi strefowo nadmiarowe zwracają pustą tablicę. Aby uzyskać więcej informacji, zobacz Usługi platformy Azure, które obsługują Strefy dostępności.
Przestrzeń nazw: az.
Parametry
Parametr | Wymagania | Type | Opis |
---|---|---|---|
providerNamespace | Tak | string | Przestrzeń nazw dostawcy zasobów dla typu zasobu, aby sprawdzić obsługę strefy. |
resourceType | Tak | string | Typ zasobu do sprawdzania obsługi strefy. |
lokalizacja | Tak | string | Region, w którym ma być sprawdzana obsługa stref. |
numberOfZones | Nie. | integer | Liczba stref logicznych do zwrócenia. Wartość domyślna to 1. Liczba musi być dodatnią liczbą całkowitą z zakresu od 1 do 3. Użyj 1 dla zasobów z jedną strefą. W przypadku zasobów wielostrefowych wartość musi być mniejsza lub równa liczbie obsługiwanych stref. |
offset | Nie. | integer | Przesunięcie z początkowej strefy logicznej. Funkcja zwraca błąd, jeśli przesunięcie plus numberOfZones przekracza liczbę obsługiwanych stref. |
Wartość zwracana
Tablica z obsługiwanymi strefami. W przypadku używania wartości domyślnych dla przesunięcia i numberOfZones
, typ zasobu i region, który obsługuje strefy, zwraca następującą tablicę:
[
"1"
]
numberOfZones
Gdy parametr jest ustawiony na wartość 3, zwraca:
[
"1",
"2",
"3"
]
Gdy typ zasobu lub region nie obsługuje stref, zwracana jest pusta tablica.
[
]
Uwagi
Istnieją różne kategorie dla usługi Azure Strefy dostępności — strefowe i strefowo nadmiarowe. Funkcja pickZones
może służyć do zwracania strefy dostępności dla zasobu strefowego. W przypadku strefowo nadmiarowych usług (ZRS) funkcja zwraca pustą tablicę. Zasoby strefowe zwykle mają zones
właściwość na najwyższym poziomie definicji zasobu. Aby określić kategorię obsługi stref dostępności, zobacz Usługi platformy Azure, które obsługują Strefy dostępności.
Aby określić, czy dany region lub lokalizacja platformy Azure obsługuje strefy dostępności, wywołaj pickZones
funkcję z typem zasobu strefowego, takim jak Microsoft.Network/publicIPAddresses
. Jeśli odpowiedź nie jest pusta, region obsługuje strefy dostępności.
przykład pickZones
Poniższy plik Bicep przedstawia trzy wyniki użycia pickZones
funkcji.
output supported array = pickZones('Microsoft.Compute', 'virtualMachines', 'westus2')
output notSupportedRegion array = pickZones('Microsoft.Compute', 'virtualMachines', 'westus')
output notSupportedType array = pickZones('Microsoft.Cdn', 'profiles', 'westus2')
Dane wyjściowe z powyższych przykładów zwracają trzy tablice.
Nazwisko | Typ | Wartość |
---|---|---|
Obsługiwane | tablica | [ "1" ] |
notSupportedRegion | tablica | [] |
notSupportedType | tablica | [] |
Możesz użyć odpowiedzi z pickZones
, aby określić, czy zapewnić wartość null dla stref, czy przypisać maszyny wirtualne do różnych stref.
dostawców
Funkcja providers została uznana za przestarzałą w Bicep. Nie zalecamy już korzystania z niego. Jeśli ta funkcja jest używana do pobrania wersji interfejsu API dla dostawcy zasobów, zalecamy podanie określonej wersji interfejsu API w pliku Bicep. Użycie dynamicznie zwracanej wersji interfejsu API może spowodować przerwanie szablonu, jeśli właściwości zmienią się między wersjami.
Operacja dostawców jest nadal dostępna za pośrednictwem interfejsu API REST. Można go użyć poza plikiem Bicep, aby uzyskać informacje o dostawcy zasobów.
Przestrzeń nazw: az.
reference
reference(resourceName or resourceIdentifier, [apiVersion], ['Full'])
Zwraca obiekt reprezentujący stan środowiska uruchomieniowego zasobu. Dane wyjściowe i zachowanie reference
funkcji bardzo zależy od tego, jak każdy dostawca zasobów implementuje odpowiedzi PUT i GET.
Przestrzeń nazw: az.
Pliki Bicep zapewniają dostęp do funkcji referencyjnej, chociaż zwykle jest to niepotrzebne. Zamiast tego zaleca się użycie symbolicznej nazwy zasobu. Funkcji referencyjnej można używać tylko w properties
obiekcie zasobu i nie można jej użyć dla właściwości najwyższego poziomu, takich jak name
lub location
. To samo dotyczy odwołań przy użyciu nazwy symbolicznej. Jednak w przypadku właściwości, takich jak name
, można wygenerować szablon bez użycia funkcji referencyjnej. Wystarczające informacje o nazwie zasobu są znane bezpośrednio z emitowania nazwy. Jest on określany jako właściwości czasu kompilacji. Walidacja Bicep może identyfikować nieprawidłowe użycie nazwy symbolicznej.
Poniższy przykład umożliwia wdrożenie konta magazynu. Pierwsze dwa dane wyjściowe dają te same wyniki.
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
Aby uzyskać właściwość z istniejącego zasobu, który nie został wdrożony w szablonie, użyj słowa kluczowego 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
Aby odwołać się do zasobu zagnieżdżonego wewnątrz zasobu nadrzędnego, użyj zagnieżdżonego dostępu (::
). Ta składnia jest używana tylko wtedy, gdy uzyskujesz dostęp do zasobu zagnieżdżonego spoza zasobu nadrzędnego.
vNet1::subnet1.properties.addressPrefix
Jeśli spróbujesz odwołać się do zasobu, który nie istnieje, zostanie wyświetlony NotFound
błąd i wdrożenie zakończy się niepowodzeniem.
resourceId
resourceId([subscriptionId], [resourceGroupName], resourceType, resourceName1, [resourceName2], ...)
Zwraca unikatowy identyfikator zasobu.
Przestrzeń nazw: az.
Funkcja resourceId
jest dostępna w plikach Bicep, ale zazwyczaj nie jest potrzebna. Zamiast tego użyj nazwy symbolicznej zasobu i uzyskaj dostęp do id
właściwości .
Ta funkcja jest używana, gdy nazwa zasobu jest niejednoznaczna lub nie jest aprowizowana w tym samym pliku Bicep. Format zwróconego identyfikatora różni się w zależności od tego, czy wdrożenie odbywa się w zakresie grupy zasobów, subskrypcji, grupy zarządzania lub dzierżawy.
Na przykład:
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
Aby uzyskać identyfikator zasobu dla zasobu, który nie został wdrożony w pliku Bicep, użyj istniejącego słowa kluczowego.
param storageAccountName string
resource storageAccount 'Microsoft.Storage/storageAccounts@2023-04-01' existing = {
name: storageAccountName
}
output storageID string = storageAccount.id
Aby uzyskać więcej informacji, zobacz funkcję resourceId szablonu JSON.
subscriptionResourceId
subscriptionResourceId([subscriptionId], resourceType, resourceName1, [resourceName2], ...)
Zwraca unikatowy identyfikator zasobu wdrożonego na poziomie subskrypcji.
Przestrzeń nazw: az.
Funkcja subscriptionResourceId
jest dostępna w plikach Bicep, ale zazwyczaj nie jest potrzebna. Zamiast tego użyj nazwy symbolicznej zasobu i uzyskaj dostęp do id
właściwości .
Identyfikator jest zwracany w następującym formacie:
/subscriptions/{subscriptionId}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}
Uwagi
Ta funkcja służy do pobierania identyfikatora zasobu dla zasobów wdrożonych w subskrypcji , a nie grupy zasobów. Zwrócony identyfikator różni się od wartości zwracanej przez funkcję resourceId , nie uwzględniając wartości grupy zasobów.
przykład subscriptionResourceID
Poniższy plik Bicep przypisuje wbudowaną rolę. Można go wdrożyć w grupie zasobów lub subskrypcji. Używa subscriptionResourceId
funkcji , aby uzyskać identyfikator zasobu dla ról wbudowanych.
@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], ...)
Zwraca unikatowy identyfikator zasobu wdrożonego na poziomie dzierżawy.
Przestrzeń nazw: az.
Funkcja tenantResourceId
jest dostępna w plikach Bicep, ale zazwyczaj nie jest potrzebna. Zamiast tego użyj nazwy symbolicznej zasobu i uzyskaj dostęp do id
właściwości .
Identyfikator jest zwracany w następującym formacie:
/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}
Wbudowane definicje zasad to zasoby na poziomie dzierżawy. Aby wdrożyć przypisanie zasad odwołujące się do wbudowanej tenantResourceId
definicji zasad, użyj funkcji .
@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)
}
}
Następne kroki
- Aby uzyskać wartości z bieżącego wdrożenia, zobacz Funkcje wartości wdrożenia.
- Aby iterować określoną liczbę razy podczas tworzenia typu zasobu, zobacz Iteracyjne pętle w Bicep.