寒月

Microsoft Azure のことかポエムをつぶやきます。

Azure App Service に設定した Web ジョブを停止したい

こんにちは。

Azure App Service で設定しできる Web ジョブには、「継続的 Web ジョブ」と「トリガーされる Web ジョブ」があります。

しかし、スケジュールでトリガーされた Web ジョブを Azure Portal 上で実行されないように停止するボタンは存在しません。また、 App Service インスタンスを停止しても Web ジョブは実行されてしまいます。

移行作業や開発工程で、一時的に Web ジョブが実行されないようにしたい場合もありますよね?

そんな時に、 App Service に構成された スケジュールでトリガーされた Web ジョブの実行を停止する方法を紹介します。

アプリケーション設定に WEBJOBS_DISABLE_SCHEDULE を追加することで、すべての「スケジュールでトリガーされた Web ジョブ」の実行を停止できる

アプリケーション設定に "WEBJOBS_DISABLE_SCHEDULE": 1 を追加することで、スケジュールでトリガーされた Web ジョブの実行を停止することが可能です。

再度 Web ジョブが実行されるようにしたい場合は、アプリケーション設定で WEBJOBS_DISABLE_SCHEDULE0 に変更するか、削除することで Web ジョブが再度実行されるようになります。

特定の「スケジュールでトリガーされた Web ジョブ」を停止する方法

App Service に複数の「スケジュールでトリガーされた Web ジョブ」が設定されている場合、上記の方法ではすべての Web ジョブが停止されます。

特定の Web ジョブのみを実行されないようにしたい場合は、 Kudu サイトから settings.job ファイルを編集します。

  1. Azure Portal の [高度なツール] ブレードから Kudu サイトにアクセスします。

  2. Kudu サイトにアクセスしたら、 [Debug console] > [CMD] に移動します。
    ※ 1 を飛ばして、直接 https://{App Service 名}.scm.azurewebsites.net/DebugConsole からアクセスすることもできます。

  3. \site\wwwroot\App_Data\jobs\triggered\{Web Job 名}\settings.job の左にある [鉛筆ボタン] でファイルを編集します。

  4. ファイル内に CRON 式が記載されていますので、一時的に削除するか実行されないルールに編集することで Web ジョブの実行を停止できます。

まとめ

  • すべての「スケジュールでトリガーされた Web ジョブ」の実行を停止したい場合は、アプリケーション設定に "WEBJOBS_DISABLE_SCHEDULE": 1 を追加する
  • 特定の「スケジュールでトリガーされた Web ジョブ」の実行を停止したい場合は、 Kudu サイト等から \site\wwwroot\App_Data\jobs\triggered\{Web Job 名}\settings.job を編集する。

docs.microsoft.com