AzurePaaS研究サイト

Azure研究サイト

~理解しずらい情報をシンプルにお伝えします~

Azureの各サービスで出てくるリソースグループとは

リソースグループとは

まず「リソース」という単語がよくわからない方はそこから確認してください。普段の仕事で「リソースをかける」というと「人の時間を使って何かをやってもらう」「資源を使って何かをやる」などというときに使うと思いますが、Azure上のリソースとは、例えばAzureVM画面で新規作成するとできるもののことをリソースと呼びます。
 
Azureでは新規作成するリソースを、いずれかのリソースグループに所属させる必要があります。リソースグループもAzureサービスの一つとして存在していて、私は新しいプロジェクト・案件・タスクを始める際に、リソースグループ画面の「+作成」からまず一つ作ってリソースを新規作成するたびにそのリソースグループを指定して所属させていっています。
 

 
 
リソースグループは、以下のように複数リソースをグルーピングするための仕組みです。
 

 
 
 
AppServiceやFunctionsなどのAzureリソースを作るときの必須項目で、以下のように開発プロジェクトで決めたまとまり単位にグループ分けをしたりします。

  • 本番用
  • ステージング用
  • ○○試験用
  • ○○機能用

 
 

関連リソースを簡単に一括削除できる

一つのリソースグループを削除すると、リソースグループに所属しているすべてのリソースが削除されます。ですので、Azureリソースを作成するときは、どのリソースグループに所属させるかを慎重に選択することで、削除漏れがなくなります。ちなみにAWSはリソースグループのような仕組みはないようなので、この辺りはAzureの方が使いやすく感じるポイントの1つです。
 
 
一般的な話はこれくらいにして、あまり知られてないであろう情報を書きます。
 
 

リソースグループのあるあるエラー事例

リソースグループ名は半角英数字が推奨

リソースグループ名に日本語も使えますが、すべて英名を推奨します。
リソースグループ名が、Azure のサーバパスに使われることがあるため、日本語は控えた方がよいということです。
※ マウント手順は正しいのにlsコマンドで確認しても、Storageが表示されない(マウントされない)という経験があり、マウントする際にazコマンドが実行されるので、日本語が入っているとうまく動作してくれなかったようです。

既存リソースグループが割当済みスタンプに適用できない

 
エラーメッセージ ー パターン1

{'code':'InvalidTemplateDeployment','message':'テンプレート デプロイ 'Microsoft.Web-FunctionApp-Portal-(省略)' は、検証プロシージャによって無効と判断されました。
追跡 ID は '(省略)' です。詳細については、内部エラーを参照してください。
','details':[{'code':'ValidationForResourceFailed','message':'Validation failed for a resource. 
Check 'Error.Details[0]' for more information.','details':[{'code':'LinuxWorkersNotAllowedInResourceGroup','message':'Linux workers are not available in resource group xxx. Use this link to learn more https://go.microsoft.com/fwlink/?linkid=(省略)'}]}]}  

 
エラーメッセージ ー パターン2

Starting template validation.
Deployment name is xxxxx
There were errors in your deployment. Error code: InvalidTemplateDeployment.
##[error]The template deployment 'xxxxx' is not valid according to the validation procedure. The tracking id is 'xxxxx'. See inner errors for details.
##[error]Details:
##[error]ValidationForResourceFailed: Validation failed for a resource. Check 'Error.Details[0]' for more information. [{'code':'LinuxDynamicWorkersNotAllowedInResourceGroup','message':'Linux dynamic workers are not available in resource group "該当リソースグループ名". Use this link to learn more http://go.microsoft.com/fwlink/?LinkId=825764.'}]
##[warning]Validation errors were found in the Azure Resource Manager template. This can potentially cause template deployment to fail. Task failed while creating or updating the template deployment.. Please follow https://docs.microsoft.com/en-us/azure/azure-resource-manager/templates/template-syntax
Starting Deployment.
Deployment name is xxxxx
There were errors in your deployment. Error code: InvalidTemplateDeployment.
##[error]The template deployment 'xxxxx' is not valid according to the validation procedure. The tracking id is 'xxxxx'. See inner errors for details.
##[error]Details:
##[error]ValidationForResourceFailed: Validation failed for a resource. Check 'Error.Details[0]' for more information. [{'code':'LinuxDynamicWorkersNotAllowedInResourceGroup','message':'Linux dynamic workers are not available in resource group "該当リソースグループ名". Use this link to learn more http://go.microsoft.com/fwlink/?LinkId=825764.'}]
##[error]Check out the troubleshooting guide to see if your issue is addressed: https://docs.microsoft.com/en-us/azure/devops/pipelines/tasks/deploy/azure-resource-group-deployment?view=azure-devops#troubleshooting
##[error]Task failed while creating or updating the template deployment.

 

  • [原因]: 既存のリソース(リソースグループやAppServiceプラン)に対して、新しく作成しようとした関数アプリの内容が、適用できない内容を含んでいる場合、AppService/Functionsなどのリソースの新規作成時(デプロイ時)にエラーが発生します。

  • [回避策(あまり知られていない情報)]: 関数アプリの新規作成画面で、既存のリソースグループを選ぶのではなく、リソースグループを新規作成すると、選んだプランに適用できるスタンプが適用されてエラーが発生しなくなります。いや・・・どうしてもこのリソースグループに、この関数アプリを作成したいんだ!という場合は、リソースグループは既存のものを選択して、地域(リージョン)を変更してみることでエラー発生が回避できるか試してみてください。

  • [原因の参考サイト]: 英語ページですが、原因について書かれている記事がありましたので貼っておきます。内容理解するのがちょっと難しいかもしれませんが。

github.com

 
AzureMVPのしばやんさんのサイトにもわかりやすく書いてあります。

blog.shibayan.jp

 

LinuxOS Functionsの従量課金プラン作成時の制限事項

LinuxOS Functionsの従量課金プランの作成は、AppServiceプランが含まれてるリソースグループには作れない制限があったりします。
 

github.com

 
以上です。
 

ご意見・ご要望はこちらへ