読者です 読者をやめる 読者になる 読者になる

しばやん雑記

ASP.NET とメイドさんが大好きなフリーランスのプログラマーのブログ

Azure Web Apps を完全に停止させる方法と Azure WebJob Dashboard 実行ログの初期化

Azure ポータルから Web Apps の停止ボタンを押しても、実際に停止しているのフロントのワーカープロセスだけで、Kudu や WebJobs が動いている SCM サイトは動き続けています。

実際に Web App を停止しても Kudu には自由にアクセスすることが出来ます。

f:id:shiba-yan:20160617230956p:plain

しかし、完全に WebJobs の実行を止めたい場合には、停止ボタンが役に立たないので WebJobs 自体を削除していた人も、ひょっとしたら居るのではないでしょうか。

実際に私は WebJobs を消していましたが、あまりにもめんどくさいの調べてみると、SCM サイトを完全に止める方法が Wiki に記載されていました。

Full stopping a Web App · projectkudu/kudu Wiki · GitHub

完全に止めるためには、まずポータルからフロントを停止させた後に Resource Explorer を使って、該当のサイトの scmSiteAlsoStopped を true に設定します。

f:id:shiba-yan:20160617231444p:plain

保存した後に Kudu を開いてみると 403 になっていることが確認できます。当然ながら SCM 側が停止しているので、同時に全ての WebJobs が停止することになります。

f:id:shiba-yan:20160617231608p:plain

再開したい場合には、ポータルから Web App の起動ボタンを押すだけで SCM 側も同時に立ち上がります。

ポータルの表示は Kudu の API を叩いている部分があるので、SCM 側が完全に停止していると依存している機能の表示がエラーになったりすると思います。

WebJobs 実行ログの初期化

ここまでで WebJobs を完全に停止することが出来るようになったので、Azure WebJob Dashboard の実行ログを初期化したいと思います。テスト完了後とかに消したい時があります。

実行ログ自体は設定したストレージアカウントに保存されるので、これを消せばログは消えるのですが、WebJobs が実行中に消してしまうとデータが破損して表示がおかしくなります。

f:id:shiba-yan:20160617231921p:plain

実際に WebJobs が動作中に消してしまったことがありますが、Dashboard から警告が消えなかったり、Never Finished なジョブが残ったりと不具合が発生しました。

なので、上の方法で SCM 側を完全に止めてしまってから、Blob Container を削除しましょう。