Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Cet article décrit les fonctions Bicep pour obtenir des valeurs de ressources.
Pour obtenir les valeurs du déploiement actuel, consultez Fonctions de valeur de déploiement.
L’espace this de noms
L’espace this de noms fournit des fonctions pour la découverte de l’état des ressources à l’exécution dans une définition de ressource. Ces fonctions permettent à votre modèle d’adapter sa configuration en fonction de l’existence déjà d’une ressource dans l’environnement.
-
this.exists(): Retourne une valeur bool indiquant si la ressource existe actuellement. -
this.existingResource(): Retourne la représentation objet de la ressource si elle existe, ou nulle si elle n’existe pas.
Existe
this.exists()
Retourne une valeur bool indiquant si la ressource existe actuellement dans Azure. Cette fonction est évaluée lors du déploiement et est destinée à être utilisée dans les assignations de propriétés de ressources pour gérer la logique conditionnelle sans nécessiter de déclarations de ressources existantes séparées.
Espace de noms : this
Exemple
resource stg 'Microsoft.Storage/storageAccounts@2026-04-01' = {
name: 'mystorageaccount'
location: 'eastus'
sku: {
name: 'Standard_LRS'
}
kind: 'StorageV2'
properties:{
accessTier: this.exists() ? this.existingResource()!.properties.accessTier : 'Cold'
}
}
ressource existante
this.existingResource()
Rend la représentation de l’objet de la ressource si elle existe ou null non. Cette fonction s’associe à this.exists(). Tandis que exists() renvoie un simple booléen, renvoie existingResource() l’objet ressource réel. Vous pouvez accéder en toute sécurité aux propriétés imbriquées en utilisant l’opérateur de null-pardonnant ( !) ou l’opérateur de navigation sécurisée (. ?).
Espace de noms : this
Exemple
resource stg 'Microsoft.Storage/storageAccounts@2026-04-01' = {
name: 'mystorageaccount'
location: 'eastus'
sku: {
name: 'Standard_LRS' }
kind: 'StorageV2'
properties:{
accessTier: this.existingResource().?properties.accessTier ?? 'Cold'
}
}
extensionResourceId
extensionResourceId(resourceId, resourceType, resourceName1, [resourceName2], ...)
Renvoie l’ID de ressource d’une ressource d’extension. Une ressource d’extension est un type de ressource que vous appliquez à une autre ressource pour en ajouter des capacités.
Espace de noms : az.
Le premier argument doit être l’identifiant de ressource entièrement qualifié de la ressource à laquelle s’applique la ressource d’extension. Cette exigence est particulièrement importante lorsque vous déployez une ressource au niveau locataire à partir d’un champ de renom, comme un abonnement ou un groupe de ressources. Une valeur qui se résout à l’échelle locataire peut échouer lorsque le déploiement commence à partir d’un champ inférieur.
Vous pouvez utiliser la extensionResourceId fonction dans les fichiers Bicep, mais en général vous n'en avez pas besoin. Utilisez plutôt le nom symbolique de la ressource et accédez à la propriété id. La id propriété renvoie l’identifiant de ressource entièrement qualifié.
Le format de base de l’ID de ressource retourné par cette fonction est le suivant :
{scope}/providers/{extensionResourceProviderNamespace}/{extensionResourceType}/{extensionResourceName}
Le segment d’étendue varie en fonction de la ressource étendue.
Lorsque vous appliquez la ressource d’extension à une ressource, l’identifiant de la ressource est retourné dans le format suivant :
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{baseResourceProviderNamespace}/{baseResourceType}/{baseResourceName}/providers/{extensionResourceProviderNamespace}/{extensionResourceType}/{extensionResourceName}
Lorsque vous appliquez la ressource d’extension à un groupe de ressources, le format est :
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{extensionResourceProviderNamespace}/{extensionResourceType}/{extensionResourceName}
Lorsque vous appliquez la ressource d’extension à un abonnement, le format est :
/subscriptions/{subscriptionId}/providers/{extensionResourceProviderNamespace}/{extensionResourceType}/{extensionResourceName}
Lorsque vous appliquez la ressource d’extension à un groupe de gestion, le format est le suivant :
/providers/Microsoft.Management/managementGroups/{managementGroupName}/providers/{extensionResourceProviderNamespace}/{extensionResourceType}/{extensionResourceName}
Une définition de stratégie personnalisée déployée sur un groupe d’administration est implémentée en tant que ressource d’extension. Pour créer et affecter une stratégie, déployez le fichier Bicep suivant dans un groupe d’administration.
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@2025-03-01' = {
name: 'locationRestriction'
properties: {
policyType: 'Custom'
mode: 'All'
parameters: {}
policyRule: {
if: {
not: {
field: 'location'
in: allowedLocations
}
}
then: {
effect: 'deny'
}
}
}
}
resource policyAssignment 'Microsoft.Authorization/policyAssignments@2025-03-01' = {
name: 'locationAssignment'
properties: {
policyDefinitionId: policyDefinition.id
}
}
Les définitions de stratégie intégrées sont des ressources de niveau locataire. Pour obtenir un exemple de déploiement d’une définition de stratégie intégrée, consultez tenantResourceId.
getSecret
keyVaultName.getSecret(secretName)
Retourne un secret à partir d’un Azure Key Vault. Utilisez cette fonction pour passer un secret à un paramètre de chaîne sécurisé d’un module Bicep.
Remarque
Utilisez la az.getSecret(subscriptionId, resourceGroupName, keyVaultName, secretName, secretVersion) fonction dans .bicepparam les fichiers pour récupérer les secrets du coffre-fort clé. Pour plus d’informations, consultez getSecret.
Vous ne pouvez utiliser la fonction getSecret qu’à partir de la section params d’un module. Vous ne pouvez l’utiliser qu’avec une ressource Microsoft.KeyVault/vaults.
module sql './sql.bicep' = {
name: 'deploySQL'
params: {
adminPassword: keyVault.getSecret('vmAdminPassword')
}
}
Vous obtenez une erreur si vous tentez d’utiliser cette fonction dans une autre partie du fichier Bicep. Vous obtenez également une erreur si vous utilisez cette fonction avec une interpolation de chaîne, même lorsqu'elle est utilisée dans la section params.
Utilisez la fonction uniquement avec un paramètre de module qui a le @secure() décorateur.
Le enabledForTemplateDeployment du coffre de clés doit être défini sur true. L’utilisateur qui déploie le fichier Bicep doit avoir accès au secret. Pour plus d’informations, consultez Utilisez Azure Key Vault pour passer une valeur de paramètre sécurisée pendant Bicep déploiement.
Un qualificateur d’espace de noms n’est pas nécessaire, car la fonction est utilisée avec un type de ressource.
Paramètres
| Paramètre | Obligatoire | Catégorie | Descriptif |
|---|---|---|---|
| secretName | Oui | ficelle | Nom du secret stocké dans un coffre de clés. |
Valeur retournée
Valeur du secret pour le nom du secret.
Exemple
Le fichier Bicep suivant est utilisé comme module. Il est doté d’un paramètre adminPassword défini avec l’élément décoratif @secure().
param sqlServerName string
param adminLogin string
@secure()
param adminPassword string
resource sqlServer 'Microsoft.Sql/servers@2024-11-01-preview' = {
...
}
Le fichier Bicep suivant utilise le fichier Bicep précédent en tant que module. Le fichier Bicep fait référence à un coffre de clés existant et appelle la fonction getSecret pour récupérer le secret du coffre de clés, puis transmet la valeur en tant que paramètre au module.
param sqlServerName string
param adminLogin string
param subscriptionId string
param kvResourceGroup string
param kvName string
resource keyVault 'Microsoft.KeyVault/vaults@2025-05-01' existing = {
name: kvName
scope: resourceGroup(subscriptionId, kvResourceGroup )
}
module sql './sql.bicep' = {
name: 'deploySQL'
params: {
sqlServerName: sqlServerName
adminLogin: adminLogin
adminPassword: keyVault.getSecret('vmAdminPassword')
}
}
liste*
resourceName.list([apiVersion], [functionValues])
Vous pouvez appeler une fonction de liste pour n’importe quel type de ressource avec une opération qui commence par list. Voici quelques utilisations courantes : list, listKeys, listKeyValue et listSecrets.
La syntaxe de cette fonction varie en fonction du nom des opérations de liste. Les valeurs retournées varient également selon l’opération. Bicep ne prend actuellement pas en charge les achèvements et la validation pour les fonctions list*.
Avec Bicep CLI version 0.4.X ou ultérieure, vous appelez la fonction de liste à l’aide de l’opérateur accessor. Par exemple : storageAccount.listKeys().
Un qualificateur d’espace de noms n’est pas nécessaire, car la fonction est utilisée avec un type de ressource.
Paramètres
| Paramètre | Obligatoire | Catégorie | Descriptif |
|---|---|---|---|
| apiVersion | Non | ficelle | Si vous ne fournissez pas ce paramètre, la version de l’API de la ressource est utilisée. Fournissez une version d’API personnalisée uniquement lorsque vous avez besoin que la fonction soit exécutée avec une version spécifique. Utilisez le format aaaa-mm-jj. |
| functionValues | Non | objet | Objet qui contient les valeurs de la fonction. Fournissez uniquement cet objet pour les fonctions qui prennent en charge la réception d’un objet avec des valeurs de paramètre, comme listAccountSas sur un compte de stockage. Un exemple de transmission de valeurs de fonction est illustré dans cet article. |
Utilisations valides
Utilisez les list fonctions dans les propriétés d’une définition de ressource. N'utilisez pas une list fonction qui expose des informations sensibles dans la outputs section d'un fichier Bicep. Les valeurs de sortie sont stockées dans l’historique de déploiement et un utilisateur malveillant pourrait les récupérer.
Lorsque vous utilisez une list fonction avec une boucle itérative, vous pouvez l’utiliser car input l’expression est assignée à la propriété de la ressource. Vous ne pouvez pas l’utiliser avec count car le nombre doit être déterminé avant que la list fonction soit résolue.
Si vous utilisez une fonction list dans une ressource qui est déployée conditionnellement, la fonction est évaluée, même si la ressource n’est pas déployée. Vous obtenez une erreur si la fonction list fait référence à une ressource qui n’existe pas. Utilisez l’opérateur d’expression conditionnelle ?: pour vous assurer que la fonction est uniquement évaluée lorsque la ressource est déployée.
La use-recognized-resource-type règle linter signale toute ressource référencée qui utilise un type de ressource non reconnu ou invalide.
Valeur retournée
L’objet retourné varie selon la fonction list que vous utilisez. Par exemple, la listKeys fonction d’un compte de stockage restitue le format suivant :
{
"keys": [
{
"keyName": "key1",
"permissions": "Full",
"value": "{value}"
},
{
"keyName": "key2",
"permissions": "Full",
"value": "{value}"
}
]
}
D’autres fonctions list ont différents formats de retour. Pour voir le format d’une fonction, incluez-la dans la outputs section illustrée dans l’exemple de fichier Bicep.
Exemple de liste
L’exemple suivant déploie un compte de stockage, puis appelle listKeys sur ce compte de stockage. La clé est utilisée pour définir une valeur pour les scripts de déploiement.
resource storageAccount 'Microsoft.Storage/storageAccounts@2025-06-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
}
...
}
}
L’exemple suivant montre une fonction list qui accepte un paramètre. Dans ce cas, la fonction est listAccountSas. Passez un objet pour l’heure d’expiration. L’heure d’expiration doit être dans le futur.
param accountSasProperties object {
default: {
signedServices: 'b'
signedPermission: 'r'
signedExpiry: '2020-08-20T11:00:00Z'
signedResourceTypes: 's'
}
}
...
sasToken: storageAccount.listAccountSas('2021-04-01', accountSasProperties).accountSasToken
Implémentations
Le tableau suivant montre les utilisations possibles des list* fonctions.
| Type de ressource | Nom de la fonction |
|---|---|
| Microsoft. Addons/supportProviders | listsupportplaninfo |
| Microsoft. AnalysisServices/serveurs | listGatewayStatus |
| Microsoft. ApiManagement/service/authorizationServers | listSecrets |
| Microsoft. ApiManagement/service/passerelles | listKeys |
| Microsoft. ApiManagement/service/identityProviders | listSecrets |
| Microsoft. ApiManagement/service/namedValues | listValue |
| Microsoft. ApiManagement/service/openidConnectProviders | listSecrets |
| Microsoft. ApiManagement/service/abonnements | 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/canaux | listChannelWithKeys |
| Microsoft. Cache/redis | listKeys |
| Microsoft. CognitiveServices/comptes | listKeys |
| Microsoft. ContainerRegistry/registrys | listCredentials |
| Microsoft. ContainerRegistry/registrys | listUsages |
| Microsoft. ContainerRegistry/registrys/agentpools | listQueueStatus |
| Microsoft. ContainerRegistry/registrys/buildTasks | listSourceRepositoryProperties |
| Microsoft. ContainerRegistry/registrys/buildTasks/steps | listBuildArguments |
| Microsoft. ContainerRegistry/registrys/taskruns | listDetails |
| Microsoft. ContainerRegistry/registrys/webhooks | listEvents |
| Microsoft. ContainerRegistry/registrys/runs | listLogSasUrl |
| Microsoft. ContainerRegistry/registrys/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. Partage de données/comptes/partages | listSynchronizations |
| Microsoft. DataShare/accounts/shareSubscriptions | listSourceShareSynchronizationSettings |
| Microsoft. DataShare/accounts/shareSubscriptions | listSynchronizationDetails |
| Microsoft. DataShare/accounts/shareSubscriptions | listSynchronizations |
| Microsoft. Appareils/iotHubs | listkeys |
| Microsoft. Appareils/iotHubs/iotHubKeys | listkeys |
| Microsoft. Appareils/provisionnementServices/clés | listkeys |
| Microsoft. Appareils/provisionnementServices | 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/bases de données | ListPrincipals |
| Microsoft. LabServices/labs/users | liste |
| Microsoft. LabServices/labs/virtualMachines | liste |
| Microsoft. Logic/integrationAccounts/agreements | listContentCallbackUrl |
| Microsoft. Logic/integrationAccounts/assemblys | 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. Logique/flux de travail | listCallbackUrl |
| Microsoft. Logique/flux de travail | listSwagger |
| Microsoft. Logique/workflows/exécutions/actions | listExpressionTraces |
| Microsoft. Logique/workflows/exécutions/actions/répétitions | listExpressionTraces |
| Microsoft. Logique/workflows/déclencheurs | listCallbackUrl |
| Microsoft. Logique/workflows/versions/déclencheurs | listCallbackUrl |
| Microsoft. MachineLearning/webServices | listkeys |
| Microsoft. MachineLearning/Workspaces | listworkspacekeys |
| Microsoft. MachineLearningServices/workspaces/computes | listKeys |
| Microsoft. MachineLearningServices/workspaces/computes | listNodes |
| Microsoft. MachineLearningServices/espaces de travail | listKeys |
| Microsoft. Cartes/comptes | 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 | liste |
| Microsoft. OperationalInsights/workspaces | listKeys |
| Microsoft. PolicyInsights/corrections | 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/gestionnaires/appareils | listFailoverSets |
| Microsoft. StorSimple/gestionnaires/appareils | listFailoverTargets |
| Microsoft. StorSimple/gestionnaires | listActivationKey |
| Microsoft. StorSimple/gestionnaires | 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 | liste |
| Microsoft. Web/sites/config | liste |
| 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 | liste |
| Microsoft. Web/sites/emplacements/configuration | liste |
| microsoft.web/sites/slots/functions | listsecrets |
Pour déterminer quels types de ressources ont une opération de liste, utilisez les options suivantes :
Affichez les opérations d’API REST pour un fournisseur de ressources et recherchez les opérations de liste. Par exemple, les comptes de stockage présentent l’opération listKeys.
Utilisez la cmdlet PowerShell Get-AzProviderOperation. L’exemple ci-dessous obtient toutes les opérations de liste pour les comptes de stockage :
Get-AzProviderOperation -OperationSearchString "Microsoft.Storage/*" | where {$_.Operation -like "*list*"} | FT OperationUtilisez la commande Azure CLI suivante pour filtrer uniquement les opérations de liste :
az provider operation show --namespace Microsoft.Storage --query "resourceTypes[?name=='storageAccounts'].operations[].name | [?contains(@, 'list')]"
managementGroupResourceId
managementGroupResourceId(resourceType, resourceName1, [resourceName2], ...)
Retourne l’identificateur unique d’une ressource déployée au niveau du groupe d’administration.
Espace de noms : az.
La managementGroupResourceId fonction est disponible dans les fichiers Bicep, mais en général vous n'en avez pas besoin. Utilisez plutôt le nom symbolique de la ressource et accédez à la propriété id.
L'identificateur est retourné au format suivant :
/providers/Microsoft.Management/managementGroups/{managementGroupName}/providers/{resourceType}/{resourceName}
Notes
Utilisez cette fonction pour obtenir l’identifiant de ressource des ressources déployées dans le groupe de gestion plutôt que dans un groupe de ressources. L’ID retourné diffère de la valeur retournée par la fonction resourceId en cela qu’il n’inclut pas d’ID d’abonnement et de valeur de groupe de ressources.
managementGroupResourceId
Le modèle suivant crée et attribue une définition de stratégie. Il utilise la fonction managementGroupResourceId pour récupérer l’ID de ressource pour la définition de stratégie.
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@2025-03-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@2025-03-01' = {
name: 'location-lock'
properties: {
scope: mgScope
policyDefinitionId: managementGroupResourceId('Microsoft.Authorization/policyDefinitions', policyDefinitionName)
}
dependsOn: [
policyDefinition
]
}
pickZones
pickZones(providerNamespace, resourceType, location, [numberOfZones], [offset])
Détermine si un type de ressource prend en charge les zones pour une région. Cette fonction prend uniquement en charge les ressources zonales. Les services de redondance interzone retournent un tableau vide. Pour plus d’informations, consultez Azure services qui prennent en charge les zones de disponibilité.
Espace de noms : az.
Paramètres
| Paramètre | Obligatoire | Catégorie | Descriptif |
|---|---|---|---|
| espacedenoms_fournisseur | Oui | ficelle | Espace de noms du fournisseur du type de ressource pour lequel la prise en charge des zones doit être vérifiée. |
| type de ressource | Oui | ficelle | Type de ressource pour lequel la prise en charge des zones doit être vérifiée. |
| lieu | Oui | ficelle | Région pour laquelle la prise en charge des zones doit être vérifiée. |
| numberOfZones | Non | entier | Nombre de zones logiques à retourner. La valeur par défaut est 1. Le nombre doit être un entier positif compris entre 1 et 3. Utilisez 1 pour les ressources à une seule zone. Pour les ressources multizones, la valeur doit être inférieure ou égale au nombre de zones prises en charge. |
| décalage | Non | entier | Décalage par rapport à la zone logique de départ. La fonction retourne une erreur si le décalage plus le nombre de zones (numberOfZones) dépasse le nombre de zones prises en charge. |
Valeur retournée
Tableau avec les zones prises en charge. Lorsque vous utilisez les valeurs par défaut pour offset et numberOfZones, un type de ressource et une région qui supportent les zones retournent le tableau suivant :
[
"1"
]
Lorsque vous définissez le numberOfZones paramètre à 3, il revient :
[
"1",
"2",
"3"
]
Lorsque le type de ressource ou la région ne supporte pas les zones, la fonction renvoie un tableau vide.
[
]
Notes
Azure Zones de disponibilité se divisent en deux catégories : zonales et zonales redondantes. Utilisez la pickZones fonction pour renvoyer une zone de disponibilité pour une ressource zonale. Pour les services redondants interzone (ZRS), la fonction retourne un tableau vide. Les ressources zonales ont généralement une propriété zones au niveau supérieur de la définition de ressource. Pour déterminer la catégorie de prise en charge des zones de disponibilité, consultez Azure services qui prennent en charge les zones de disponibilité.
Pour déterminer si une région ou un emplacement Azure donné prend en charge les zones de disponibilité, appelez la fonction pickZones avec un type de ressource zonal, tel que Microsoft.Network/publicIPAddresses. Si la réponse n’est pas vide, la région prend en charge les zones de disponibilité.
Exemple de pickZones
Le fichier Bicep suivant affiche trois résultats pour utiliser la fonction 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')
La sortie des exemples précédents retourne trois tableaux.
| Nom | Catégorie | Valeur |
|---|---|---|
| soutenu | tableau | [ "1" ] |
| notSupportedRegion | tableau | [] |
| notSupportedType | tableau | [] |
Utilisez la réponse de pickZones pour décider s’il faut fournir un null pour les zones ou attribuer des machines virtuelles à différentes zones.
fournisseurs
La fonction des fournisseurs est dépréciée dans Bicep. Ne l’utilisez pas. Si vous avez utilisé cette fonction pour obtenir une version API pour le fournisseur de ressources, fournissez une version spécifique de l’API dans votre fichier Bicep. L’utilisation d’une version d’API retournée dynamiquement peut rompre votre modèle si les propriétés changent d’une version à l’autre.
L’opération de fournisseurs est toujours disponible via l’API REST. Vous pouvez l’utiliser en dehors d’un fichier Bicep pour obtenir des informations sur un fournisseur de ressources.
Espace de noms : az.
référence
reference(resourceName or resourceIdentifier, [apiVersion], ['Full'])
Retourne un objet qui représente l’état d’exécution d’une ressource. La sortie et le comportement de la reference fonction dépendent fortement de la manière dont chaque fournisseur de ressources (RP) implémente ses réponses PUT et GET.
Espace de noms : az.
Les fichiers Bicep donnent accès à la fonction de référence, même si en général ce n'est pas nécessaire. Utilisez plutôt le nom symbolique de la ressource. Vous ne pouvez utiliser la fonction de référence qu’à l’intérieur de l’objet properties d’une ressource. Vous ne pouvez pas l’utiliser pour des propriétés de haut niveau comme name ou location. La même règle s’applique généralement aux références utilisant le nom symbolique. Cependant, pour des propriétés telles que name, vous pouvez générer un modèle sans utiliser la fonction de référence. Vous connaissez assez le nom de la ressource pour l’émettre directement. Ce sont des propriétés au moment de la compilation. Bicep validation peut identifier toute utilisation incorrecte du nom symbolique.
L’exemple suivant déploie un compte de stockage. Les deux premières sorties vous offrent les mêmes résultats.
param storageAccountName string = uniqueString(resourceGroup().id)
param location string = resourceGroup().location
resource storageAccount 'Microsoft.Storage/storageAccounts@2025-06-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
Pour obtenir une propriété d’une ressource existante que vous n’avez pas déployée dans le modèle, utilisez le existing mot-clé :
param storageAccountName string
resource storageAccount 'Microsoft.Storage/storageAccounts@2025-06-01' existing = {
name: storageAccountName
}
// use later in template as often as needed
output blobAddress string = storageAccount.properties.primaryEndpoints.blob
Pour référencer une ressource imbriquée dans une ressource parente, utilisez l’accessoire imbriqué (::). Vous n’utilisez cette syntaxe que lorsque vous accédez à la ressource imbriquée en dehors de la ressource parente.
vNet1::subnet1.properties.addressPrefix
Si vous tentez de référencer une ressource qui n’existe pas, vous recevez l’erreur NotFound et votre déploiement échoue. La use-recognized-resource-type règle linter signale toute ressource référencée qui utilise un type de ressource non reconnu ou invalide.
identifiant de ressource
resourceId([subscriptionId], [resourceGroupName], resourceType, resourceName1, [resourceName2], ...)
Retourne l'identificateur unique d'une ressource.
Espace de noms : az.
La resourceId fonction est disponible dans les fichiers Bicep, mais en général vous n'en avez pas besoin. Utilisez plutôt le nom symbolique de la ressource et accédez à la propriété id.
Utilisez cette fonction lorsque le nom de la ressource est ambigu ou non provisionné dans le même fichier Bicep. Le format de l’identificateur retourné varie selon que le déploiement se produit à l’échelle d’un groupe de ressources, d’un abonnement, d’un groupe d’administration ou d’un locataire.
Par exemple :
param storageAccountName string
param location string = resourceGroup().location
resource storageAccount 'Microsoft.Storage/storageAccounts@2025-06-01' = {
name: storageAccountName
location: location
kind: 'Storage'
sku: {
name: 'Standard_LRS'
}
}
output storageID string = storageAccount.id
Pour obtenir l'ID de ressource d'une ressource qui n'est pas déployée dans le fichier Bicep, utilisez le mot clé existant.
param storageAccountName string
resource storageAccount 'Microsoft.Storage/storageAccounts@2025-06-01' existing = {
name: storageAccountName
}
output storageID string = storageAccount.id
Pour obtenir plus d'informations, consultez la fonction resourceId du modèle JSON.
définitionsDeRôle
roleDefinitions(roleName)
Retourne des informations sur la définition de rôle spécifiée, y compris id et roleDefinitionId. Il s'agit d'un helper basé sur un nom pour Azure attributions de rôles RBAC. Au lieu de vous demander de coder en dur le GUID d’une définition de rôle personnalisée ou intégrée (comme Contributeur, Lecteur, etc.), cela vous permet de fournir le nom d’affichage du rôle personnalisé ou intégré, et la fonction résout les informations de définition correspondante du rôle au moment du déploiement.
Espace de noms : az.
Paramètres
| Paramètre | Obligatoire | Catégorie | Descriptif |
|---|---|---|---|
| roleName | Oui | ficelle | Nom complet de la définition de rôle. |
Valeur retournée
Objet représentant la définition de rôle, y compris id et roleDefinitionId.
Exemples
Le code Bicep suivant crée une attribution déterministe de rôle Azure RBAC qui accorde à un principal spécifié le rôle intégré de Storage Blob Data Reader dans le champ de déploiement en résolvant la définition du rôle par nom au moment du déploiement.
@description('Specifies the role definition ID used in the role assignment.')
param roleDefinitionName string = 'Storage Blob Data Reader'
@description('Specifies the principal ID assigned to the role.')
param principalId string
var roleAssignmentName= guid(principalId, roleDefinitionName, resourceGroup().id)
resource roleAssignment 'Microsoft.Authorization/roleAssignments@2022-04-01' = {
name: roleAssignmentName
properties: {
roleDefinitionId: roleDefinitions(roleDefinitionName).id
principalId: principalId
}
}
Pour obtenir plus d'informations, consultez la fonction resourceId du modèle JSON.
subscriptionResourceId
subscriptionResourceId([subscriptionId], resourceType, resourceName1, [resourceName2], ...)
Retourne l’identificateur unique d’une ressource déployée au niveau de l’abonnement.
Espace de noms : az.
La fonction subscriptionResourceId est disponible dans les fichiers Bicep, mais en général, vous n'en avez pas besoin. Utilisez plutôt le nom symbolique de la ressource et accédez à la propriété id.
L'identificateur est retourné au format suivant :
/subscriptions/{subscriptionId}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}
Notes
Utilisez cette fonction pour obtenir l’identifiant de ressource des ressources déployées sur l’abonnement plutôt que sur un groupe de ressources. L’ID retourné diffère de la valeur retournée par la fonction resourceId en ce qu’il n’inclut pas de valeur de groupe de ressources.
subscriptionResourceId , exemple
Le fichier Bicep suivant affecte un rôle intégré. Vous pouvez le déployer soit sur un groupe de ressources, soit sur un abonnement. Il utilise la fonction subscriptionResourceId pour récupérer l’ID de ressource pour les rôles intégrés.
@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], ...)
Retourne l’identificateur unique d’une ressource déployée au niveau du tenant.
Espace de noms : az.
La fonction tenantResourceId est disponible dans les fichiers Bicep, mais en général, vous n'en avez pas besoin. Utilisez plutôt le nom symbolique de la ressource et accédez à la propriété id.
L'identificateur est retourné au format suivant :
/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}
Les définitions de stratégie intégrées sont des ressources de niveau locataire. Pour déployer une attribution de stratégie qui fait référence à une définition de stratégie intégrée, utilisez la fonction 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@2025-03-01' = {
name: policyAssignmentName
properties: {
scope: subscriptionResourceId('Microsoft.Resources/resourceGroups', resourceGroup().name)
policyDefinitionId: tenantResourceId('Microsoft.Authorization/policyDefinitions', policyDefinitionID)
}
}
toLogicalZone
toLogicalZone(subscriptionId, location, physicalZone)
Retourne la zone de disponibilité logique (par exemple, 1, 2, ou 3) qui correspond à une zone de disponibilité physique pour un abonnement spécifié dans une région Azure donnée.
Espace de noms : az
Paramètres
| Paramètre | Obligatoire | Catégorie | Descriptif |
|---|---|---|---|
| ID d'abonnement | Oui | ficelle | L’identifiant de l’abonnement Azure, tel que 12345678-1234-1234-1234-1234567890ab. |
| lieu | Oui | ficelle | La région Azure qui prend en charge les zones de disponibilité, telles que westus2. |
| physicalZone | Oui | ficelle | Identificateur de zone de disponibilité physique (par exemple, un identificateur spécifique au centre de données comme westus2-az1). |
Valeur retournée
Chaîne représentant la zone de disponibilité logique (par exemple, 1, 2ou 3) qui correspond à la zone physique spécifiée dans la région et l’abonnement donnés. Si la zone physique est invalide ou non prise en charge, la fonction retourne une chaîne vide ('').
Notes
- La
toLogicalZonefonction récupère le mappage de zone logique en fonction de la configuration de zone de l’abonnement dans la région spécifiée. - Les zones logiques sont des identificateurs standardisés (par exemple,
1,2,3) utilisés dans les configurations de ressources pour garantir des affectations de zones cohérentes entre les services Azure. - Les identifiants de zone physiques sont spécifiques à chaque région et peuvent varier selon les abonnements. Utilisez la
toPhysicalZonefonction pour inverser ce mappage. - La fonction exige que la région prenne en charge les zones de disponibilité. Pour obtenir la liste des régions prises en charge, consultez Azure services qui prennent en charge les zones de disponibilité.
- Si la zone physique n’existe pas ou n’est pas mappée pour l’abonnement, la fonction retourne une chaîne vide.
- Cette fonction est utile pour aligner les déploiements de zones physiques avec des configurations de zone logique dans des modèles, en particulier pour les scénarios inter-abonnements ou multirégions.
Exemples
L’exemple suivant récupère la zone logique d’une zone physique dans usa Ouest 2 pour un abonnement spécifique :
param subscriptionId string = '12345678-1234-1234-1234-1234567890ab'
param physicalZone string = 'westus2-az1'
output logicalZone string = toLogicalZone(subscriptionId, 'westus2', physicalZone)
Sortie attendue :
| Nom | Catégorie | Valeur |
|---|---|---|
| logicalZone | Chaîne | 1 |
L’exemple suivant utilise toLogicalZone pour configurer une machine virtuelle avec la zone logique appropriée :
param subscriptionId string = '12345678-1234-1234-1234-1234567890ab'
param physicalZone string = 'westus2-az1'
param location string = 'westus2'
var logicalZone = toLogicalZone(subscriptionId, location, physicalZone)
resource vm 'Microsoft.Compute/virtualMachines@2025-04-01' = {
name: 'myVM'
location: location
zones: logicalZone != '' ? [logicalZone] : []
properties: {
// VM properties
}
}
output logicalZone string = logicalZone
Sortie attendue :
| Nom | Catégorie | Valeur |
|---|---|---|
| logicalZone | Chaîne | 1 |
toLogicalZones
toLogicalZones(subscriptionId, location, physicalZones)
Retourne les zones de disponibilité logiques (par exemple, 1, 2 ou 3) correspondant aux zones de disponibilité physiques d’un abonnement spécifié dans une région Azure donnée. Pour convertir une seule zone physique, utilisez la toLogicalZone fonction.
Espace de noms : az
Paramètres
| Paramètre | Obligatoire | Catégorie | Descriptif |
|---|---|---|---|
| ID d'abonnement | Oui | ficelle | L’identifiant de l’abonnement Azure, tel que 12345678-1234-1234-1234-1234567890ab. |
| lieu | Oui | ficelle | La région Azure qui prend en charge les zones de disponibilité, telles que westus2. |
| physicalZones | Oui | tableau | Tableau de noms de zones physiques à convertir en zones logiques (par exemple, un identificateur spécifique au centre de données tel que westus2-az1, westus2-az2...). |
Valeur retournée
Tableau de noms de zones logiques correspondant aux zones physiques fournies (par exemple, 1, ou 23). Si une zone physique est invalide ou non prise en charge, la fonction retourne une chaîne vide ('').
Notes
La fonction toLogicalZones mappe les noms de zones physiques à leurs équivalents de zone logique pour un abonnement et une région Azure spécifiés. Cette correspondance est utile pour configurer ou interroger des ressources en fonction des zones logiques au sein d’une région Azure. La fonction nécessite un ID d’abonnement valide, un emplacement de Azure pris en charge et un tableau de noms de zones physiques. Si une zone physique est invalide ou non disponible à l’emplacement spécifié, la fonction peut retourner une chaîne vide pour cette zone ou générer une erreur, selon le contexte.
Exemples
L’exemple suivant récupère les zones logiques d’une liste de zones physiques dans usa Ouest 2 pour un abonnement spécifique :
param subscriptionId string = '12345678-1234-1234-1234-1234567890ab'
param physicalZones array = ['westus2-az1', 'westus2-az2', 'westus2-az3']
output logicalZones array = toLogicalZones(subscriptionId, 'westus2', physicalZones)
Sortie attendue :
| Nom | Catégorie | Valeur |
|---|---|---|
| logicalZone | tableau | ["1","2","3"] |
toPhysicalZone
toPhysicalZone(subscriptionId, location, logicalZone)
Retourne l’identifiant de zone de disponibilité physique, tel qu’un identifiant spécifique au centre de données comme westus2-az1, qui correspond à une zone de disponibilité logique pour un abonnement spécifié dans une région Azure donnée.
Espace de noms : az
Paramètres
| Paramètre | Obligatoire | Catégorie | Descriptif |
|---|---|---|---|
| ID d'abonnement | Oui | ficelle | L’identifiant de l’abonnement Azure, tel que 12345678-1234-1234-1234-1234567890ab. |
| lieu | Oui | ficelle | La région Azure qui prend en charge les zones de disponibilité, telles que westus2. |
| logicalZone | Oui | ficelle | La zone de disponibilité logique, telle que 1, 2, ou 3. |
Valeur retournée
Une chaîne représentant l’identifiant de zone de disponibilité physique, tel que westus2-az1, qui correspond à la zone logique spécifiée dans la région et l’abonnement donnés. Si la zone logique est invalide ou non prise en charge, la fonction retourne une chaîne vide ('').
Notes
- La
toPhysicalZonefonction récupère le mappage de zone physique en fonction de la configuration de zone de l’abonnement dans la région spécifiée. - Les zones physiques sont des identifiants spécifiques aux centres de données qui peuvent varier entre les abonnements, tandis que les zones logiques, telles que
1,2,3, sont standardisées pour la configuration des ressources. - Utilisez la
toLogicalZonefonction pour inverser cette correspondance et convertir une zone physique en son équivalent logique. - La fonction exige que la région prenne en charge les zones de disponibilité. Pour obtenir la liste des régions prises en charge, consultez Azure services qui prennent en charge les zones de disponibilité.
- Si la zone logique n’existe pas ou n’est pas mappée pour l’abonnement, la fonction retourne une chaîne vide.
- Cette fonction est utile pour les scénarios nécessitant des identifiants de zone physiques, tels que la journalisation, l’audit ou l’alignement des zones croisées dans les déploiements multirégions.
Exemples
L’exemple suivant récupère la zone physique d’une zone logique dans USA Ouest 2 pour un abonnement spécifique :
param subscriptionId string = '12345678-1234-1234-1234-1234567890ab'
param logicalZone string = '1'
output physicalZone string = toPhysicalZone(subscriptionId, 'westus2', logicalZone)
Sortie attendue (en supposant que la zone 1 logique est mappée à westus2-az1) :
| Nom | Catégorie | Valeur |
|---|---|---|
| physicalZone | Chaîne | westus2-az1 |
L’exemple suivant utilise toPhysicalZone pour journaliser la zone physique d’un déploiement de machine virtuelle :
param subscriptionId string = '12345678-1234-1234-1234-1234567890ab'
param logicalZone string = '1'
param location string = 'westus2'
var physicalZone = toPhysicalZone(subscriptionId, location, logicalZone)
resource vm 'Microsoft.Compute/virtualMachines@2025-04-01' = {
name: 'myVM'
location: location
zones: [logicalZone]
properties: {
// VM properties
}
}
output physicalZone string = physicalZone
Sortie attendue :
| Nom | Catégorie | Valeur |
|---|---|---|
| physicalZone | Chaîne | westus2-az1 |
toPhysicalZones
toPhysicalZones(subscriptionId, location, logicalZones)
Retourne les identificateurs de zone de disponibilité physique (par exemple, un identificateur spécifique au centre de données tel que westus2-az1) correspondant aux zones de disponibilité logiques d’un abonnement spécifié dans une région Azure donnée. Pour convertir une zone logique unique, utilisez la toPhysicalZone fonction.
Espace de noms : az
Paramètres
| Paramètre | Obligatoire | Catégorie | Descriptif |
|---|---|---|---|
| ID d'abonnement | Oui | ficelle | L’identifiant de l’abonnement Azure, tel que 12345678-1234-1234-1234-1234567890ab. |
| lieu | Oui | ficelle | La région Azure qui prend en charge les zones de disponibilité, telles que westus2. |
| logicalZone | Oui | chaîne de caractères[] | Zones de disponibilité logiques (par exemple, 1, ou 23) à convertir en zones physiques. |
Valeur retournée
Tableau de noms de zones physiques (par exemple, westus2-az1, westus2-az2 ) correspondant aux zones logiques fournies. Si une zone logique est invalide ou non prise en charge, la fonction retourne une chaîne vide ('').
Notes
La fonction toPhysicalZones mappe les noms de zones logiques à leurs équivalents de zone physique pour un abonnement et une région Azure spécifiés. Cette cartographie est utile pour déployer ou configurer des ressources dans des zones physiques spécifiques au sein d’une région Azure. La fonction nécessite un ID d’abonnement valide, un emplacement de Azure pris en charge et un tableau de noms de zones logiques. Si une zone logique est invalide ou indisponible à l’emplacement spécifié, la fonction peut retourner une chaîne vide pour cette zone ou générer une erreur, selon le contexte.
Exemples
L’exemple suivant récupère les zones physiques d’une liste de zones logiques dans usa Ouest 2 pour un abonnement spécifique :
param subscriptionId string = '12345678-1234-1234-1234-1234567890ab'
param logicalZones array = ['1', '2', '3']
output physicalZones array = toPhysicalZones(subscriptionId, 'westus2', logicalZones)
Sortie attendue (en supposant que la zone 1 logique est mappée à westus2-az1, les mappages de zones 1 logiques vers westus2-az1et les mappages de zone 3 logiques à westus2-az3) :
| Nom | Catégorie | Valeur |
|---|---|---|
| physicalZone | tableau | ["westus2-az1 »,"westus2-az2 »,"westus2-az3"] |
Étapes suivantes
- Pour obtenir les valeurs du déploiement actuel, consultez Fonctions de valeur de déploiement.
- Pour itérer un nombre spécifié de fois lors de la création d’un type de ressource, consultez BouclesIteratives dans Bicep.