Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
Naming conventions provide standardized formats for assigning names to Azure resources. Every organization needs a tailored naming convention that meets both Azure requirements and specific cloud adoption needs. This guidance provides a foundation that you can adapt to align with your organizational requirements.
See examples: Example Azure resource names
Understand resource names in Azure
An Azure resource name is the identifier assigned to a specific instance of an Azure resource, such as a web app, database, or storage account. To establish a consistent Azure naming convention, you need to understand how Azure works. Here's what you need to know:
Understand name permanence. Most Azure resource names can't be changed after creation. Include only information that remains constant in the name. Use tags to capture other details.
Understand Azure naming rules. There are naming rules for every Azure resource. Not all Azure resource names can follow the same patterns. Make sure you understand the limitations of the resource types you're working with. Azure names must follow three general principles:
- Names need to be unique within the scope of the Azure resource (varies by resource).
- Names need to meet length requirements (varies by resource).
- Names can only contain valid characters (varies by resource).
Understand Azure name scope. Azure resource names must be unique within their defined scope. Each resource type has a specific scope level that determines where the name must be unique. Understanding these scope levels ensures proper naming conventions and avoids conflicts.
Scope Description Example Global Unique across all of Azure. This scope applies to PaaS resources with public IP endpoints, as their names serve as the initial default public DNS name. For example, a web app named app-navigator-prod-001.azurewebsites.net
must be globally unique.Resource group Unique within the resource group. Resources in the same group can't share the same name, but identical names can exist in different resource groups. For example, a virtual network named vnet-prod-westus-001
can exist in multiple resource groups, but only once within a single resource group.Resource Unique within the parent resource. Resources nested within another resource must have unique names to avoid conflicts. For example, subnets within a virtual network must have unique names to prevent segment overlap.
Choose naming components
The following list provides examples of naming components (what to include in the name) that are useful for constructing Azure resource names:
Naming component | Description | Example component | Example Azure resource |
---|---|---|---|
Resource type | An abbreviation that represents the type of Azure resource or asset. | rg , vm , st , app |
rg-navigator-prod-001 , vm-web-prod-001 |
Workload, application, or project | Name of a workload, application, or project that the resource is a part of. | navigator , emissions , sharepoint , hadoop |
app-navigator-prod , vm-sharepoint-dev-001 |
Environment | Production, development, quality assurance, stage, test. | prod , dev , qa , stage , test |
app-navigator-prod , sqldb-dev |
Region | The Azure region or cloud provider ___location where the resource is deployed. | westus , eastus2 , westeu , usva , ustx |
vnet-shared-eastus2-001 , pip-hadoop-prod-westus-001 |
Instance number | The instance count for a specific resource, to differentiate it from other resources that have the same naming convention and naming components. | 01 , 001 |
vm-sql-test-001 , vm-sql-test-002 |
Develop your naming convention
To construct your Azure naming convention, identify the key pieces of information that you want to reflect in a resource name. Different information is relevant for different resource types.
Standardize component order. In addition to defining the naming components, you must also consider the order in which the naming components are listed.
Choose to use a delimiter or not. To improve readability, use a hyphen
-
to separate naming components. However, not every resource in Azure allows you to use a delimiter. If you need absolute consistency across all your Azure resource names, don't use a hyphen. For many customers, the benefits of using a delimiter outweigh some inconsistency in the naming convention.Use abbreviations. Use Azure resource abbreviations to keep resource names within length limits.
Use the Azure Naming Tool. The Azure Naming Tool is a tool that helps you generate names for Azure resources. You configure the tool to use your preferred naming convention, and it generates names for your Azure resources. For more information, see Azure Naming Tool.
Example Azure resource names
Consider these examples when you define your Azure naming convention. The examples are based on the naming components and considerations that are described in this article.
AI and machine learning
Asset type | Scope | Format and examples |
---|---|---|
Azure AI Search | Global | srch-<workload, application, or project>-<environment> srch-navigator-prod srch-emissions-dev |
Azure OpenAI Service | Resource group | oai-<workload, application, or project>-<environment> oai-navigator-prod oai-emissions-dev |
Azure Machine Learning workspace | Resource group | mlw-<workload, application, or project>-<environment> mlw-navigator-prod mlw-emissions-dev |
Analytics and IoT
Asset type | Scope | Format and examples |
---|---|---|
Azure Data Factory | Global | adf-<workload, application, or project>-<environment> adf-navigator-prod adf-emissions-dev |
Data Lake Storage account | Global | dls<workload, application, or project><environment> dlsnavigatorprod dlsemissionsdev |
IoT hub | Global | iot-<workload, application, or project>-<environment> iot-navigator-prod iot-emissions-dev |
Compute and web
Asset type | Scope | Format and examples |
---|---|---|
Virtual machine | Resource group | vm-<workload, application, or project>-<environment>-<###> vm-sql-test-001 vm-hadoop-prod-001 vm-sharepoint-dev-001 |
Web app | Global | app-<workload, application, or project>-<environment>-<###>.azurewebsites.net app-navigator-prod-001.azurewebsites.net app-accountlookup-dev-001.azurewebsites.net |
Function app | Global | func-<workload, application, or project>-<environment>-<###>.azurewebsites.net func-navigator-prod-001.azurewebsites.net func-accountlookup-dev-001.azurewebsites.net |
Databases
Asset type | Scope | Format and examples |
---|---|---|
Azure SQL database | Azure SQL Server | sqldb-<workload, application, or project>-<environment> sqldb-users-prod sqldb-users-dev |
Azure Cosmos DB database | Global | cosmos-<workload, application, or project>-<environment> cosmos-navigator-prod cosmos-emissions-dev |
Azure Cache for Redis instance | Global | redis-<workload, application, or project>-<environment> redis-navigator-prod redis-emissions-dev |
Integration
Asset type | Scope | Format and Examples |
---|---|---|
API management service instance | Global | apim-<app or service name> apim-navigator-prod |
Service Bus namespace | Global | sbns-<workload, application, or project>-<environment>.servicebus.windows.net sbns-navigator-prod.servicebus.windows.net sbns-emissions-dev.servicebus.windows.net |
Service Bus queue | Service Bus | sbq-<workload, application, or project> sbq-navigator |
Service Bus topic | Service Bus | sbt-<workload, application, or project> sbt-navigator |
Management and governance
Asset type | Scope | Format and examples |
---|---|---|
Management group | Tenant | Provide a globally unique identifier (GUID) for the management group ID. Display names are editable and should represent the platform function or workload types within them. |
Subscription | Azure account or Enterprise agreement | Descriptive name that aligns with IT standards. You can change the display name. Example: (Business Unit (optional)) (Function or Workload) (Environment) Marketing Web App Production Connectivity Security |
Resource group | Subscription | rg-workload name/type-workload component (optional)-environment (optional) rg-webapp-prod rg-webapp-database-dev |
Networking
Asset type | Scope | Format and examples |
---|---|---|
Virtual network | Resource group | vnet-<subscription purpose>-<region>-<###> vnet-shared-eastus2-001 vnet-prod-westus-001 vnet-client-eastus2-001 |
Subnet | Virtual network | snet-<subscription purpose>-<region>-<###> snet-shared-eastus2-001 snet-prod-westus-001 snet-client-eastus2-001 |
Network interface (NIC) | Resource group | nic-<##>-<vm name>-<subscription purpose>-<###> nic-01-dc1-shared-001 nic-02-vmhadoop1-prod-001 nic-02-vmtest1-client-001 |
Public IP address | Resource group | pip-<vm name or app name>-<environment>-<region>-<###> pip-dc1-shared-eastus2-001 pip-hadoop-prod-westus-001 |
Load balancer (external) | Resource group | lbe-<app name or role>-<environment>-<###> lbe-navigator-prod-001 lbe-sharepoint-dev-001 |
Network security group (NSG) | Subnet or NIC | nsg-<policy name or app name>-<###> nsg-weballow-001 nsg-rdpallow-001 nsg-sqlallow-001 nsg-dnsblocked-001 |
Local network gateway | Virtual gateway | lgw-<subscription purpose>-<region>-<###> lgw-shared-eastus2-001 lgw-prod-westus-001 lgw-client-eastus2-001 |
Virtual network gateway | Virtual network | vgw-<subscription purpose>-<region>-<###> vgw-shared-eastus2-001 vgw-prod-westus-001 vgw-client-eastus2-001 |
VPN connection | Resource group | vcn-<subscription1 purpose>>-<region1>-to-<subscription2 purpose>>-<region2>- vcn-shared-eastus2-to-shared-westus vcn-prod-eastus2-to-prod-westus |
Route table | Resource group | rt-<route table name> rt-navigator rt-sharepoint |
DNS label | Global | <DNS A record for VM>.<region>.cloudapp.azure.com dc1.westus.cloudapp.azure.com web1.eastus2.cloudapp.azure.com |
Security
Asset type | Scope | Format and examples |
---|---|---|
Managed identity | Resource group | id-<app or service name>-<environment>-<region name>-<###> id-appcn-keda-prod-eastus2-001 |
Storage
Asset type | Scope | Format and examples |
---|---|---|
Storage account (general use) | Global | st<workload, application, or project><###> stnavigatordata001 stemissionsoutput001 |
Azure Container Registry | Global | cr<workload, application, or project><environment><###> crnavigatorprod001 |
Next step
A good next step is to define your tagging strategy.