船井総研デジタルのよもぎたです。
この記事は船井総研デジタルのアドベントカレンダーの3日目の記事です。
昨日は@tuna828の「【8080を使ってるのは誰だ】error [http11protocol] エンドポイントを起動中のエラーです」でした。
明日は@hidekkoの記事の予定です。
よろしければこれらの記事もお読みいただければと思います。
サマリと結論
App Serviceプランを作成する際は、同じリソースグループに所属する既存のApp Serviceプランに制約を受けることがあります。運悪くその条件にあたってしまった場合でも、同じサブスクリプションの別のリソースグループで希望のApp Serviceプランを作成することができます。そして、その後に必要に応じてリソースグループ間でApp Serviceプランを移動することが出来ます。
忘れがちですが、Azure Functionsをプロビジョニングする際にはApp Serviceプランもプロビジョニングされるので、ご注意ください(私はこれでハマりました)。
背景と経緯
Azure FunctionsをAzure Portalからデプロイしようとしたところ、デプロイ直前の「確認と作成」のうちの「確認」プロセスは問題なくて実際に作成が始まるものの、その途中でエラーメッセージを出力してこけました。作成のプロセスで設定する項目を見直しても問題ないように見えます。エラーメッセージは The pricing tier is not allowed in this resource group
と出力されました。
このリソースグループでこの価格tierは許可されていない?なぜ?どうして?となりました。
他のサブスクリプションで同じ手順でAzure Functionsをデプロイしてみたところ、問題なくデプロイできます。サブスクリプションで何か制限があるのかと思い、サブスクリプションの作成者に聞いても、特に心当たりはないとのことでした。
サポートの方に問い合わせさせて頂いたところ、原因と対策は速攻で分かりました。MSのサポートさんデキる!
私の拙い文章で説明するよりは、公式のMS Learnのドキュメントをご覧いただくのが早いです。
私の場合、BasicプランのApp Serviceプランを作成済みのリソースグループに、追加で従量課金の(Azure Functionsのための)App Serviceプランを作成しようとしていたため、制限を受けてしまう条件に合致し、エラーになってしまっていました。
対応
サマリと結論で書いた通り、別のリソースグループに目的のAzure FunctionsとApp Serviceプランを作成し、当初の目的のリソースグループに移動させました。
このときに一時的にAzure FunctionsとApp Serviceプランを作成するリソースグループは、それ専用の一時的なリソースグループを作成するのが良いと思います。そして作成したリソースを当初の目的のリソースグループに移動した後はそのリソースグループを削除してしまうのが紛らわしくなくてよいと思います。
最後に
クラウドを使っているとその背後にあるコンピューティングリソースのことをついつい忘れてしまいますが、今回のことはクラウドの向こうで動いている膨大なハードウェアたちの存在を思い出させてくれるいい機会になりました。
最後までお読みいただきありがとうございました。