Funkce prostředků pro Bicep

Tento článek popisuje funkce Bicep pro získání hodnot prostředků.

Pokud chcete získat hodnoty z aktuálního nasazení, podívejte se na funkce hodnot nasazení.

extensionResourceId

extensionResourceId(resourceId, resourceType, resourceName1, [resourceName2], ...)

Vrátí ID prostředku rozšíření. Prostředek rozšíření je typ prostředku, který se použije na jiný prostředek, aby se přidal do svých schopností.

Obor názvů: az.

Funkce extensionResourceId je dostupná v souborech Bicep, ale obvykle ji nepotřebujete. Místo toho použijte symbolický název prostředku a přistupovat k id vlastnosti.

Základní formát ID prostředku vrácené touto funkcí je:

{scope}/providers/{extensionResourceProviderNamespace}/{extensionResourceType}/{extensionResourceName}

Segment oboru se liší podle rozšířeného prostředku.

Pokud se prostředek rozšíření použije na prostředek, vrátí se ID prostředku v následujícím formátu:

/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{baseResourceProviderNamespace}/{baseResourceType}/{baseResourceName}/providers/{extensionResourceProviderNamespace}/{extensionResourceType}/{extensionResourceName}

Pokud je prostředek rozšíření použit pro skupinu prostředků, formát je:

/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{extensionResourceProviderNamespace}/{extensionResourceType}/{extensionResourceName}

Pokud se prostředek rozšíření použije u předplatného, bude formát následující:

/subscriptions/{subscriptionId}/providers/{extensionResourceProviderNamespace}/{extensionResourceType}/{extensionResourceName}

Pokud se prostředek rozšíření použije pro skupinu pro správu, formát je následující:

/providers/Microsoft.Management/managementGroups/{managementGroupName}/providers/{extensionResourceProviderNamespace}/{extensionResourceType}/{extensionResourceName}

Definice vlastních zásad nasazená do skupiny pro správu se implementuje jako prostředek rozšíření. Pokud chcete vytvořit a přiřadit zásadu, nasaďte do skupiny pro správu následující soubor Bicep.

targetScope = 'managementGroup'

@description('An array of the allowed locations, all other locations will be denied by the created policy.')
param allowedLocations array = [
  'australiaeast'
  'australiasoutheast'
  'australiacentral'
]

resource policyDefinition 'Microsoft.Authorization/policyDefinitions@2021-06-01' = {
  name: 'locationRestriction'
  properties: {
    policyType: 'Custom'
    mode: 'All'
    parameters: {}
    policyRule: {
      if: {
        not: {
          field: 'location'
          in: allowedLocations
        }
      }
      then: {
        effect: 'deny'
      }
    }
  }
}

resource policyAssignment 'Microsoft.Authorization/policyAssignments@2022-06-01' = {
  name: 'locationAssignment'
  properties: {
    policyDefinitionId: policyDefinition.id
  }
}

Předdefinované definice zásad jsou prostředky na úrovni tenanta. Příklad nasazení předdefinované definice zásady najdete v tématu tenantResourceId.

getSecret

keyVaultName.getSecret(secretName)

Vrátí tajný klíč ze služby Azure Key Vault. Tato funkce slouží k předání tajného kódu do zabezpečeného řetězcového parametru modulu Bicep.

Poznámka:

az.getSecret(subscriptionId, resourceGroupName, keyVaultName, secretName, secretVersion) funkci lze použít v .bicepparam souborech k načtení tajných kódů trezoru klíčů. Další informace najdete v tématu getSecret.

Funkci můžete použít getSecret jenom v params části modulu. Můžete ho použít jenom s prostředkem Microsoft.KeyVault/vaults .

module sql './sql.bicep' = {
  name: 'deploySQL'
  params: {
    adminPassword: keyVault.getSecret('vmAdminPassword')
  }
}

Pokud se pokusíte tuto funkci použít v jakékoli jiné části souboru Bicep, zobrazí se chyba. Pokud používáte tuto funkci s interpolací řetězců, i když se používá v části params, zobrazí se také chyba.

Funkci lze použít pouze s parametrem modulu, který má @secure() dekorátor.

Trezor klíčů musí být enabledForTemplateDeployment nastavený na truehodnotu . Uživatel, který nasazuje soubor Bicep, musí mít přístup k tajnému kódu. Další informace najdete v tématu Použití služby Azure Key Vault k předání hodnoty zabezpečeného parametru během nasazení Bicep.

Kvalifikátor oboru názvů není potřeba, protože funkce se používá s typem prostředku.

Parametry

Parametr Požaduje se Type Popis
secretName Ano string Název tajného kódu uloženého v trezoru klíčů.

Vrácená hodnota

Hodnota tajného kódu pro název tajného kódu.

Příklad

Následující soubor Bicep se používá jako modul. Má adminPassword definovaný parametr s dekorátorem @secure() .

param sqlServerName string
param adminLogin string

@secure()
param adminPassword string

resource sqlServer 'Microsoft.Sql/servers@2022-08-01-preview' = {
  ...
}

Následující soubor Bicep využívá předchozí soubor Bicep jako modul. Soubor Bicep odkazuje na existující trezor klíčů a zavolá getSecret funkci, která načte tajný klíč trezoru klíčů, a pak předá hodnotu jako parametr modulu.

param sqlServerName string
param adminLogin string

param subscriptionId string
param kvResourceGroup string
param kvName string

resource keyVault 'Microsoft.KeyVault/vaults@2023-02-01' existing = {
  name: kvName
  scope: resourceGroup(subscriptionId, kvResourceGroup )
}

module sql './sql.bicep' = {
  name: 'deploySQL'
  params: {
    sqlServerName: sqlServerName
    adminLogin: adminLogin
    adminPassword: keyVault.getSecret('vmAdminPassword')
  }
}

Seznamu*

resourceName.list([apiVersion], [functionValues])

Funkci seznamu můžete volat pro libovolný typ prostředku pomocí operace, která začíná listna . Mezi běžné použití patří list, listKeys, listKeyValuea listSecrets.

Syntaxe této funkce se liší podle názvu operace seznamu. Vrácené hodnoty se také liší podle operace. Bicep v současné době nepodporuje dokončování a ověřování list* funkcí.

Pomocí rozhraní příkazového řádku Bicep verze 0.4.X nebo vyšší zavoláte funkci list pomocí operátoru přístupového objektu. Například storageAccount.listKeys().

Kvalifikátor oboru názvů není potřeba, protože funkce se používá s typem prostředku.

Parametry

Parametr Požaduje se Type Popis
apiVersion No string Pokud tento parametr nezadáte, použije se verze rozhraní API pro prostředek. Pokud potřebujete, aby funkce běžela s konkrétní verzí, zadejte pouze vlastní verzi rozhraní API. Použijte formát rrrr-mm-dd.
functionValues No objekt Objekt, který má hodnoty pro funkci. Tento objekt zadejte pouze pro funkce, které podporují příjem objektu s hodnotami parametrů, jako listAccountSas je například účet úložiště. Příklad předávání hodnot funkcí je uvedený v tomto článku.

Platné použití

Funkce list lze použít ve vlastnostech definice prostředku. Nepoužívejte list funkci, která zveřejňuje citlivé informace ve výstupní části souboru Bicep. Výstupní hodnoty se ukládají v historii nasazení a můžou je načíst uživatel se zlými úmysly.

Při použití s iterativní smyčkou můžete použít list funkce, protože input výraz je přiřazen k vlastnosti prostředku. Nemůžete je použít, count protože počet musí být určen před vyřešením list funkce.

Pokud použijete list funkci v prostředku, který je podmíněně nasazený, vyhodnotí se tato funkce i v případě, že prostředek není nasazený. Pokud funkce odkazuje na prostředek, který neexistuje, zobrazí se chyba list . Pomocí podmíněného výrazu ?: – operátor se ujistěte, že se funkce vyhodnocuje pouze při nasazování prostředku.

Vrácená hodnota

Vrácený objekt se liší podle funkce seznamu, kterou používáte. Například listKeys účet úložiště vrátí následující formát:

{
  "keys": [
    {
      "keyName": "key1",
      "permissions": "Full",
      "value": "{value}"
    },
    {
      "keyName": "key2",
      "permissions": "Full",
      "value": "{value}"
    }
  ]
}

Jiné list funkce mají různé návratové formáty. Pokud chcete zobrazit formát funkce, zahrňte ho do části výstupy, jak je znázorněno v ukázkovém souboru Bicep.

Příklad seznamu

Následující příklad nasadí účet úložiště a pak zavolá listKeys tento účet úložiště. Klíč se používá při nastavování hodnoty pro skripty nasazení.

resource storageAccount 'Microsoft.Storage/storageAccounts@2022-09-01' = {
  name: 'dscript${uniqueString(resourceGroup().id)}'
  location: location
  kind: 'StorageV2'
  sku: {
    name: 'Standard_LRS'
  }
}

resource dScript 'Microsoft.Resources/deploymentScripts@2020-10-01' = {
  name: 'scriptWithStorage'
  location: location
  ...
  properties: {
    azCliVersion: '2.0.80'
    storageAccountSettings: {
      storageAccountName: storageAccount.name
      storageAccountKey: storageAccount.listKeys().keys[0].value
    }
    ...
  }
}

Následující příklad ukazuje list funkci, která přebírá parametr. V tomto případě je listAccountSasfunkce . Předejte objekt pro dobu vypršení platnosti. Doba vypršení platnosti musí být v budoucnu.

param accountSasProperties object {
  default: {
    signedServices: 'b'
    signedPermission: 'r'
    signedExpiry: '2020-08-20T11:00:00Z'
    signedResourceTypes: 's'
  }
}
...
sasToken: storageAccount.listAccountSas('2021-04-01', accountSasProperties).accountSasToken

Implementace

Možné použití list* jsou uvedeny v následující tabulce.

Typ prostředku Název funkce
Microsoft.Addons/supportProviders listsupportplaninfo
Microsoft.AnalysisServices/servers listGatewayStatus
Microsoft.ApiManagement/service/authorizationServers listSecrets
Microsoft.ApiManagement/service/gateways listKeys
Microsoft.ApiManagement/service/identityProviders listSecrets
Microsoft.ApiManagement/service/namedValues listValue
Microsoft.ApiManagement/service/openid Připojení 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/registry listCredentials
Microsoft.ContainerRegistry/registry listUsages
Microsoft.ContainerRegistry/registry/agentpools listQueueStatus
Microsoft.ContainerRegistry/registry/buildTasks listSourceRepositoryProperties
Microsoft.ContainerRegistry/registry/buildTasks/steps listBuildArguments
Microsoft.ContainerRegistry/registryies/taskruns listDetails
Microsoft.ContainerRegistry/registry/webhooks listEvents
Microsoft.ContainerRegistry/registry/runs listLogSasUrl
Microsoft.ContainerRegistry/registry/tasks listDetails
Microsoft.ContainerService/managedClusters listCluster Správa 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 Nastavení
Microsoft.DataShare/accounts/shareSubscriptions listSynchronizationDetails
Microsoft.DataShare/accounts/shareSubscriptions listSynchronizations
Microsoft.Devices/iotHubs listkeys
Microsoft.Devices/iotHubs/iotHubKeys listkeys
Microsoft.Devices/provisioningServices/keys listkeys
Microsoft.Devices/provisioningServices listkeys
Microsoft.DevTestLab/labs Virtuální pevné disky (ListVhds)
Microsoft.DevTestLab/labs/schedules ListApplicable
Microsoft.DevTestLab/labs/users/serviceFabrics ListApplicableSchedules
Microsoft.DevTestLab/labs/virtualMachines ListApplicableSchedules
Microsoft.DocumentDB/databaseAccounts listKeys
Microsoft.DocumentDB/databaseAccounts/notebookWorkspaces list Připojení ionInfo
Microsoft.DomainRegistration listDomainRecommendations
Microsoft.DomainRegistration/topLevelDomains listAgreements
Microsoft.EventGrid/domains listKeys
Microsoft.EventGrid/topics listKeys
Microsoft.EventHub/namespaces/authorizationRules listkeys
Microsoft.EventHub/namespaces/disasterRecoveryConfigs/authorizationRules listkeys
Microsoft.EventHub/namespaces/eventhubs/authorizationRules listkeys
Microsoft.ImportExport/jobs listBitLockerKeys
Microsoft.Kusto/Clusters/Databases SeznamPrincipals
Microsoft.LabServices/labs/users list
Microsoft.LabServices/labs/virtualMachines list
Microsoft.Logic/integrationAccounts/agreements listContentCallbackUrl
Microsoft.Logic/integrationAccounts/assemblyes listContentCallbackUrl
Microsoft.Logic/integrationAccounts listCallbackUrl
Microsoft.Logic/integrationAccounts listKeyVaultKeys
Microsoft.Logic/integrationAccounts/maps listContentCallbackUrl
Microsoft.Logic/integrationAccounts/partners listContentCallbackUrl
Microsoft.Logic/integrationAccounts/schemas listContentCallbackUrl
Microsoft.Logic/workflows listCallbackUrl
Microsoft.Logic/workflows listSwagger
Microsoft.Logic/workflows/runs/actions listExpressionTraces
Microsoft.Logic/workflows/runs/actions/opakování listExpressionTraces
Microsoft.Logic/workflows/triggers listCallbackUrl
Microsoft.Logic/workflows/versions/triggers listCallbackUrl
Microsoft.Machine Učení/webServices listkeys
Microsoft.Machine Učení/Workspaces listworkspacekeys
Microsoft.Machine Učení Services/workspaces/computes listKeys
Microsoft.Machine Učení Services/workspaces/computes listNodes
Microsoft.Machine Učení Services/workspaces listKeys
Microsoft. Mapy/účty 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.Operational Přehledy/workspaces list
Microsoft.Operational Přehledy/workspaces listKeys
Microsoft.Policy Přehledy/nápravy listDeployments
Microsoft.RedHatOpenShift/openShiftClusters listCredentials
Microsoft.Relay/namespaces/disasterRecoveryConfigs/authorizationRules listkeys
Microsoft.Search/searchServices list Správa 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/managers listActivationKey
Microsoft.StorSimple/managers listPublicEncryptionKey
Microsoft.Synapse/workspaces/integrationRuntimes listAuthKeys
Microsoft.Web/connectionGateways ListStatus
microsoft.web/connections seznamconsentlinks
Microsoft.Web/customApis listWsdlInterfaces
microsoft.web/locations listwsdlinterfaces
microsoft.web/apimanagementaccounts/apis/connections listconnectionkeys
microsoft.web/apimanagementaccounts/apis/connections listsecrets
microsoft.web/sites/backups list
Microsoft.Web/sites/config list
microsoft.web/sites/functions listkeys
microsoft.web/sites/functions listsecrets
microsoft.web/sites/hybridconnectionnamespaces/relays listkeys
microsoft.web/sites listsyncfunctiontriggerstatus
microsoft.web/sites/slots/functions listsecrets
microsoft.web/sites/slots/backups list
Microsoft.Web/sites/slots/config list
microsoft.web/sites/slots/functions listsecrets

Pokud chcete určit, které typy prostředků mají operaci seznamu, máte následující možnosti:

  • Zobrazte operace rozhraní REST API pro poskytovatele prostředků a vyhledejte operace se seznamem. Například účty úložiště mají operaci listKeys.

  • Použijte rutinu PowerShellu Get-AzProviderOperation . Následující příklad načte všechny operace se seznamem pro účty úložiště:

    Get-AzProviderOperation -OperationSearchString "Microsoft.Storage/*" | where {$_.Operation -like "*list*"} | FT Operation
    
  • K filtrování pouze operací seznamu použijte následující příkaz Azure CLI:

    az provider operation show --namespace Microsoft.Storage --query "resourceTypes[?name=='storageAccounts'].operations[].name | [?contains(@, 'list')]"
    

pickZones

pickZones(providerNamespace, resourceType, location, [numberOfZones], [offset])

Určuje, jestli typ prostředku podporuje zóny pro oblast. Tato funkce podporuje pouze zónové prostředky. Zónově redundantní služby vrací prázdné pole. Další informace najdete v tématu Služby Azure, které podporují Zóny dostupnosti.

Obor názvů: az.

Parametry

Parametr Požaduje se Type Popis
providerNamespace Ano string Obor názvů poskytovatele prostředků pro typ prostředku, který zkontroluje podporu zóny.
resourceType Ano string Typ prostředku, který chcete zkontrolovat podporu zón.
location Ano string Oblast, ve které chcete zjistit podporu zóny.
numberOfZones No integer Počet logických zón, které se mají vrátit. Výchozí hodnota je 1. Číslo musí být kladné celé číslo od 1 do 3. Pro prostředky s jednou zónou použijte 1. U prostředků s více zónami musí být hodnota menší nebo rovna počtu podporovaných zón.
offset No integer Posun od počáteční logické zóny. Funkce vrátí chybu, pokud posun plus numberOfZones překročí počet podporovaných zón.

Vrácená hodnota

Pole s podporovanými zónami. Při použití výchozích hodnot pro posun a numberOfZones, typ a oblast prostředku, který podporuje zóny vrátí následující pole:

[
    "1"
]

numberOfZones Pokud je parametr nastaven na hodnotu 3, vrátí:

[
    "1",
    "2",
    "3"
]

Pokud typ prostředku nebo oblast nepodporuje zóny, vrátí se prázdné pole.

[
]

Poznámky

Azure Zóny dostupnosti – zónově redundantní a zónově redundantní jsou různé kategorie. Funkci pickZones lze použít k vrácení zóny dostupnosti pro zónový prostředek. Pro zónově redundantní služby (ZRS) vrátí funkce prázdné pole. Zónové prostředky obvykle mají zones vlastnost na nejvyšší úrovni definice prostředku. Pokud chcete určit kategorii podpory zón dostupnosti, podívejte se na služby Azure, které podporují Zóny dostupnosti.

Pokud chcete zjistit, jestli daná oblast Nebo umístění Azure podporuje zóny dostupnosti, zavolejte pickZones funkci s typem zónového prostředku, například Microsoft.Network/publicIPAddresses. Pokud odpověď není prázdná, oblast podporuje zóny dostupnosti.

PickZones example

Následující soubor Bicep zobrazuje tři výsledky pro použití pickZones funkce.

output supported array = pickZones('Microsoft.Compute', 'virtualMachines', 'westus2')
output notSupportedRegion array = pickZones('Microsoft.Compute', 'virtualMachines', 'westus')
output notSupportedType array = pickZones('Microsoft.Cdn', 'profiles', 'westus2')

Výstup z předchozích příkladů vrátí tři pole.

Name Typ Hodnota
Podporováno pole [ "1" ]
notSupportedRegion pole []
notSupportedType pole []

Pomocí odpovědi pickZones můžete určit, jestli chcete poskytnout hodnotu null pro zóny nebo přiřadit virtuální počítače k různým zónům.

Poskytovatelů

Funkce zprostředkovatelů je v Bicep zastaralá. Už ho nedoporučujeme používat. Pokud jste tuto funkci použili k získání verze rozhraní API pro poskytovatele prostředků, doporučujeme ve svém souboru Bicep zadat konkrétní verzi rozhraní API. Pokud se vlastnosti mezi verzemi změní, může použití dynamicky vrácené verze rozhraní API přerušit vaši šablonu.

Operace zprostředkovatelů je stále dostupná prostřednictvím rozhraní REST API. Dá se použít mimo soubor Bicep k získání informací o poskytovateli prostředků.

Obor názvů: az.

reference

reference(resourceName or resourceIdentifier, [apiVersion], ['Full'])

Vrátí objekt představující stav modulu runtime prostředku. Výstup a chování reference funkce vysoce závisí na tom, jak každý poskytovatel prostředků (RP) implementuje své odpovědi PUT a GET.

Obor názvů: az.

Soubory Bicep poskytují přístup k referenční funkci, i když je obvykle zbytečné. Místo toho se doporučuje použít symbolický název prostředku. Referenční funkci lze použít pouze v rámci properties objektu prostředku a nelze ji použít pro vlastnosti nejvyšší úrovně, jako nebo namelocation. Totéž platí pro odkazy používající symbolický název. U vlastností, jako nameje například , je však možné vygenerovat šablonu bez použití referenční funkce. Dostatek informací o názvu prostředku je známo, že název přímo vygeneruje. Označuje se jako vlastnosti kompilace. Ověření Bicep může identifikovat nesprávné použití symbolického názvu.

Následující příklad nasadí účet úložiště. První dva výstupy vám poskytnou stejné výsledky.

param storageAccountName string = uniqueString(resourceGroup().id)
param location string = resourceGroup().location

resource storageAccount 'Microsoft.Storage/storageAccounts@2022-09-01' = {
  name: storageAccountName
  location: location
  kind: 'Storage'
  sku: {
    name: 'Standard_LRS'
  }
}

output storageObjectSymbolic object = storageAccount.properties
output storageObjectReference object = reference('storageAccount')
output storageName string = storageAccount.name
output storageLocation string = storageAccount.location

Pokud chcete získat vlastnost z existujícího prostředku, který není nasazený v šabloně, použijte existing klíčové slovo:

param storageAccountName string

resource storageAccount 'Microsoft.Storage/storageAccounts@2022-09-01' existing = {
  name: storageAccountName
}

// use later in template as often as needed
output blobAddress string = storageAccount.properties.primaryEndpoints.blob

Pokud chcete odkazovat na prostředek, který je vnořený uvnitř nadřazeného prostředku, použijte vnořené příslušenství (::). Tuto syntaxi použijete jenom v případě, že přistupujete k vnořenému prostředku mimo nadřazený prostředek.

vNet1::subnet1.properties.addressPrefix

Pokud se pokusíte odkazovat na prostředek, který neexistuje, zobrazí se NotFound chyba a vaše nasazení selže.

resourceId

resourceId([subscriptionId], [resourceGroupName], resourceType, resourceName1, [resourceName2], ...)

Vrátí jedinečný identifikátor prostředku.

Obor názvů: az.

Funkce resourceId je dostupná v souborech Bicep, ale obvykle ji nepotřebujete. Místo toho použijte symbolický název prostředku a přistupovat k id vlastnosti.

Tuto funkci použijete, pokud je název prostředku nejednoznačný nebo není zřízený ve stejném souboru Bicep. Formát vráceného identifikátoru se liší podle toho, jestli se nasazení děje v oboru skupiny prostředků, předplatného, skupiny pro správu nebo tenanta.

Příklad:

param storageAccountName string
param location string = resourceGroup().location

resource storageAccount 'Microsoft.Storage/storageAccounts@2022-09-01' = {
  name: storageAccountName
  location: location
  kind: 'Storage'
  sku: {
    name: 'Standard_LRS'
  }
}

output storageID string = storageAccount.id

Pokud chcete získat ID prostředku pro prostředek, který není nasazený v souboru Bicep, použijte existující klíčové slovo.

param storageAccountName string

resource storageAccount 'Microsoft.Storage/storageAccounts@2022-09-01' existing = {
    name: storageAccountName
}

output storageID string = storageAccount.id

Další informace najdete ve funkci RESOURCEId šablony JSON.

subscriptionResourceId

subscriptionResourceId([subscriptionId], resourceType, resourceName1, [resourceName2], ...)

Vrátí jedinečný identifikátor prostředku nasazeného na úrovni předplatného.

Obor názvů: az.

Funkce subscriptionResourceId je dostupná v souborech Bicep, ale obvykle ji nepotřebujete. Místo toho použijte symbolický název prostředku a přistupovat k id vlastnosti.

Identifikátor se vrátí v následujícím formátu:

/subscriptions/{subscriptionId}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}

Poznámky

Pomocí této funkce získáte ID prostředku pro prostředky, které jsou nasazené v předplatném , a ne pro skupinu prostředků. Vrácené ID se liší od hodnoty vrácené funkcí resourceId tím, že nezahrnuje hodnotu skupiny prostředků.

subscriptionResourceID example

Následující soubor Bicep přiřadí předdefinované role. Můžete ho nasadit do skupiny prostředků nebo předplatného. Pomocí subscriptionResourceId funkce získá ID prostředku pro předdefinované role.

@description('Principal Id')
param principalId string

@allowed([
  'Owner'
  'Contributor'
  'Reader'
])
@description('Built-in role to assign')
param builtInRoleType string

var roleDefinitionId = {
  Owner: {
    id: subscriptionResourceId('Microsoft.Authorization/roleDefinitions', '8e3af657-a8ff-443c-a75c-2fe8c4bcb635')
  }
  Contributor: {
    id: subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'b24988ac-6180-42a0-ab88-20f7382dd24c')
  }
  Reader: {
    id: subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'acdd72a7-3385-48ef-bd42-f606fba81ae7')
  }
}

resource roleAssignment 'Microsoft.Authorization/roleAssignments@2022-04-01' = {
  name: guid(resourceGroup().id, principalId, roleDefinitionId[builtInRoleType].id)
  properties: {
    roleDefinitionId: roleDefinitionId[builtInRoleType].id
    principalId: principalId
  }
}

managementGroupResourceId

managementGroupResourceId(resourceType, resourceName1, [resourceName2], ...)

Vrátí jedinečný identifikátor prostředku nasazeného na úrovni skupiny pro správu.

Obor názvů: az.

Funkce managementGroupResourceId je dostupná v souborech Bicep, ale obvykle ji nepotřebujete. Místo toho použijte symbolický název prostředku a přistupovat k id vlastnosti.

Identifikátor se vrátí v následujícím formátu:

/providers/Microsoft.Management/managementGroups/{managementGroupName}/providers/{resourceType}/{resourceName}

Poznámky

Pomocí této funkce získáte ID prostředku pro prostředky nasazené do skupiny pro správu, nikoli skupinu prostředků. Vrácené ID se liší od hodnoty vrácené funkcí resourceId tím, že nezahrnuje ID předplatného a hodnotu skupiny prostředků.

příklad managementGroupResourceID

Následující šablona vytvoří a přiřadí definici zásady. Pomocí managementGroupResourceId funkce získá ID prostředku pro definici zásady.

targetScope = 'managementGroup'

@description('Target Management Group')
param targetMG string

@description('An array of the allowed locations, all other locations will be denied by the created policy.')
param allowedLocations array = [
  'australiaeast'
  'australiasoutheast'
  'australiacentral'
]

var mgScope = tenantResourceId('Microsoft.Management/managementGroups', targetMG)
var policyDefinitionName = 'LocationRestriction'

resource policyDefinition 'Microsoft.Authorization/policyDefinitions@2021-06-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@2021-06-01' = {
  name: 'location-lock'
  properties: {
    scope: mgScope
    policyDefinitionId: managementGroupResourceId('Microsoft.Authorization/policyDefinitions', policyDefinitionName)
  }
  dependsOn: [
    policyDefinition
  ]
}

tenantResourceId

tenantResourceId(resourceType, resourceName1, [resourceName2], ...)

Vrátí jedinečný identifikátor prostředku nasazeného na úrovni tenanta.

Obor názvů: az.

Funkce tenantResourceId je dostupná v souborech Bicep, ale obvykle ji nepotřebujete. Místo toho použijte symbolický název prostředku a přistupovat k id vlastnosti.

Identifikátor se vrátí v následujícím formátu:

/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}

Předdefinované definice zásad jsou prostředky na úrovni tenanta. Pokud chcete nasadit přiřazení zásad, které odkazuje na předdefinované definice zásad, použijte tenantResourceId funkci.

@description('Specifies the ID of the policy definition or policy set definition being assigned.')
param policyDefinitionID string = '0a914e76-4921-4c19-b460-a2d36003525a'

@description('Specifies the name of the policy assignment, can be used defined or an idempotent name as the defaultValue provides.')
param policyAssignmentName string = guid(policyDefinitionID, resourceGroup().name)

resource policyAssignment 'Microsoft.Authorization/policyAssignments@2022-06-01' = {
  name: policyAssignmentName
  properties: {
    scope: subscriptionResourceId('Microsoft.Resources/resourceGroups', resourceGroup().name)
    policyDefinitionId: tenantResourceId('Microsoft.Authorization/policyDefinitions', policyDefinitionID)
  }
}

Další kroky

  • Pokud chcete získat hodnoty z aktuálního nasazení, podívejte se na funkce hodnot nasazení.
  • Pokud chcete iterovat zadaný počet opakování při vytváření typu prostředku, přečtěte si téma Iterativní smyčky v Bicep.