Azure for Students で Linux VM を作ろうとしたら、RequestDisallowedByAzure エラーが出てまったくデプロイできない――そんな状況にハマっていませんか?本記事では、このエラーの正体である「リージョン制限ポリシー」を分かりやすく解説しつつ、ポータル・CLI 双方での確認&回避手順、よくある勘違いポイント、学習環境としての付き合い方まで詳しく整理します。
Azure for Students で発生する「RequestDisallowedByAzure」エラーの症状
Azure for Students サブスクリプションで、Cloud Shell(Azure CLI)から Linux VM を作成しようとすると、次のようなメッセージで失敗することがあります。
RequestDisallowedByAzure: This policy maintains a set of best available regions...
典型的には次のような状況で発生します。
- Azure for Students サブスクリプションを使っている
- Cloud Shell やローカルの Azure CLI から VM を作成
- VM サイズは
Standard_B1sなどの軽量サイズ - リージョンは
eastusやjapaneastなど、一見「メジャー」な場所 - それでも毎回
RequestDisallowedByAzureで拒否される
しかも、VM だけでなく、同時に作成される VNet / NSG / NIC / Public IP などのネットワーク系リソース一式も同じエラーでまとめて失敗します。
Cloud Shell / Azure CLI での再現例
例えば、次のようなコマンドを実行したとします。
az group create -n my-rg -l eastus
az vm create \
-g my-rg -n my-vm \
--image Ubuntu2204 \
--size Standard_B1s \
--admin-username azureuser \
--generate-ssh-keys
このとき、リソースグループ my-rg を作成した eastus が、あなたの Azure for Students サブスクリプションでは「禁止リージョン」だった場合、VM も関連リソースもすべて RequestDisallowedByAzure で拒否されてしまいます。
原因:Azure Policy「Allowed resource deployment regions」によるリージョン制限
このエラーの根本原因は、Azure for Students サブスクリプションにあらかじめ割り当てられている Azure Policy です。
特にキーとなるのが、次のような名前のポリシー(ポリシー定義)です。
- Allowed resource deployment regions
- 日本語 UI では「リソースのデプロイを許可されるリージョン」などと表示されることがあります
このポリシーには、「このサブスクリプションでは、リソースを作成してよいリージョンの一覧」がパラメータとして設定されています。例えば、次のようなイメージです。
| 項目 | 内容 |
|---|---|
| 対象サブスクリプション | Azure for Students のサブスクリプション ID |
| ポリシー名 | Allowed resource deployment regions |
| Allowed locations | japaneast, japanwest, eastasia など、数個程度 |
| 制限の影響範囲 | VM、VNet、NSG、NIC、Public IP、Disk など、ほぼすべてのリージョン指定リソース |
ポイントは次の通りです。
- サブスクリプションごとに許可リージョンの組み合わせが異なる(5前後のことが多い)
- ユーザー側からポリシーを変更することは原則できない
- ポリシーで許可されていないリージョンへの すべての新規作成要求 が
RequestDisallowedByAzureで拒否される
つまり、「自分のサブスクリプションでどのリージョンが許可されているか」を特定し、その中から選んでデプロイすれば、このエラーは解消できます。
ポータルで許可リージョンを確認する手順
まずは、Azure ポータルから自分の Azure for Students サブスクリプションに設定されている許可リージョンを確認してみましょう。
- Azure ポータルにサインインする
- 左メニューから 「ポリシー(Policy)」 を開く
- 「作成(Authoring)」→「割り当て(Assignments)」 を選択
- 一覧の中から 「Allowed resource deployment regions」 または似た名前のポリシーを探してクリック
- 詳細画面で 「パラメーター(Parameters)」 タブを開く
- 「Allowed locations」や「listOfAllowedLocations」 などの項目に、許可されているリージョンが配列として表示される
このときに表示されるリージョンだけが、そのサブスクリプションで VM や VNet などを作成できる場所になります。
| よく表示されるパラメータ名 | 意味 |
|---|---|
Allowed locations | 許可されるリージョン一覧(UI 用の表示名) |
listOfAllowedLocations | 内部的に使われるパラメータキー名 |
value | ["japaneast","japanwest","eastasia", ...] のような配列値 |
ここに載っていないリージョン(例:eastus や westeurope)へは、どれだけ試しても RequestDisallowedByAzure で拒否されます。
許可リージョンでリソースグループと VM を作成する手順(最短ルート)
許可リージョンが分かったら、あとはそのリージョンに合わせてリソースグループと VM を作るだけです。ここでは例として japaneast が許可されていると仮定します。
1. 許可リージョンでリソースグループを作成
az group create -n my-rg -l japaneast
-nはリソースグループ名(例:my-rg)-lはリージョン。必ず許可されているリージョンを指定します
2. 同じリージョンで VM を作成
az vm create \
-g my-rg -n my-vm \
--image Ubuntu2204 \
--size Standard_B1s \
--admin-username azureuser \
--generate-ssh-keys \
--location japaneast
--location を省略すると、既存の RG がある場合は リソースグループのリージョン が自動的に使われます。今回は RG 自体が japaneast なので、省略しても問題ありませんが、明示的に書いておくと「どこにデプロイされるか」が分かりやすくなります。
このコマンドを実行すると、次のようなリソースが すべて japaneast に作成されます。
- Virtual Machine(VM)本体
- Virtual Network(VNet)
- Subnet
- Network Security Group(NSG)
- Network Interface(NIC)
- Public IP アドレス
- Managed Disk(OS ディスク)
いずれも Allowed locations に含まれるリージョンなので、RequestDisallowedByAzure エラーは発生せず、正常にデプロイできるようになります。
CLI から許可リージョンを確認する方法(補足)
Azure ポータルが使いづらい、あるいは Cloud Shell 上で完結させたい場合は、Azure CLI からポリシーを確認することも可能です。
1. ポリシー割り当てを一覧表示
az policy assignment list -o table
ここで、Allowed resource deployment regions などの名前を持つエントリを探し、その Name または Id を控えます。
2. 対象ポリシーの詳細を確認
控えた ID を使って詳細を表示します。
az policy assignment show \
--name "Allowed resource deployment regions" \
--query "parameters"
あるいは ID を使う場合:
az policy assignment show \
--id <assignment-id> \
--query "parameters"
出力結果の中に、たとえば次のような JSON が含まれているはずです。
{
"listOfAllowedLocations": {
"value": [
"japaneast",
"japanwest",
"eastasia"
]
}
}
この配列が、そのサブスクリプションで使えるリージョンの一覧になります。VM 作成時の --location や az group create の -l には、ここに載っているリージョンだけを指定するようにしましょう。
よくある勘違い・ハマりポイント
RequestDisallowedByAzure 周りで特に多い落とし穴を整理しておきます。エラーの原因を見極めるのに役立ちます。
| パターン | 症状 | 対処 |
|---|---|---|
| RG の場所が禁止リージョン | VM は許可リージョンを指定したつもりでも、 実際には RG のリージョンに引きずられてエラー | RG 自体を許可リージョンで作り直す、--location を明示する |
| 容量エラーとの混同 | OperationNotAllowed や AllocationFailed なのに、RequestDisallowedByAzure と勘違い | メッセージ内のエラーコードを確認し、 クォータや在庫不足でないか切り分ける |
| ポリシー未確認のままメジャーリージョンを選択 | 「eastus だから大丈夫だろう」と思い込んでエラー連発 | 必ず Allowed locations を確認し、 リストにあるリージョンのみを使用 |
エラーがポリシー由来かどうかを見分けるコツ
- エラーコードに
RequestDisallowedByAzureとあれば、高確率で Azure Policy が原因 - メッセージ内に policy や compliance、not allowed in this region などの文言が登場する
- 同じ VM サイズ・構成でも、許可リージョンに変えるとすんなり通る
逆に、次のようなエラーコードの場合は、ポリシーではなく 別の問題(クォータ・在庫不足・パラメータ不正など) を疑うのがよいです。
OperationNotAllowedSkuNotAvailableAllocationFailed
リージョン制限は申請で緩和できる?
「教育目的なので、研究に必要なリージョンを追加で開けてほしい」と考える方も多いですが、個人の Azure for Students サブスクリプションに関しては、一般的に次のような前提になっています。
- ポリシーはあらかじめ定義されたテンプレートが適用されており、ユーザー側で変更できない
- Microsoft 側に個別に申請してポリシーを緩和してもらう運用は想定されていない
- リージョン制約を自由に変更したい場合は、別のサブスクリプション(従量課金など)を用意する必要がある
大学などの教育機関で Azure for Students for Institutions のような形で一括管理されているケースでは、組織の IT 管理者がポリシーを調整している可能性もあります。その場合は、Azure 管理者や教員に「このリージョンがどうしても必要」という形で相談する価値はあります。
しかし、多くの個人利用の Azure for Students では、リージョン制限は「変更不可の前提条件」と考えた方が現実的です。そのうえで、許可されたリージョンの中でどう設計するか、という視点に切り替えましょう。
Azure for Students での学習をスムーズにする設計のコツ
リージョン制限を前提にしても、工夫次第でかなり快適に学習できます。いくつかのポイントを紹介します。
1. 「学習用ベース RG」を 1 つ決める
- Allowed locations の中から、メインで使うリージョンを 1 つ決める(例:
japaneast) - そのリージョンに
study-rgのような学習用リソースグループを作成 - 基本的にはすべてその RG にまとめることで、「どこに何を作ったか」を見失いにくくする
例:
az group create -n study-rg -l japaneast
2. スクリプトやテンプレートでリージョンを変数化する
毎回 --location にリージョン名を手打ちすると、タイプミスや指定忘れが起きやすくなります。学習用のシェルスクリプトや ARM/Bicep テンプレートを用意し、リージョンを変数としてまとめて管理すると便利です。
#!/usr/bin/env bash
REGION=japaneast
RG=study-rg
az group create -n ${RG} -l ${REGION}
az vm create \
-g ${RG} -n demo-vm \
--image Ubuntu2204 \
--size Standard_B1s \
--admin-username azureuser \
--generate-ssh-keys \
--location ${REGION}
こうしておけば、将来サブスクリプションが変わり Allowed locations が変わっても、REGION 変数を 1 箇所直すだけで済みます。
3. リソースの「消し忘れ」を防ぐ
Azure for Students ではクレジットが限られているので、VM を立ち上げっぱなしにしない工夫も大切です。
- 検証が終わったら リソースグループごと削除する習慣をつける
- 夜間は
az vm deallocateやポータルから停止しておく - 「毎日授業後にリソースグループを確認する」などのルールを自分なりに決める
これはリージョン制限とは直接関係ありませんが、「許可リージョン内で最低限のリソースをコンパクトに管理する」という意味で重要なポイントです。
トラブルシューティング用チェックリスト
最後に、「VM が作れない」ときに確認しておきたいチェック項目をまとめておきます。
| チェック項目 | 確認方法 | OK でなければ |
|---|---|---|
エラーコードは RequestDisallowedByAzure か | エラーメッセージの code フィールドを確認 | 別のコードなら、ポリシー以外の問題を疑う |
| Allowed locations を把握しているか | ポータルのポリシー画面、またはaz policy assignment show | 一覧を確認し、メモしておく |
| RG のリージョンは許可リージョンか | az group show -n <RG名> --query location | 禁止リージョンなら RG を作り直す |
VM 作成時の --location は RG と同じか | コマンド履歴・スクリプトを確認 | RG と同じ許可リージョンに揃える |
| クォータや SKU の在庫不足ではないか | エラーメッセージに quota や AllocationFailed がないか | 同リージョン内で別 SKU を試す、 クォータ増加申請を検討 |
まとめ:Azure for Students では「許可リージョン」を起点に設計する
Azure for Students で VM 作成時に発生する RequestDisallowedByAzure エラーは、難しく考える必要はありません。その正体は、サブスクリプションに紐づく Azure Policy によるリージョン制限です。
- Azure for Students では、サブスクリプションごとに 数個の「許可リージョン」 のみが利用可能
- ポータルまたは CLI から 「Allowed resource deployment regions」ポリシー を確認し、Allowed locations を特定する
- 許可リージョンでリソースグループを作り、同じリージョンで VM・ネットワーク一式を作成 すればエラーは解消
- ポリシー自体は学生サブスクリプションからは変更できないため、制約前提で設計するのが現実的
- より自由な環境が必要な場合は、従量課金サブスクリプションなど別の契約を検討する
一見すると不便に感じるかもしれませんが、「許可リージョンを起点に環境を設計する」ことを覚えておくと、Azure for Students でも十分に実践的なクラウド学習が可能です。エラーに悩まされて時間を失う前に、自分のサブスクリプションのポリシーを一度確認してみてください。

コメント