Funções de recurso para Bicep
Este artigo descreve as funções do Bíceps para obter valores de recursos.
Para obter valores da implantação atual, consulte Funções de valor de implantação.
extensionResourceId
extensionResourceId(resourceId, resourceType, resourceName1, [resourceName2], ...)
Retorna a ID do recurso para um recurso de extensão. Um recurso de extensão é um tipo de recurso que é aplicado a outro recurso para adicionar aos seus recursos.
Espaço de nomes: az.
A extensionResourceId
função está disponível em arquivos Bicep, mas normalmente você não precisa dela. Em vez disso, use o nome simbólico para o recurso e acesse a id
propriedade.
O formato básico do ID do recurso retornado por esta função é:
{scope}/providers/{extensionResourceProviderNamespace}/{extensionResourceType}/{extensionResourceName}
O segmento de escopo varia de acordo com o recurso que está sendo estendido.
Quando o recurso de extensão é aplicado a um recurso, a ID do recurso é retornada no seguinte formato:
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{baseResourceProviderNamespace}/{baseResourceType}/{baseResourceName}/providers/{extensionResourceProviderNamespace}/{extensionResourceType}/{extensionResourceName}
Quando o recurso de extensão é aplicado a um grupo de recursos, o formato é:
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{extensionResourceProviderNamespace}/{extensionResourceType}/{extensionResourceName}
Quando o recurso de extensão é aplicado a uma assinatura, o formato é:
/subscriptions/{subscriptionId}/providers/{extensionResourceProviderNamespace}/{extensionResourceType}/{extensionResourceName}
Quando o recurso de extensão é aplicado a um grupo de gerenciamento, o formato é:
/providers/Microsoft.Management/managementGroups/{managementGroupName}/providers/{extensionResourceProviderNamespace}/{extensionResourceType}/{extensionResourceName}
Uma definição de política personalizada implantada em um grupo de gerenciamento é implementada como um recurso de extensão. Para criar e atribuir uma política, implante o seguinte arquivo Bicep em um grupo de gerenciamento.
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
}
}
As definições de política internas são recursos no nível do locatário. Para obter um exemplo de implantação de uma definição de política interna, consulte tenantResourceId.
getSecret
keyVaultName.getSecret(secretName)
Retorna um segredo de um Cofre de Chaves do Azure. Use esta função para passar um segredo para um parâmetro de cadeia de caracteres segura de um módulo Bicep.
Nota
az.getSecret(subscriptionId, resourceGroupName, keyVaultName, secretName, secretVersion)
função pode ser usada em .bicepparam
arquivos para recuperar segredos do cofre de chaves. Para obter mais informações, consulte getSecret.
Você só pode usar a getSecret
função de dentro da params
seção de um módulo. Você só pode usá-lo com um Microsoft.KeyVault/vaults
recurso.
module sql './sql.bicep' = {
name: 'deploySQL'
params: {
adminPassword: keyVault.getSecret('vmAdminPassword')
}
}
Você recebe um erro se tentar usar essa função em qualquer outra parte do arquivo Bicep. Você também receberá um erro se usar essa função com interpolação de cadeia de caracteres, mesmo quando usado na seção params.
A função só pode ser usada com um parâmetro de módulo que tenha o @secure()
decorador.
O cofre de chaves deve ter enabledForTemplateDeployment
definido como true
. O usuário que implanta o arquivo Bicep deve ter acesso ao segredo. Para obter mais informações, consulte Usar o Cofre da Chave do Azure para passar o valor do parâmetro seguro durante a implantação do Bicep.
Um qualificador de namespace não é necessário porque a função é usada com um tipo de recurso.
Parâmetros
Parâmetro | Necessário | Type | Description |
---|---|---|---|
secretName | Sim | string | O nome do segredo armazenado em um cofre de chaves. |
Valor devolvido
O valor secreto para o nome secreto.
Exemplo
O seguinte arquivo Bicep é usado como um módulo. Tem um adminPassword
parâmetro definido com o @secure()
decorador.
param sqlServerName string
param adminLogin string
@secure()
param adminPassword string
resource sqlServer 'Microsoft.Sql/servers@2023-08-01-preview' = {
...
}
O seguinte arquivo Bicep consome o arquivo Bicep anterior como um módulo. O arquivo Bicep faz referência a um cofre de chaves existente e chama a getSecret
função para recuperar o segredo do cofre de chaves e, em seguida, passa o valor como um parâmetro para o módulo.
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')
}
}
lista*
resourceName.list([apiVersion], [functionValues])
Você pode chamar uma função de lista para qualquer tipo de recurso com uma operação que começa com list
. Alguns usos comuns são list
, listKeys
, listKeyValue
, e listSecrets
.
A sintaxe para esta função varia de acordo com o nome da operação de lista. Os valores retornados também variam de acordo com a operação. Atualmente, o Bicep não suporta conclusão e validação de list*
funções.
Com a CLI do Bicep versão 0.4.X ou superior, você chama a função list usando o operador accessor. Por exemplo, storageAccount.listKeys()
.
Um qualificador de namespace não é necessário porque a função é usada com um tipo de recurso.
Parâmetros
Parâmetro | Necessário | Type | Description |
---|---|---|---|
apiVersion | Não | string | Se você não fornecer esse parâmetro, a versão da API para o recurso será usada. Forneça apenas uma versão personalizada da API quando precisar que a função seja executada com uma versão específica. Use o formato, aaaa-mm-dd. |
functionValues | Não | objeto | Um objeto que tem valores para a função. Forneça esse objeto somente para funções que suportam o recebimento de um objeto com valores de parâmetro, como listAccountSas em uma conta de armazenamento. Um exemplo de passagem de valores de função é mostrado neste artigo. |
Utilizações válidas
As list
funções podem ser usadas nas propriedades de uma definição de recurso. Não use uma list
função que exponha informações confidenciais na seção de saídas de um arquivo Bicep. Os valores de saída são armazenados no histórico de implantação e podem ser recuperados por um usuário mal-intencionado.
Quando usado com um loop iterativo, você pode usar as list
funções para input
porque a expressão é atribuída à propriedade resource. Você não pode usá-los com count
porque a contagem deve ser determinada antes que a list
função seja resolvida.
Se você usar uma list
função em um recurso implantado condicionalmente, a função será avaliada mesmo que o recurso não seja implantado. Você receberá um erro se a list
função se referir a um recurso que não existe. Use a expressão condicional ?: para garantir que a função só seja avaliada quando o recurso estiver sendo implantado.
Valor devolvido
O objeto retornado varia de acordo com a função de lista usada. Por exemplo, o listKeys
para uma conta de armazenamento retorna o seguinte formato:
{
"keys": [
{
"keyName": "key1",
"permissions": "Full",
"value": "{value}"
},
{
"keyName": "key2",
"permissions": "Full",
"value": "{value}"
}
]
}
Outras list
funções têm diferentes formatos de retorno. Para ver o formato de uma função, inclua-a na seção de saídas, conforme mostrado no arquivo Bicep de exemplo.
Exemplo de lista
O exemplo a seguir implanta uma conta de armazenamento e, em seguida, chama listKeys
essa conta de armazenamento. A chave é usada ao definir um valor para scripts de implantação.
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
}
...
}
}
O próximo exemplo mostra uma list
função que usa um parâmetro. Neste caso, a função é listAccountSas
. Passe um objeto pelo tempo de expiração. O prazo de validade deve ser futuro.
param accountSasProperties object {
default: {
signedServices: 'b'
signedPermission: 'r'
signedExpiry: '2020-08-20T11:00:00Z'
signedResourceTypes: 's'
}
}
...
sasToken: storageAccount.listAccountSas('2021-04-01', accountSasProperties).accountSasToken
Implementações
Os usos possíveis de são mostrados list*
na tabela a seguir.
Tipo de recurso | Nome da função |
---|---|
Microsoft.Addons/supportProviders | ListSupportPlanInfo |
Microsoft.AnalysisServices/servidores | listGatewayStatus |
Microsoft.ApiManagement/service/authorizationServers | listaSegredos |
Microsoft.ApiManagement/serviço/gateways | listKeys |
Microsoft.ApiManagement/service/identityProviders | listaSegredos |
Microsoft.ApiManagement/service/namedValues | listValue |
Microsoft.ApiManagement/service/openidConnectProviders | listaSegredos |
Microsoft.ApiManagement/serviço/assinaturas | listaSegredos |
Microsoft.AppConfiguration/configurationStores | ListKeys |
Microsoft.AppPlatform/primavera | listTestKeys |
Microsoft.Automation/automationContas | listKeys |
Microsoft.Batch/batchAccounts | listkeys |
Microsoft.BatchAI/workspaces/experiments/jobs | ListOutputFiles |
Microsoft.BotService/botServices/canais | listChannelWithKeys |
Microsoft.Cache/redis | listKeys |
Microsoft.CognitiveServices/contas | listKeys |
Microsoft.ContainerRegistry/registries | listCredentials |
Microsoft.ContainerRegistry/registries | listUsos |
Microsoft.ContainerRegistry/registries/agentpools | listQueueStatus |
Microsoft.ContainerRegistry/registries/buildTasks | listSourceRepositoryProperties |
Microsoft.ContainerRegistry/registries/buildTasks/steps | listBuildArguments |
Microsoft.ContainerRegistry/registries/taskruns | listDetalhes |
Microsoft.ContainerRegistry/registros/webhooks | listEventos |
Microsoft.ContainerRegistry/registries/runs | listLogSasUrl |
Microsoft.ContainerRegistry/registros/tarefas | listDetalhes |
Microsoft.ContainerService/managedClusters | listClusterAdminCredential |
Microsoft.ContainerService/managedClusters | listClusterMonitoringUserCredential |
Microsoft.ContainerService/managedClusters | listClusterUserCredential |
Microsoft.ContainerService/managedClusters/accessProfiles | listCredential |
Microsoft.DataBox/empregos | listCredentials |
Microsoft.DataFactory/datafactories/gateways | listauthkeys |
Microsoft.DataFactory/factories/integrationruntimes | listauthkeys |
Microsoft.DataLakeAnalytics/accounts/storageAccounts/Containers | listSasTokens |
Microsoft.DataShare/contas/compartilhamentos | listSincronizações |
Microsoft.DataShare/accounts/shareSubscriptions | listSourceShareSynchronizationSettings |
Microsoft.DataShare/accounts/shareSubscriptions | listSynchronizationDetails |
Microsoft.DataShare/accounts/shareSubscriptions | listSincronizações |
Microsoft.Devices/iotHubs | listkeys |
Microsoft.Devices/iotHubs/iotHubKeys | listkeys |
Microsoft.Devices/provisioningServices/chaves | listkeys |
Microsoft.Devices/provisioningServices | listkeys |
Microsoft.DevTestLab/labs | ListVhds |
Microsoft.DevTestLab/labs/agendas | 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 | listAcordos |
Microsoft.EventGrid/domínios | 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 Dados | ListPrincipals |
Microsoft.LabServices/labs/usuários | list |
Microsoft.LabServices/labs/virtualMachines | list |
Microsoft.Logic/integrationAccounts/agreements | listContentCallbackUrl |
Microsoft.Logic/integrationContas/assemblies | listContentCallbackUrl |
Microsoft.Logic/integrationAccounts | listCallbackUrl |
Microsoft.Logic/integrationAccounts | listKeyVaultKeys |
Microsoft.Logic/integrationContas/mapas | listContentCallbackUrl |
Microsoft.Logic/integrationContas/parceiros | listContentCallbackUrl |
Microsoft.Logic/integrationAccounts/schemas | listContentCallbackUrl |
Microsoft.Logic/fluxos de trabalho | listCallbackUrl |
Microsoft.Logic/fluxos de trabalho | listSwagger |
Microsoft.Logic/workflows/runs/actions | listExpressionTraces |
Microsoft.Logic/workflows/runs/actions/repetitions | listExpressionTraces |
Microsoft.Logic/fluxos de trabalho/triggers | listCallbackUrl |
Microsoft.Logic/fluxos de trabalho/versões/triggers | listCallbackUrl |
Microsoft.MachineLearning/webServices | listkeys |
Microsoft.MachineLearning/Espaços de trabalho | ListWorkspaceKeys |
Microsoft.MachineLearningServices/espaços de trabalho/computação | listKeys |
Microsoft.MachineLearningServices/espaços de trabalho/computação | listNodes |
Microsoft.MachineLearningServices/espaços de trabalho | listKeys |
Microsoft.Maps/contas | listKeys |
Microsoft.Media/mediaservices/assets | listContainerSas |
Microsoft.Media/mediaservices/assets | listStreamingLocalizadores |
Microsoft.Media/mediaservices/streamingLocalizadores | listContentKeys |
Microsoft.Media/mediaservices/streamingLocalizadores | listPaths |
Microsoft.Network/applicationSecurityGroups | listIpConfigurations |
Microsoft.NotificationHubs/Namespaces/authorizationRules | listkeys |
Microsoft.NotificationHubs/Namespaces/NotificationHubs/authorizationRules | listkeys |
Microsoft.OperationalInsights/espaços de trabalho | list |
Microsoft.OperationalInsights/espaços de trabalho | listKeys |
Microsoft.PolicyInsights/remediações | 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/conexões | ListConsentLinks |
Microsoft.Web/customApis | listWsdlInterfaces |
microsoft.web/localizações | listwsdlinterfaces |
Microsoft.Web/ApiManagementAccounts/APIS/Conexões | ListConnectionKeys |
Microsoft.Web/ApiManagementAccounts/APIS/Conexões | listsecrets |
microsoft.web/sites/backups | list |
Microsoft.Web/sites/config | list |
microsoft.web/sites/funções | listkeys |
microsoft.web/sites/funções | listsecrets |
microsoft.web/sites/hybridconnectionnamespaces/relays | listkeys |
microsoft.web/sites | ListSyncFunctionTriggerStatus |
microsoft.web/sites/slots/funções | listsecrets |
microsoft.web/sites/slots/backups | list |
Microsoft.Web/sites/slots/config | list |
microsoft.web/sites/slots/funções | listsecrets |
Para determinar quais tipos de recursos têm uma operação de lista, você tem as seguintes opções:
Exiba as operações da API REST para um provedor de recursos e procure operações de lista. Por exemplo, as contas de armazenamento têm a operação listKeys.
Use o cmdlet Get-AzProviderOperation PowerShell. O exemplo a seguir obtém todas as operações de lista para contas de armazenamento:
Get-AzProviderOperation -OperationSearchString "Microsoft.Storage/*" | where {$_.Operation -like "*list*"} | FT Operation
Use o seguinte comando da CLI do Azure para filtrar somente as operações de lista:
az provider operation show --namespace Microsoft.Storage --query "resourceTypes[?name=='storageAccounts'].operations[].name | [?contains(@, 'list')]"
managementGroupResourceId
managementGroupResourceId(resourceType, resourceName1, [resourceName2], ...)
Retorna o identificador exclusivo de um recurso implantado no nível do grupo de gerenciamento.
Espaço de nomes: az.
A managementGroupResourceId
função está disponível em arquivos Bicep, mas normalmente você não precisa dela. Em vez disso, use o nome simbólico para o recurso e acesse a id
propriedade.
O identificador é retornado no seguinte formato:
/providers/Microsoft.Management/managementGroups/{managementGroupName}/providers/{resourceType}/{resourceName}
Observações
Use essa função para obter a ID do recurso para recursos que são implantados no grupo de gerenciamento em vez de um grupo de recursos. A ID retornada difere do valor retornado pela função resourceId por não incluir uma ID de assinatura e um valor de grupo de recursos.
Exemplo de managementGroupResourceID
O modelo a seguir cria e atribui uma definição de política. Ele usa a managementGroupResourceId
função para obter o ID do recurso para a definição da política.
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 [en]
pickZones(providerNamespace, resourceType, location, [numberOfZones], [offset])
Determina se um tipo de recurso oferece suporte a zonas para uma região. Esta função suporta apenas recursos zonais. Os serviços redundantes de zona retornam uma matriz vazia. Para obter mais informações, consulte Serviços do Azure que dão suporte a zonas de disponibilidade.
Espaço de nomes: az.
Parâmetros
Parâmetro | Necessário | Type | Description |
---|---|---|---|
providerNamespace | Sim | string | O namespace do provedor de recursos para o tipo de recurso para verificar o suporte à zona. |
resourceType | Sim | string | O tipo de recurso para verificar o suporte de zona. |
localização | Sim | string | A região para verificar o suporte da zona. |
númerodeZonas | Não | integer | O número de zonas lógicas a serem retornadas. A predefinição é 1. O número deve ser um número inteiro positivo de 1 a 3. Use 1 para recursos de zona única. Para recursos com várias zonas, o valor deve ser menor ou igual ao número de zonas suportadas. |
offset | Não | integer | O deslocamento da zona lógica inicial. A função retorna um erro se o deslocamento mais numberOfZones exceder o número de zonas suportadas. |
Valor devolvido
Uma matriz com as zonas suportadas. Ao usar os valores padrão para deslocamento e numberOfZones
, um tipo de recurso e região que ofereça suporte a zonas retorna a seguinte matriz:
[
"1"
]
Quando o numberOfZones
parâmetro é definido como 3, ele retorna:
[
"1",
"2",
"3"
]
Quando o tipo de recurso ou região não oferece suporte a zonas, uma matriz vazia é retornada.
[
]
Observações
Há diferentes categorias para as Zonas de Disponibilidade do Azure - zonal e com redundância de zona. A pickZones
função pode ser usada para retornar uma zona de disponibilidade para um recurso zonal. Para serviços redundantes de zona (ZRS), a função retorna uma matriz vazia. Os recursos zonais normalmente têm uma zones
propriedade no nível superior da definição de recurso. Para determinar a categoria de suporte para zonas de disponibilidade, consulte Serviços do Azure que dão suporte a zonas de disponibilidade.
Para determinar se uma determinada região ou local do Azure dá suporte a zonas de disponibilidade, chame a pickZones
função com um tipo de recurso zonal, como Microsoft.Network/publicIPAddresses
. Se a resposta não estiver vazia, a região oferece suporte a zonas de disponibilidade.
exemplo de pickZones
O seguinte arquivo Bicep mostra três resultados para usar a pickZones
função.
output supported array = pickZones('Microsoft.Compute', 'virtualMachines', 'westus2')
output notSupportedRegion array = pickZones('Microsoft.Compute', 'virtualMachines', 'westus')
output notSupportedType array = pickZones('Microsoft.Cdn', 'profiles', 'westus2')
A saída dos exemplos anteriores retorna três matrizes.
Nome | Tipo | valor |
---|---|---|
suportado | matriz | [ "1" ] |
notSupportedRegion | matriz | [] |
notSupportedType | matriz | [] |
Você pode usar a resposta de pickZones
para determinar se deve fornecer null para zonas ou atribuir máquinas virtuais a zonas diferentes.
fornecedores
A função de provedores foi preterida no Bicep. Não recomendamos mais usá-lo. Se você usou essa função para obter uma versão da API para o provedor de recursos, recomendamos que forneça uma versão específica da API no arquivo Bicep. Usar uma versão de API retornada dinamicamente pode quebrar seu modelo se as propriedades mudarem entre versões.
A operação dos provedores ainda está disponível por meio da API REST. Ele pode ser usado fora de um arquivo Bicep para obter informações sobre um provedor de recursos.
Espaço de nomes: az.
referência
reference(resourceName or resourceIdentifier, [apiVersion], ['Full'])
Retorna um objeto que representa o estado de tempo de execução de um recurso. A saída e o reference
comportamento da função dependem muito de como cada provedor de recursos (RP) implementa suas respostas PUT e GET.
Espaço de nomes: az.
Os arquivos Bicep fornecem acesso à função de referência, embora normalmente seja desnecessário. Em vez disso, recomenda-se usar o nome simbólico do recurso. A função de referência só pode ser usada dentro do properties
objeto de um recurso e não pode ser empregada para propriedades de nível superior como name
ou location
. O mesmo se aplica geralmente às referências que utilizam o nome simbólico. No entanto, para propriedades como name
, é possível gerar um modelo sem utilizar a função de referência. Sabe-se que informações suficientes sobre o nome do recurso emitem diretamente o nome. É conhecido como propriedades de tempo de compilação. A validação do bíceps pode identificar qualquer uso incorreto do nome simbólico.
O exemplo a seguir implanta uma conta de armazenamento. As duas primeiras saídas dão os mesmos resultados.
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
Para obter uma propriedade de um recurso existente que não está implantado no modelo, use a existing
palavra-chave:
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
Para fazer referência a um recurso aninhado dentro de um recurso pai, use o acessador aninhado (::
). Você só usa essa sintaxe quando está acessando o recurso aninhado de fora do recurso pai.
vNet1::subnet1.properties.addressPrefix
Se você tentar fazer referência a um recurso que não existe, receberá o NotFound
erro e sua implantação falhará.
resourceId
resourceId([subscriptionId], [resourceGroupName], resourceType, resourceName1, [resourceName2], ...)
Retorna o identificador exclusivo de um recurso.
Espaço de nomes: az.
A resourceId
função está disponível em arquivos Bicep, mas normalmente você não precisa dela. Em vez disso, use o nome simbólico para o recurso e acesse a id
propriedade.
Você usa essa função quando o nome do recurso é ambíguo ou não provisionado dentro do mesmo arquivo Bicep. O formato do identificador retornado varia com base no fato de a implantação ocorrer no escopo de um grupo de recursos, assinatura, grupo de gerenciamento ou locatário.
Por exemplo:
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
Para obter a ID do recurso para um recurso que não está implantado no arquivo Bicep, use a palavra-chave existente.
param storageAccountName string
resource storageAccount 'Microsoft.Storage/storageAccounts@2023-04-01' existing = {
name: storageAccountName
}
output storageID string = storageAccount.id
Para obter mais informações, consulte a função resourceId do modelo JSON.
subscriptionResourceId
subscriptionResourceId([subscriptionId], resourceType, resourceName1, [resourceName2], ...)
Retorna o identificador exclusivo de um recurso implantado no nível da assinatura.
Espaço de nomes: az.
A subscriptionResourceId
função está disponível em arquivos Bicep, mas normalmente você não precisa dela. Em vez disso, use o nome simbólico para o recurso e acesse a id
propriedade.
O identificador é retornado no seguinte formato:
/subscriptions/{subscriptionId}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}
Observações
Use essa função para obter a ID do recurso para recursos que são implantados na assinatura em vez de um grupo de recursos. A ID retornada difere do valor retornado pela função resourceId por não incluir um valor de grupo de recursos.
exemplo de subscriptionResourceID
O seguinte arquivo Bicep atribui uma função interna. Você pode implantá-lo em um grupo de recursos ou assinatura. Ele usa a subscriptionResourceId
função para obter o ID do recurso para funções internas.
@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], ...)
Retorna o identificador exclusivo de um recurso implantado no nível do locatário.
Espaço de nomes: az.
A tenantResourceId
função está disponível em arquivos Bicep, mas normalmente você não precisa dela. Em vez disso, use o nome simbólico para o recurso e acesse a id
propriedade.
O identificador é retornado no seguinte formato:
/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}
As definições de política internas são recursos no nível do locatário. Para implantar uma atribuição de política que faça referência a uma definição de política interna, use a tenantResourceId
função.
@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)
}
}
Próximos passos
- Para obter valores da implantação atual, consulte Funções de valor de implantação.
- Para iterar um número especificado de vezes ao criar um tipo de recurso, consulte Loops iterativos no Bicep.