AzurePaaS研究サイト

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

AppService/Functions で使うリソースグループを理解する

 
Azure では、リソースグループというものがあって、作成したリソースをいずれかのリソースグループに登録する必要があります。
f:id:nanacy7741:20210429115921p:plain
 
 
以下のように、複数のリソースがグルーピングされます。
f:id:nanacy7741:20210429120011p:plain
 
 
 
リソースグループはサブスクリプションの中に複数存在するもので、App Service や Function などのリソースを作るときの、必須項目です。
 
 
たとえば、以下のように開発プロジェクトで決めたまとまり単位にグループ分けをしたりします。
● 本番用
● ステージング用
● 試験用
● 機能A用
 
 
 
と、、、どのサイトにも書いてあることを書いててもしょうがないので、あまり知られてないであろう情報を書きます。
 
 

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

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

リソースグループ名は 日本語 にもできますが、すべて英名が推奨です。
 
リソースグループ名が、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

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

blog.shibayan.jp

 

LinuxOS の Functions(関数アプリ)の従量課金プランの作成

 
LinuxOS の Functions(関数アプリ)の従量課金プランの作成を作成する場合は、AppServiceプランが含まれてるリソースグループには作れない、という制限があります。
 
github.com

 
以上です。
 

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