Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
I dina Bicep-filer använder du stränginterpolation och Bicep-funktioner för att skapa resursnamn som är unika, deterministiska, meningsfulla och olika för varje miljö som du distribuerar till.
Kontext och problem
I Azure är det namn du ger en resurs viktigt. Namn hjälper dig och ditt team att identifiera resursen. För många tjänster utgör resursnamnet en del av det DNS-namn som du använder för att komma åt resursen. Det är inte enkelt att ändra namn när resursen har skapats.
När du planerar en resurss namn måste du se till att det är:
- Unikt: Azure-resursnamn måste vara unika, men omfånget för unikhet beror på resursen.
- Deterministisk: Det är viktigt att din Bicep-fil kan distribueras upprepade gånger utan att återskapa befintliga resurser. När du distribuerar om Bicep-filen med samma parametrar bör resurserna ha samma namn.
- Meningsfullt: Namn ger dig och ditt team viktig information om resursens syfte. Om möjligt använder du namn som anger syftet med resursen.
- Distinkt för varje miljö: Det är vanligt att distribuera till flera miljöer, till exempel test, mellanlagring och produktion, som en del av distributionsprocessen.
- Giltigt för den specifika resursen:Varje Azure-resurs har en uppsättning riktlinjer som du måste följa när du skapar ett giltigt resursnamn. Dessa omfattar maximala längder, tillåtna tecken och om resursnamnet måste börja med en bokstav.
Kommentar
Din organisation kan också ha en egen namngivningskonvention som du behöver följa. Azure Cloud Adoption Framework ger vägledning om hur du skapar en namngivningsstrategi för din organisation. Om du har en strikt namngivningskonvention att följa och namnen som den genererar är distinkta och unika, kanske du inte behöver följa det här mönstret.
Lösning
Använd Biceps stränginterpolation för att generera resursnamn som variabler. Om resursen kräver ett globalt unikt namn använder du funktionen uniqueString() för att generera en del av resursnamnet. Förbered eller lägg till meningsfull information för att säkerställa att dina resurser är lätta att identifiera.
Kommentar
Vissa Azure-resurser, till exempel Rolldefinitioner och rolltilldelningar i Azure RBAC, måste ha globalt unika identifierare (GUID) som namn. Använd funktionen guid() för att generera namn för dessa resurser.
Om du skapar återanvändbar Bicep-kod bör du överväga att definiera namn som parametrar. Använd ett standardparametervärde för att definiera ett standardnamn som kan åsidosättas. Standardvärden hjälper till att göra dina Bicep-filer mer återanvändbara, vilket säkerställer att användarna av filen kan definiera sina egna namn om de behöver följa en annan namngivningskonvention.
Exempel 1: Namngivningskonvention för organisationer
I följande exempel genereras namnen för en App Service-app och en plan. Den följer en organisationskonvention som innehåller en resurstypkod (app
eller plan
), namnet på programmet eller arbetsbelastningen (contoso
), miljönamnet (som anges av en parameter) och en sträng som garanterar unikhet genom att använda uniqueString()
funktionen med ett startvärde för resursgruppens ID.
Även om App Service-planer inte kräver globalt unika namn, skapas plannamnet med samma format för att säkerställa efterlevnad av organisationens princip.
param location string = resourceGroup().location
param environmentName string
param appServiceAppName string = 'app-contoso-${environmentName}-${uniqueString(resourceGroup().id)}'
param appServicePlanName string = 'plan-contoso-${environmentName}-${uniqueString(resourceGroup().id)}'
resource appServiceApp 'Microsoft.Web/sites@2022-09-01' = {
name: appServiceAppName
// ...
}
resource appServicePlan 'Microsoft.Web/serverfarms@2022-09-01' = {
name: appServicePlanName
// ...
}
Exempel 2
I följande exempel genereras namnen för två lagringskonton för en annan organisation utan namngivningskonvention. I det uniqueString()
här exemplet används återigen funktionen med resursgruppens ID. En kort sträng läggs till i de genererade namnen för att säkerställa att vart och ett av de två lagringskontona har ett distinkt namn. Detta hjälper också till att säkerställa att namnen börjar med en bokstav, vilket är ett krav för lagringskonton.
param primaryStorageAccountName string = 'contosopri${uniqueString(resourceGroup().id)}'
param secondaryStorageAccountName string = 'contososec${uniqueString(resourceGroup().id)}'
resource primaryStorageAccount 'Microsoft.Storage/storageAccounts@2022-09-01' = {
name: primaryStorageAccountName
// ...
}
resource secondaryStorageAccount 'Microsoft.Storage/storageAccounts@2022-09-01' = {
name: secondaryStorageAccountName
// ...
}
Att tänka på
- Kontrollera att omfånget för resursnamnen är unikt. Använd lämpliga startvärden för funktionen uniqueString() för att se till att du kan återanvända Bicep-filen i Azure-resursgrupper och prenumerationer.
Dricks
I de flesta fall är det fullständigt kvalificerade resursgrupps-ID:t ett bra alternativ för funktionens
uniqueString
startvärde:var uniqueNameComponent = uniqueString(resourceGroup().id)
Namnet på resursgruppen (
resourceGroup().name
) kanske inte är tillräckligt unikt för att du ska kunna återanvända filen mellan prenumerationer. - Undvik att ändra startvärdena för
uniqueString()
funktionen när resurserna har distribuerats. Om du ändrar startvärdet får du nya namn och kan påverka dina produktionsresurser.