Azure for StudentsでRequestDisallowedByAzureエラーが出てVMをデプロイできない原因と解決策まとめ

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 locationsjapaneast, japanwest, eastasia など、数個程度
制限の影響範囲VM、VNet、NSG、NIC、Public IP、Disk など、ほぼすべてのリージョン指定リソース

ポイントは次の通りです。

  • サブスクリプションごとに許可リージョンの組み合わせが異なる(5前後のことが多い)
  • ユーザー側からポリシーを変更することは原則できない
  • ポリシーで許可されていないリージョンへの すべての新規作成要求 が RequestDisallowedByAzure で拒否される

つまり、「自分のサブスクリプションでどのリージョンが許可されているか」を特定し、その中から選んでデプロイすれば、このエラーは解消できます。

ポータルで許可リージョンを確認する手順

まずは、Azure ポータルから自分の Azure for Students サブスクリプションに設定されている許可リージョンを確認してみましょう。

  1. Azure ポータルにサインインする
  2. 左メニューから 「ポリシー(Policy)」 を開く
  3. 「作成(Authoring)」→「割り当て(Assignments)」 を選択
  4. 一覧の中から 「Allowed resource deployment regions」 または似た名前のポリシーを探してクリック
  5. 詳細画面で 「パラメーター(Parameters)」 タブを開く
  6. 「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 サイズ・構成でも、許可リージョンに変えるとすんなり通る

逆に、次のようなエラーコードの場合は、ポリシーではなく 別の問題(クォータ・在庫不足・パラメータ不正など) を疑うのがよいです。

  • OperationNotAllowed
  • SkuNotAvailable
  • AllocationFailed

リージョン制限は申請で緩和できる?

「教育目的なので、研究に必要なリージョンを追加で開けてほしい」と考える方も多いですが、個人の 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 でも十分に実践的なクラウド学習が可能です。エラーに悩まされて時間を失う前に、自分のサブスクリプションのポリシーを一度確認してみてください。

この記事を書いた人

実務の現場で詰まりがちなポイントを地図にするITブログ「IT trip」を運営。Windows/Office(Teams・Excel)からSQL、サーバ運用、ガジェットまで、再現性のある手順と“なぜそうなるか”を丁寧に解説します。読んだらすぐ試せること、そして迷った人の次の一歩が見えることを大切にしています。

コメント

コメントする

目次