Azure Batch の「ユーザー サブスクリプション割り当て」モードでプールを作成すると、サブスクリプション内に自動で VMSS やノードが増えていきます。しかし既定のランダムな名前では、どの VMSS がどのプールなのか一目で分からず、運用やコスト管理の観点で悩む方も多いはずです。本記事では「名前を変えられないのか?」という疑問に答えつつ、実務で取るべき現実的な設計・運用方法を詳しく解説します。
Azure Batch「ユーザー サブスクリプション割り当て」と VMSS の関係
まず前提として、Azure Batch のプール割り当てモードをおさらいしておきます。
- Batch service モード:VMSS などの計算リソースは Microsoft 管理のサブスクリプション側に作成され、ユーザーのサブスクリプションには見えません。
- ユーザー サブスクリプション割り当て(User subscription)モード:プールを作成すると、VMSS や NIC などのリソースが Batch アカウントと同じサブスクリプションに直接作成されます。
そのためユーザー サブスクリプション割り当てでは、Azure Portal や Azure Resource Graph 経由で「Batch が裏側で作った VMSS」を直接一覧することができます。可視性が高くなる一方で、以下のような悩みも生まれます。
- VMSS 名に GUID が含まれており、「どのプール/システムの VM なのか」ぱっと見で分からない
- 運用時に VMSS 名ベースでフィルタしたいが、命名規則を自分で定義できない
- コスト管理レポートで、別システムの VMSS と見分けにくい
典型的には、次のような名前の VMSS が自動生成されます。
62688a0b-4313-43fa-9e29-32c3e97fa484-AzureBatch-VMSS
GUID + -AzureBatch-VMSS という形で、Batch の内部ルールに従って自動生成されたものです。
結論:Azure Batch が作成する VMSS/ノード名は「変更・カスタマイズ不可」
結論から言うと、Azure Batch(ユーザー サブスクリプション割り当て)で自動作成される VMSS/ノード名について、
- 作成時に任意の名前を指定することはできません
- プレフィックス/サフィックスを付けるオプションもありません
- 作成後に VMSS 名やノード名をリネームすることもできません
Microsoft Q&A でも、同様の質問に対して「Batch が作成するリソースにはあらかじめ決められた命名規則があり、スケール セットやノードの名前をカスタマイズすることはできない」と明言されています。
また、Azure Virtual Machine Scale Set 自体の仕様としても、いったん作成した VMSS の「コンピューター名プレフィックス」や VM 名を後から変更することはできません。これは Batch 経由かどうかに関わらない制約です。
つまり、
- 「VMSS 名に
prod-***のようなプレフィックスを付ける」 - 「既に作られた VMSS 名を後からリネームする」
といった操作は、Azure Batch と VMSS の仕様上できない、というのが正解です。
できること/できないことを整理
| 項目 | 可否 | 補足 |
|---|---|---|
| VMSS リソース名の変更(リネーム) | 不可 | Azure VMSS 自体がリネーム非対応 |
| VMSS 名のプレフィックス/サフィックス指定 | 不可 | Batch の API/ポータルに指定項目なし |
| ノード(VM)名の変更 | 不可 | VM 名/コンピューター名プレフィックスは作成後変更不可 |
| VMSS/ノードへのタグ付与 | 可 | Portal/CLI/Policy から自由に設定できる |
| Batch プール ID/ジョブ名の命名 | 可 | 論理名として人間に分かりやすい命名が可能 |
| リソース グループやサブスクリプションでの分離 | 可 | 環境やシステムごとにスコープを分けて管理可能 |
したがって、「名前で識別しよう」と考えるのをやめて「タグ」「スコープ設計」で識別するのが、Azure Batch(ユーザー サブスクリプション割り当て)における現実的なベストプラクティスになります。
代替策1:タグで「人間に分かる情報」を付ける(最優先)
Azure Batch が自動で決める VMSS 名は変えられないので、運用上必要な情報は タグ に載せていくのが王道です。Microsoft Q&A の回答でも、名前を変えられない代替策としてリソース タグの活用が推奨されています。
最低限付けておきたいタグ例
| タグ名 | 例 | 目的 |
|---|---|---|
Project | SalesDashboard | どのプロジェクト/システムかを特定 |
Environment | prod / stg / dev | 本番・検証・開発など環境の区別 |
Owner | DataPlatformTeam | 責任チーム・担当者の明示 |
BatchAccount | batch-prod-01 | どの Batch アカウント由来かを紐付け |
BatchPoolId | hpc-pool-a | どのプールに対応する VMSS かを特定 |
CostCenter | CC-1001 | 部門別のコスト配賦に利用 |
VMSS/VM ノードだけでなく、関連するストレージ アカウントやネットワーク、Batch アカウント自体にも同じタグ構成を適用しておくと、コスト分析やトラブルシュートの際に非常に分かりやすくなります。
CLI で既存 VMSS にタグを付与する例
ユーザー サブスクリプション割り当てでは、Batch プールを作成した時点で VMSS がサブスクリプション内に作成されています。作成済み VMSS に対してタグをまとめて付ける場合は、Azure CLI から次のように実行できます。
# 対象 VMSS のリソース ID はポータルや `az vmss list` で確認
az resource tag \
--ids <vmss-resource-id> \
--tags Project=SalesDashboard \
Environment=prod \
Owner=DataPlatformTeam \
BatchAccount=batch-prod-01 \
BatchPoolId=hpc-pool-a
スクリプト化しておき、「新しいプールを作ったら必ず VMSS にタグを付ける」という運用フローに組み込んでしまうと、タグ漏れを防止できます。
代替策2:Azure Policy でタグ付与を自動化・強制
ユーザー サブスクリプション割り当てでは、VMSS が自サブスクリプション内に見えるため、Azure Policy の対象にすることができます。
代表的なパターンは以下のとおりです。
- 必須タグ(例:
Project,Environment,Owner)がない VMSS の作成を拒否する - リソース グループに付いているタグを VMSS に自動継承する
- 特定のリソース タイプ(
Microsoft.Compute/virtualMachineScaleSets)に対してのみタグ ポリシーを適用する
タグ継承ポリシーの例
詳細な説明はここでは省きますが、概念的には次のようなポリシーを定義しておくと便利です(実際の assignment 時にはパラメーターやスコープを調整してください)。
{
"properties": {
"displayName": "継承: リソース グループのタグを VMSS にコピー",
"mode": "Indexed",
"policyRule": {
"if": {
"allOf": [
{
"field": "type",
"equals": "Microsoft.Compute/virtualMachineScaleSets"
},
{
"field": "tags['Project']",
"exists": "false"
}
]
},
"then": {
"effect": "modify",
"details": {
"operations": [
{
"operation": "addOrReplace",
"field": "tags['Project']",
"value": "[resourceGroup().tags['Project']]"
},
{
"operation": "addOrReplace",
"field": "tags['Environment']",
"value": "[resourceGroup().tags['Environment']]"
}
]
}
}
}
}
}
このようなポリシーをあらかじめサブスクリプションやリソース グループに割り当てておけば、Batch が新しい VMSS を作るたびに自動でタグが補完され、「タグを付け忘れた VMSS がある」という状態を防止できます。
代替策3:論理名は Batch アカウント/プール/ジョブに集約する
人間にとって意味のある「論理名」は、Batch の上位リソース(アカウント・プール・ジョブ)に寄せるのが設計としては素直です。Azure Batch では、プール ID やジョブ ID には自由に命名規則を適用できます。
例えば以下のような命名ルールを決めておくと、資料や監視画面だけ見ても内容が想像しやすくなります。
| レイヤー | 命名例 | 意味 |
|---|---|---|
| Batch アカウント名 | batch-sales-prod-01 | Sales システム本番用 Batch アカウント(リージョン 1) |
| プール ID | pool-hpc-report-a | レポート生成用 HPC プール A 系列 |
| ジョブ名 | job-daily-report-YYYYMMDD | 日次レポート バッチ |
運用設計のポイントは、「VMSS の名前を見に行かなくても、Batch 側の情報だけで十分に状況が把握できる」状態を作ることです。どうしても物理リソースとの対応が必要であれば、
- プール ID ⇔ VMSS リソース ID の一覧を Wiki や構成管理ツールに記録しておく
- 前述の
BatchPoolIdタグにプール ID を必ず入れておく
といった手段で「論理 ⇔ 物理」の橋渡しをしておくとよいでしょう。
代替策4:リソース グループ/サブスクリプションでの分離
Batch のプールを環境ごと・システムごとに明確に分離したい場合は、リソース グループやサブスクリプションを分けるのも有効です。
- 本番/検証/開発でリソース グループを分割する
- 基幹システムと事業部門システムでサブスクリプションを分ける
- それぞれに Batch アカウントを作成し、プールもその中に閉じ込める
こうしておけば、たとえ VMSS 名がランダムでも、
- 「このサブスクリプションにある VMSS はすべて ○○ システム用」
- 「このリソース グループ配下の VMSS はすべて本番環境」
とスコープで切り分けられるので、視覚的な混乱をかなり抑えられます。また、サブスクリプション/リソース グループ単位で RBAC(権限)やコスト管理も整理できるため、運用ガバナンスの観点でもメリットがあります。
代替策5:Azure Resource Graph/CLI で Batch 由来 VMSS を可視化・レポート
ユーザー サブスクリプション割り当てでは、VMSS が通常の Azure リソースとして管理されるため、Azure Resource Graph で一括検索・集計が可能です。
Azure CLI(Resource Graph)で Batch 由来 VMSS を一覧する例
az graph query -q '
resources
| where type =~ "microsoft.compute/virtualmachinescalesets"
| where name contains "AzureBatch-VMSS"
| project name, resourceGroup, tags, id
'
ここで tags を投影しているため、前述の BatchPoolId や Environment をタグに入れておけば、Kusto クエリで集計が行えます。
タグ別に VMSS の台数やコストをざっくり把握する例
より踏み込んだ例として、タグごとの VMSS 台数を集計するクエリ例を挙げます(Resource Graph Explorer での実行を想定)。
resources
| where type =~ "microsoft.compute/virtualmachinescalesets"
| where name contains "AzureBatch-VMSS"
| summarize count() by tostring(tags['Project']), tostring(tags['Environment'])
| order by tags_Project asc, tags_Environment asc
ここからさらに Log Analytics や Power BI に連携しておけば、「どのプロジェクト・環境でどれだけ Batch VMSS が動いているか」をダッシュボード化することも難しくありません。
運用シナリオ別の考え方
HPC バッチ処理(大量・短命なプールが頻繁に立ち上がるケース)
HPC ワークロードのように、ジョブごとに短命なプール/VMSS を立てたり消したりするパターンでは、そもそも「個々の VMSS を名前で追いかける」こと自体をやめてしまう方が安全です。
- プールは「ジョブ種別 × 優先度」くらいの粒度でまとめる
- VMSS の詳細は見に行かず、Batch のジョブ/タスク レベルでモニタリングする
- 課金・台数の把握は Tags + Resource Graph で集計する
このように「VMSS は完全に裏方」と割り切ることで、名前がランダムであることを気にしなくてよくなります。
長期稼働の常駐バッチ(固定プールで運用するケース)
常時稼働するバッチ基盤では、プール自体が長寿命になるため、
- プール ID に十分意味のある名前を付ける
- 対応する VMSS にも同じ情報をタグとして持たせる
- 監視通知などの文言にはプール ID/ジョブ名を含める
といった形で、「人間が見る名前はすべて Batch 側に寄せる」設計がおすすめです。VMSS 名そのものは、あくまでシステム内部の識別子と考えます。
複数システム/複数チームで共用するサブスクリプション
1 つのサブスクリプション内で複数チームが Batch を使う場合は、タグとガバナンス設計が特に重要になります。
- 全チーム共通のタグ標準(
Project,Environment,Owner,CostCenter等)を決める - Azure Policy でタグ必須/継承を強制する
- サブスクリプション/リソース グループ レベルで RBAC を分離する
- Resource Graph でチームごとの Batch 利用状況レポートを配布する
こうしておけば、「誰が作ったのかよく分からない VMSS が大量にある」といった状況を避けられます。
名前変更が本当に必要になった場合の唯一の選択肢:「作り直す」
どうしても VMSS 名やプール構成を変えたい場合、現時点で取りうる選択肢は実質的に 「新しいプールを作り直す」ことだけです。
- 新しい名前・タグ設計に基づいて、別の Batch プールを作成する
- プールに対応する VMSS/ネットワークに必要なタグや設定を適用する
- テスト環境でジョブ/タスクが正常に動くことを確認する
- 本番ワークロードを段階的に新しいプールへ切り替える
- 旧プールからジョブ/スケジュールを削除し、不要になったらプールを削除する
この手順は VM サイズや OS イメージを変えたい場合にもよく使われる「作り直しパターン」であり、Azure Batch の仕様と相性がよいアプローチです。
よくある質問(FAQ)
REST API や ARM テンプレート/Bicep から、VMSS 名やプレフィックスを指定できませんか?
Azure Batch のプール作成 API(pools/create)を見ても、指定できるのはプール ID、VM サイズ、イメージ、ノード数、ネットワーク設定などであり、VMSS 名そのものを指定するパラメーターは存在しません。
そのため、ARM テンプレートや Bicep であっても、Batch 経由で作られる VMSS 名をコントロールすることはできません。
VM のコンピューター名(ホスト名)だけでも変えられませんか?
VMSS では computerNamePrefix という形でコンピューター名のプレフィックスを持ちますが、これもリソース作成後に変更することはできません。
Batch が VMSS を作成する際にも、このプレフィックスは内部的に決定されており、ユーザーが指定する手段は用意されていません。
将来のアップデートで、名前をカスタマイズできるようになる可能性はありますか?
現時点では、公式ドキュメントや公開情報の範囲で「VMSS 名やノード名のカスタマイズに対応する計画」が明示されているわけではありません。ただし Azure のサービスは頻繁に更新されるため、重要な要件であれば、
- 公式ドキュメント(特に Azure Batch と VMSS 関連)
- Microsoft Q&A/GitHub Issues などのコミュニティ
を定期的に確認し、変更が入っていないかをウォッチしておくとよいでしょう。
まとめ:名前は諦めて「タグ+ポリシー+可視化」で戦う
本記事のポイントを最後に整理します。
- Azure Batch(ユーザー サブスクリプション割り当て)で作成される VMSS/ノード名は、Batch の内部ルールで自動生成されるため変更・カスタマイズできない
- VMSS 自体の仕様としても、作成後のリネームやコンピューター名プレフィックスの変更はサポートされない
- 「名前で人間が識別する」のを諦め、タグでプロジェクト/環境/プール ID/オーナーなどを明示することが最も実務的
- Azure Policy を使えば、VMSS に対するタグ必須・継承を自動化でき、タグ漏れ防止に効果的
- 論理的な名前付けは Batch アカウント/プール/ジョブに寄せ、「VMSS は裏方」と割り切る設計がシンプル
- ユーザー サブスクリプション割り当てでは VMSS がサブスクリプションに直接見えるため、Resource Graph や Power BI と組み合わせて可視化・レポートを整備すると運用が楽になる
- どうしても構成を変えたい場合は、新しい設計でプールを作り直し、ワークロードを段階的に移行するのが唯一かつ安全な選択肢
つまり、Azure Batch では「名前を変える」のではなく、「名前に頼らなくても困らない運用を設計する」ことが重要です。タグ+ポリシー+可視化を組み合わせることで、GUID ベースの VMSS 名でも実務上の課題は十分解決できます。

コメント