Azure for Studentsでリージョン制限エラー(RequestDisallowedByAzure)を解決する方法|Allowed locations確認手順

Azure for Students(学生向けサブスクリプション)でストレージアカウントやApp Serviceなどをデプロイしようとしたとき、RequestDisallowedByAzure や InvalidTemplateDeployment が出て先に進めないことがあります。これは多くの場合、サブスクリプションに割り当てられた Azure Policy(Allowed locations / 許可されている場所) が原因です。この記事では、自分のサブスクリプションで使えるリージョンの確認方法と、確実にデプロイを通す手順をまとめます。

目次

Azure for Studentsで起きる「リージョンエラー」の典型例

以下のような状況に心当たりがあれば、今回の話にほぼ当てはまります。

状況よくある操作結果
ストレージアカウントを作成したいEast US / West Europe / India など複数リージョンを試すどこを選んでも同じエラーで失敗
ARMテンプレート / Bicep でデプロイしたいlocation に eastus や westeurope を指定InvalidTemplateDeployment で落ちる
ポータルで作ると「推奨リージョンのみ」っぽいメッセージが出る別リージョンに変えてリトライ結局すべてNG

エラー画面では次のようなキーワードが見えることが多いです。

RequestDisallowedByAzure
InvalidTemplateDeployment
Policy: Allowed locations / 許可されている場所
このサブスクリプションでは推奨リージョンのみ利用可能
ポリシーにより要求が拒否された

結論:Azure for Studentsは「利用可能リージョンがサブスクリプション単位で制限」される

Azure for Studentsでは、デプロイ可能なリージョンが最初から一部に絞られていることがあります。ここが重要で、許可されているリージョンはすべての学生サブスクリプションで共通ではありません。

  • 「Aさんの環境で使えたリージョン」をそのまま真似しても、あなたのサブスクリプションでは拒否されることがあります。
  • 許可リージョンは Azure Policy の Allowed locations(許可されている場所) で指定されていることが多いです。
  • このポリシーは通常、受講者側で勝手に無効化・変更できません(権限がありません)。

したがって解決の最短ルートは、「自分のサブスクリプションで許可されているリージョン一覧」を特定して、その中から location を選ぶことです。

なぜ全リージョンを試してもダメになるのか(エラーの仕組み)

RequestDisallowedByAzure は、Azureが「そのリクエストは受け付けられない」と判断してブロックしたときに出やすいエラーです。学生サブスクリプションでは、その判断理由がAzure Policy(組織・教育プログラム側で設定されたルール)になっているケースがよくあります。

エラー意味このケースで多い原因
RequestDisallowedByAzure要求がAzure側で拒否されたAllowed locations ポリシー違反(許可外リージョン)
InvalidTemplateDeploymentテンプレートデプロイが失敗した(包括的エラー)内部の詳細に Policy 違反が含まれている

つまり「East USがダメならWest US」ではなく、許可リストにない限り全部ダメという状態になり得ます。

最短で解決する流れ

やることはシンプルで、次の順番が一番早いです。

手順やることゴール
確認Azure Policy「Allowed locations(許可されている場所)」の割り当てを探す許可リージョン一覧を把握
選択許可一覧に含まれるリージョンだけでリソース作成するデプロイ成功
再発防止テンプレートやスクリプトで location の指定ミスを防ぐ次回からハマらない

Azure ポータルで「Allowed locations」ポリシーから許可リージョンを確認する

まずはポータルで確認するのが確実です。画面表示は日本語/英語で多少異なりますが、見るポイントは同じです。

  1. Azure ポータルにサインインします。
  2. 左上の検索(またはメニュー)から 「ポリシー」(Azure Policy)を開きます。
  3. 左側メニューの 「作成(Authoring)」 を開き、「割り当て(Assignments)」 を選びます。
  4. 一覧から、名前に Allowed locations または 許可されている場所 / ロケーション / 場所 が含まれる割り当てを探してクリックします。
  5. 割り当ての詳細画面で 「パラメーター(Parameters)」 を確認します。
  6. listOfAllowedLocations(または「許可されている場所」)の値として、利用可能なリージョン(location code)の一覧が表示されます。

ポータルの項目名が分かりづらい場合は、次の対応表が参考になります。

日本語UI英語UI見る目的
ポリシーPolicyポリシー管理画面に入る
作成Authoring割り当てや定義を確認する
割り当てAssignmentsサブスクリプションに適用されているルール一覧
パラメーターParameters許可リージョン(Allowed locations)の中身
スコープScopeどの範囲(サブスクリプション等)に適用されているか

「Allowed locations」が見つからない・候補が多すぎるときの探し方

割り当てが大量に出る環境や、名称が少し違う環境もあります。次の観点で絞り込むと見つけやすくなります。

  • スコープが自分のサブスクリプションになっているか(管理グループ配下の割り当ても混ざることがあります)。
  • 「Allowed locations」単体ではなく、イニシアチブ(Initiative)としてまとめられている場合があります。その場合もパラメーターに許可リージョンが入っていることがあります。
  • 名前に「推奨」「学生」「Education」「限定」などが含まれることもあります。
よくある状態見え方対処
イニシアチブ配下で制限Allowed locations が単体で出ない割り当ての種類や詳細を開き、Parametersを探す
名称がカスタムAllowed locations という名前ではない「場所/ロケーション/Location」系の文言で当たりを付ける
複数の割り当てが存在似た名前が複数出るスコープとパラメーターを見比べ、実際に listOfAllowedLocations があるものを特定

ポータルで許可リージョン一覧が確認しづらい場合の代替手段

ポリシー画面で一覧が見えない、あるいは「どの値が許可リージョンか分からない」場合は、次の方法も有効です。

デプロイ失敗画面の「詳細(Raw error)」から許可リージョン情報を拾う

ARMテンプレートやポータル作成で失敗したとき、エラー詳細にポリシー違反の情報がJSONで含まれることがあります。環境によっては、その中に許可リージョンが見える場合があります。

{
  "error": {
    "code": "RequestDisallowedByAzurePolicy",
    "message": "Resource 'xxx' was disallowed by policy.",
    "details": [
      {
        "policyDefinitionDisplayName": "Allowed locations",
        "policyAssignmentDisplayName": "Allowed locations",
        "parameters": {
          "listOfAllowedLocations": {
            "value": ["norwayeast", "polandcentral"]
          }
        }
      }
    ]
  }
}

ポイントは、policyDefinitionDisplayName や policyAssignmentDisplayName に Allowed locations(許可されている場所)が出ているか、そして parameters の中に listOfAllowedLocations があるかです。

Azure CLIで「Allowed locations」の許可リージョン一覧を取得する

CLIが使える場合、ポリシー割り当てから許可リージョンをテキストで抜き出せます。以下は、listOfAllowedLocations を持つ割り当てを対象に、許可リージョンだけを出力する例です。

az policy assignment list \
  --subscription <YourSubscriptionId> \
  --query "[?parameters.listOfAllowedLocations.value!=null].parameters.listOfAllowedLocations.value[]" \
  -o tsv
  • <YourSubscriptionId> は自分のサブスクリプションIDに置き換えます。
  • 出力される norwayeast のような値(location code)が、そのサブスクリプションで選べる候補になります。

割り当てが複数あって混乱する場合は、まず「どの割り当てが許可リージョンを持っているか」を見える化すると分かりやすいです。

az policy assignment list \
  --subscription <YourSubscriptionId> \
  --query "[?parameters.listOfAllowedLocations.value!=null].{name:name, displayName:displayName, allowed:parameters.listOfAllowedLocations.value}" \
  -o table

「使えるリージョン一覧」を整理する考え方(全リージョンとの違い)

質問でよくあるのが「使えるリージョン一覧を取得したい」というものですが、ここには2種類あります。

一覧の種類何が分かるかコマンド例注意点
Azureが提供する全リージョン一般的に存在するlocation一覧az account list-locations -o table学生サブスクリプションで「使える」とは限らない
自分のサブスクリプションで許可されたリージョンAllowed locationsポリシーで許可されている場所az policy assignment list ...これが「実際にデプロイに使える候補」

実務的には、Allowed locationsで許可された一覧を正として扱うのが安全です。

「リージョン名」の落とし穴:表示名とlocation codeの違い

もう一つハマりやすいのが、同じリージョンでも表記が複数ある点です。ポータルでは「East US」のような表示名、テンプレートやCLIでは eastus のようなlocation codeを使います。

見える場所例使う場面
ポータルの表示名East US / West EuropeGUIでリージョンを選ぶ
location code(内部名)eastus / westeuropeARMテンプレート、Bicep、CLI、PowerShell

Allowed locations のパラメーターに出てくるのは、基本的に location code です。テンプレート側も同じ表記に揃える必要があります。

ARMテンプレート / Bicepで「許可リージョン外」を防ぐ実装例

授業や演習でテンプレートを使い回す場合、locationの指定を固定していると、別サブスクリプションでは即死します。そこで、locationをパラメーター化し、さらに(分かっている範囲で)候補を絞るのが有効です。

Bicepの例(locationをパラメーター化)

下記は考え方のサンプルです。Allowed locations で許可された値に合わせて、@allowed の中身はあなたの環境に合わせて更新してください。

@description('デプロイ先リージョン(Allowed locations に含まれるものを指定)')
@allowed([
  'norwayeast'
  'polandcentral'
  'spaincentral'
  'switzerlandnorth'
])
param location string

@description('ストレージアカウント名(英小文字と数字のみ、3-24文字)')
param storageAccountName string

resource stg 'Microsoft.Storage/storageAccounts@2023-01-01' = {
  name: storageAccountName
  location: location
  sku: {
    name: 'Standard_LRS'
  }
  kind: 'StorageV2'
  properties: {
    accessTier: 'Hot'
  }
}

Allowed locations の値がまだ確定していない場合は、@allowed を使わず「まずは通す」ことを優先し、運用で“許可リスト内しか使わない”ルールにするのも現実的です。

テンプレートでlocationを固定してはいけないパターン

テンプレートの書き方何が起きるか改善案
location: 'eastus' のように固定eastus が許可されていないサブスクリプションでは必ず失敗location をパラメーターにして、環境ごとに選べるようにする
リソースグループのlocationに合わせずバラバラポリシーだけでなく運用上も管理が難しくなる基本は resourceGroup().location を採用しつつ、ポリシーに合わせてRGを作る

それでも失敗するときに見るチェックポイント

Allowed locations を確認してもなお失敗する場合、原因が「リージョン」以外にあることもあります。以下のチェックリストで切り分けると早いです。

チェック項目よくあるミス確認方法対処
指定したlocationが許可リストにあるか表示名(East US)をテンプレートに書いてしまうAllowed locationsの値と完全一致しているかテンプレート/CLIは location code(例:eastus)で統一
別のポリシーにも引っかかっていないか場所以外の制限(SKU、種類、タグ必須など)Raw error の policyDefinitionDisplayName を確認該当ポリシーに合わせてテンプレートを修正
リソースの種類が“リージョン対応”かサービス自体がそのリージョンに未対応エラー詳細で「サービス利用不可」系がないか許可リージョンの中で対応しているリージョンに切り替える
複数リソースでlocationが混在していないかテンプレート内で一部だけ別リージョンテンプレート内の location を検索locationパラメーターに一本化
サブスクリプションを取り違えていないか別のサブスクリプションにデプロイしているポータル上部やCLIの current subscription を確認正しいサブスクリプションに切り替える

実務的なおすすめ運用(学生環境でハマらないための型)

演習・学習では「とりあえず作って動かす」が優先になりがちですが、学生サブスクリプション特有の制限がある以上、最初に“型”を作っておくと後が楽です。

タイミングやること狙い
初回(環境を触り始める日)Allowed locations を確認してメモする無駄な試行錯誤をゼロにする
リソースグループ作成時許可リージョンのいずれかでRGを作る以降のデプロイの基準点を揃える
テンプレート化するときlocationは必ずパラメーター化環境差分を吸収する
エラーが出たときRaw error を先に見る原因(ポリシー名)を最短で特定する

どうしても別リージョンを使いたい場合の現実的な選択肢

Allowed locations が厳しく、演習内容によっては「そのリージョンだとサービスが使えない」「先生の指定リージョンが選べない」ということも起こります。その場合は、次のいずれかを検討することになります。

  • 通常の有料サブスクリプション(従量課金)を用意して、リージョン制限のない環境で実行する(ただし課金に注意)。
  • 授業・組織側で提供している別の学習用サブスクリプション(ラボ環境など)がないか確認する。
  • 制限は自分で外せないため、必要であれば管理者・サポート窓口に相談する(ただし学生向け環境では変更不可の場合もあります)。

いずれにしても、まずは「自分のサブスクリプションで許可されているリージョン」を把握するのがスタート地点です。

よくある質問

Azure for Studentsだと、どのリージョンが使えますか?

サブスクリプションごとに異なるため、一般論として「このリージョンなら必ず使える」と断言できません。Azure Policy の Allowed locations(許可されている場所) に並んでいる location code が、そのサブスクリプションの“使えるリージョン”です。

Allowed locations(許可されている場所)ポリシーの制限内容はどこで確認できますか?

Azure ポータルの ポリシー → 割り当て → Allowed locations(またはそれに相当する割り当て) を開き、Parameters の listOfAllowedLocations を確認します。

使えるリージョン一覧を取得する方法は?

一番正確なのはポリシー割り当てから取得する方法です。CLIが使えるなら、az policy assignment list で listOfAllowedLocations を抽出するのが簡単です。Azure全体のリージョン一覧(az account list-locations)は“存在するリージョン”であって“許可されているリージョン”ではない点に注意してください。

まとめ:解決の要点

  • Azure for Studentsでリージョンが通らないときは、Azure Policy(Allowed locations)が原因になっていることが多いです。
  • 許可されるリージョンはサブスクリプションごとに異なるため、他人の例をそのまま当てにしないのが安全です。
  • ポータル(Policy AssignmentsのParameters)またはAzure CLI(az policy assignment list)で許可リージョン一覧を確認し、その中から location を選べば解決に近づきます。

この記事を書いた人

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

コメント

コメントする

目次