Microsoft Azure のリソース命名規則

[Azure リソースの名前付けおよびタグ付けの戦略を作成する - Cloud Adoption Framework | Microsoft Learn](https://learn.microsoft.com/ja-jp/azure/cloud-adoption-framework/ready/azure-best-practices/naming-and-tagging)

## Azure リソースの命名規則
[名前付け規則を定義する - Cloud Adoption Framework | Microsoft Learn](https://learn.microsoft.com/ja-jp/azure/cloud-adoption-framework/ready/azure-best-practices/resource-naming)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/15175/6731639f-2894-f099-81ed-6052a67c3b2a.png)

### 推奨される名前付けコンポーネント
> リソースの種類によって関連する情報は異なり、確立されているすべての名前付けコンポーネントを各リソースの種類に使用できるわけではありません。 

| 名前付けコンポーネント | 説明 | 例 |
|:--|:--|:--|
| **組織** | 組織の最上位レベルの名前、上位管理グループ | `contoso` |
| **事業単位** or **部署** | ワークロードを所有する会社の最上位の部門 | `fin`、`mktg`、`product`、`it`、`corp` |
| **リソースの種類** | Azure リソースの種類を表す省略形 | `rg`、`vm` |
| **プロジェクト**、**アプリケーション** or **サービス名**| プロジェクト、アプリケーション、またはサービスの名前 | `navigator`、`emissions`、`sharepoint`、`hadoop` |
| **環境**	| ワークロードの開発ライフサイクルのステージ | `prod`、`dev`、`qa`、`stage`、`test` |
| **場所**	| リージョンまたはクラウドプロバイダー | `japaneast`、`japanwest`、`westus`、`eastus2`、`westeu`、`usva`、`ustx` |
| **VM ロール**	|VM の用途を示す識別子 | `db` (データベース)、`ws` (Web サーバー)、`ps` (プリント サーバー)|
| **インスタンス**	| 特定のリソースのインスタンス数 | `01`、`001` |

コントソ (Contoso) は、マイクロソフトがサンプル用に使う仮想上の会社またはドメイン。 [^contoso]

[^contoso]: <q cite="https://ja.wikipedia.org/wiki/%E3%82%B3%E3%83%B3%E3%83%88%E3%82%BD">コントソ (Contoso) は、マイクロソフトがサンプル用に使う仮想上の会社またはドメインである。</q> - <cite>[コントソ - Wikipedia](https://ja.wikipedia.org/wiki/%E3%82%B3%E3%83%B3%E3%83%88%E3%82%BD) -  <i>wikipedia.org</i></cite>

### Azure の名前付け規則
> Azure の名前付け規則は、リソースの種類によって異なります。 

| 名前付けコンポーネント | 説明 | 例 |
|:--|:--|:--|
| **リソースの種類** | Azure リソースの種類を表す省略形 | `rg`、`vm` |
| **事業単位** or **部署** | ワークロードを所有する会社の最上位の部門 | `fin`、`mktg`、`product`、`it`、`corp` |
| **アプリケーション** or **サービス名**| アプリケーション、ワークロード、またはサービスの名前 | `navigator`、`emissions`、`sharepoint`、`hadoop` |
| **サブスクリプションの目的**	| サブスクリプションの目的に関する概要の説明 | `prod`、`shared`、`client` |
| **環境**	| ワークロードの開発ライフサイクルのステージ | `prod`、`dev`、`qa`、`stage`、`test` |
| **リージョン**	| Azure リージョン | `japaneast`、`japanwest`、`westus`、`eastus2`、`westeu`、`usva`、`ustx` |

## 名前の例
### 管理グループ (`mg`)
事業単位および/または環境単位
"`mg`-`<事業単位>`[-`<環境>`]"
* `mg-mktg`
* `mg-hr`
* `mg-corp-prod`
* `mg-fin-client`

### サブスクリプション
アカウント/エンタープライズ契約単位
"`<事業単位>`-`<サブスクリプションの目的>`-`<###>`"
* `mktg-prod-001`
* `corp-shared-001`
* `fin-client-001`

### リソースグループ (`rg`)
サブスクリプション単位
"`rg`-`<アプリorサービス名>`-`<サブスクリプションの目的>`-`<###>`"
* `rg-mktgsharepoint-prod-001`
* `rg-acctlookupsvc-shared-001`
* `rg-ad-dir-services-shared-001`

### API 管理サービス インスタンス (`apim`)
グローバル
`apim`-`<アプリorサービス名>`
* `apim-navigator-prod`

### 管理対象 ID (`id`)
リソースグループ単位
"`id`-`<アプリorサービス名>`-`<環境>`-`<リージョン名>`-`<###>`"
* `id-appcn-keda-prod-eastus2-001`

### 仮想ネットワーク (`vnet`)
リソースグループ単位
"`vnet`-`<サブスクリプションの目的>`-`<リージョン>`-`<###>`"
* `vnet-shared-eastus2-001`
* `vnet-prod-westus-001`
* `vnet-client-eastus2-001`

### サブネット (`snet`)
仮想ネットワーク単位
"`snet`-`<サブスクリプションの目的>`-`<リージョン>`-`<###>`"
* `snet-shared-eastus2-001`
* `snet-prod-westus-001`
* `snet-client-eastus2-001`

### ネットワークインターフェイス (NIC) (`nic`)
リソースグループ単位
"`nic`-`<##>`-`<VM名>`-`<サブスクリプションの目的>`-`<###>`"
* `nic-01-dc1-shared-001`
* `nic-02-vmhadoop1-prod-001`
* `nic-02-vmtest1-client-001`

### パブリック IP アドレス (`pip`)
リソースグループ単位
`pip`-`<VM名orアプリ名>`-`<環境>`-`<リージョン>`-`<###>`
* `pip-dc1-shared-eastus2-001`
* `pip-hadoop-prod-westus-001`

### ロードバランサー (`lb`)
リソースグループ単位
`lb`-`<アプリ名orロール>`-`<環境>`-`<###>`
* `lb-navigator-prod-001`
* `lb-sharepoint-dev-001`

### ネットワークセキュリティグループ (NSG) (`nsg`)
サブネットまたは NIC 単位
`nsg`-`<ポリシー名orアプリ名>`-`<###>`
* `nsg-weballow-001`
* `nsg-rdpallow-001`
* `nsg-sqlallow-001`
* `nsg-dnsblocked-001`

### ローカルネットワークゲートウェイ (`lgw`)
仮想ゲートウェイ単位
"`lgw`-`<サブスクリプションの目的>`-`<リージョン>`-`<###>`"
* `lgw-shared-eastus2-001`
* `lgw-prod-westus-001`
* `lgw-client-eastus2-001`

### 仮想ネットワークゲートウェイ (`vgw`)
仮想ネットワーク単位
"`vgw`-`<サブスクリプションの目的>`-`<リージョン>`-`<###>`"
* `vgw-shared-eastus2-001`
* `vgw-prod-westus-001`
* `vgw-client-eastus2-001`
 
### サイト間接続 (`cn`)
リソースグループ単位
`cn`-`<ローカルゲートウェイ名>`-to-`<仮想ゲートウェイ名>`
* `cn-lgw-shared-eastus2-001-to-vgw-shared-eastus2-001`
* `cn-lgw-shared-eastus2-001-to-vgw-shared-westus-001`

### VPN 接続 (`cn`)
リソースグループ単位
`cn`-`<サブスクリプション1の目的>`-`<リージョン1>`-to-`<サブスクリプション2の目的>`-`<リージョン2>`
* `cn-shared-eastus2-to-shared-westus`
* `cn-prod-eastus2-to-prod-westus`

### ルートテーブル (`route`)
リソースグループ単位
`route`-`<ルーティングテーブル名>`
* `route-navigator`
* `route-sharepoint`

### DNS ラベル
グローバル
`<VMのDNS Aレコード>`.`<リージョン>`.`cloudapp.azure.com`
* `dc1.westus.cloudapp.azure.com`
* `web1.eastus2.cloudapp.azure.com`

### 仮想マシン (`vm`)
リソースグループ単位
`vm` `<VMロール>` `<環境>` `<###>`
* `vmsqltest001`
* `vmhadoopprod001`

> Azure の仮想マシン (VM) 名は、VM の許容される NetBIOS 名よりも長くなることがありますが、一貫性を保つことをお勧めします。

仮想マシンとストレージアカウント (全般)は、一意の文字列として扱いたいのかハイフンで結ばないようだ。


### Web アプリ (`app`)
グローバル
`app`-`<プロジェクトorアプリorサービス>`-`<環境>`-`<###>`.`azurewebsites.net`
* `app-navigator-prod-001.azurewebsites.net`
* `app-accountlookup-dev-001.azurewebsites.net`

### 関数アプリ (`func`)
グローバル
`func`-`<プロジェクトorアプリorサービス>`-`<環境>`-`<###>`.`azurewebsites.net`
* `func-navigator-prod-001.azurewebsites.net`
* `func-accountlookup-dev-001.azurewebsites.net`

### Azure SQL データベース (`sqldb`)
Azure SQL Database
`sqldb`-`<プロジェクトorアプリorサービス>`-`<環境>`
* `sqldb-users-prod`
* `sqldb-users-dev`

### Azure Cosmos DB データベース (`cosmos`)
グローバル
`cosmos`-`<プロジェクトorアプリorサービス>`-`<環境>`
* `cosmos-navigator-prod`
* `cosmos-emissions-dev`

### Azure Cache for Redis インスタンス (`redis`)
グローバル
`redis`-`<プロジェクトorアプリorサービス>`-`<環境>`
* `redis-navigator-prod`
* `redis-emissions-dev`

### ストレージアカウント (全般) (`st`)
グローバル
`st` `<プロジェクトorアプリorサービス>` `<###>`
* `stnavigatordata001`
* `stemissionsoutput001`

### Azure StorSimple (`ssimp`)
グローバル
`ssimp` `<プロジェクトorアプリorサービス>` `<環境>`
* `ssimpnavigatorprod`
* `ssimpemissionsdev`

### Azure Container Registry (`cr`)
グローバル
`cr` `<プロジェクトorアプリorサービス>` `<環境>` `<###>`
* `crnavigatorprod001`

### Azure Cognitive Search (`srch`)
グローバル
`srch`-`<プロジェクトorアプリorサービス>`-`<環境>`
* `srch-navigator-prod`
* `srch-emissions-dev`

### Azure Cognitive Services (`cog`)
リソースグループ単位
`cog`-`<プロジェクトorアプリorサービス>`-`<環境>`
* `cog-navigator-prod`
* `cog-emissions-dev`

### Azure Machine Learning ワークスペース (`mlw`)
リソースグループ単位
`mlw`-`<プロジェクトorアプリorサービス>`-`<環境>`
* `mlw-navigator-prod`
* `mlw-emissions-dev`