Azure App Service で Web ジョブを使用してバックグラウンド タスクを実行する

Azure portal を使用して、実行可能ファイルまたはスクリプトをアップロードするための WebJobs をデプロイします。 バックグラウンド タスクは、Azure App Service で実行できます。

Azure App Service の代わりに Visual Studio 2019 を使用して WebJobs を開発およびデプロイする場合は、「Visual Studio を使用して Web ジョブを展開する」を参照してください。

概要

Web ジョブは、Web アプリ、API アプリ、またはモバイル アプリと同じインスタンスでプログラムやスクリプトを実行できる Azure App Service の機能です。 Web ジョブの使用に追加コストはかかりません。

Azure WebJobs SDK と WebJobs を使用して、多くのプログラミング タスクを単純化できます。 Web ジョブは App Service on Linux ではまだサポートされていません。 詳細については、「 Azure Web ジョブ SDK とは」をご覧ください。

Azure Functions は、プログラムとスクリプトを実行する別の方法を提供します。 Web ジョブと Functions の比較については、「Flow、Logic Apps、Functions、WebJobs の比較」を参照してください。

Web ジョブの種類

次の表で、継続的 Web ジョブと トリガーされる Web ジョブの違いを説明します。

継続的 トリガー
Web ジョブが作成されるとすぐに開始します。 ジョブが終了しないようにするため、プログラムまたはスクリプトは、その動作を無限ループ内で実行します。 ジョブが終了した場合でも、再開することができます。 通常、WebJobs SDK と共に使用されます。 手動またはスケジュールに従ってトリガーされたときにのみ開始します。
Web アプリが実行されているすべてのインスタンスで実行されます。 必要に応じて、Web ジョブを 1 つのインスタンスに制限できます。 Azure が負荷分散用に選択した 1 つのインスタンス上で実行されます。
リモート デバッグをサポートします。 リモート デバッグをサポートしません。
コードは \site\wwwroot\app_data\Jobs\Continuous に配置されます。 コードは \site\wwwroot\app_data\Jobs\Triggered に配置されます。

注意

Web アプリは非アクティブな状態が 20 分続くとタイムアウトになり、実際の Web アプリに対する要求だけがタイマーをリセットできます。 Azure portal でアプリの構成を表示したり、高度なツールのサイト (https://<app_name>.scm.azurewebsites.net) に対して要求を行ったりしても、タイマーはリセットされません。 Web アプリが継続的に実行するようにするか、またはスケジュールに従って実行するか、あるいはイベント ドリブン トリガーを使用するように設定する場合は、Web アプリの Azure 構成 ページで [常にオン] 設定を有効にします。 [常にオン] の設定は、これらの種類の WebJobs が確実に実行されるようにするのに役立ちます。 この機能は、Basic、Standard、および Premium の価格レベルでのみ利用できます。

スクリプトまたはプログラムでサポートされるファイルの種類

次のファイルの種類がサポートされます。

  • .cmd、.bat、.exe (Windows コマンドを使用)
  • .ps1 (PowerShell を使用)
  • .sh (Bash を使用)
  • .php (PHP を使用)
  • .py (Python を使用)
  • .js (Node.js を使用)
  • .jar (Java を使用)

継続的 Web ジョブを作成する

重要

アプリケーションでソース管理が構成されている場合は、ソース管理の統合の一環として Webjobs をデプロイする必要があります。 アプリケーションのソース管理を構成した後、WebJobs を Azure portal から追加することはできません。

  1. Azure ポータルで、App Service Web アプリ、API アプリ、またはモバイル アプリの App Service ページに移動します。

  2. アプリの [App Service] ページの左側のウィンドウで、WebJobs を検索して選択します。

    Web ジョブを選択する

  3. [Web ジョブ] ページで、 [追加] を選択します。

    [Web ジョブ] ページ

  4. [Web ジョブの追加] 設定を、次の表に示されているように入力します。

    構成する必要がある [Web ジョブの追加] 設定を示すスクリーンショット。

    設定 値の例 説明
    名前 myContinuousWebJob App Service アプリ内で一意の名前。 名前は文字または数字で始まる必要があり、"-" と "_" 以外の特殊文字を使用することはできません。
    ファイルのアップロード ConsoleApp.zip 実行可能ファイルまたはスクリプト ファイルと、プログラムまたはスクリプトを実行するために必要な関連ファイルを含む .zip ファイル。 サポートされている実行可能ファイルまたはスクリプト ファイルの種類については、「サポートされるファイルの種類」セクションを参照してください。
    Type 継続的 Web ジョブの種類については、この記事の中で既に説明しています。
    スケール 複数のインスタンス 継続的 Web ジョブでのみ使用できます。 プログラムまたはスクリプトがすべてのインスタンスで実行されるか、1 つのインスタンスだけで実行されるかどうかを決定します。 複数のインスタンスで実行するオプションは、Free または Shared 価格レベルには適用されません。
  5. [OK] を選択します。

    [Web ジョブ] ページに新しい Web ジョブが表示されます。 Web ジョブが追加されたというメッセージが表示されても、表示されない場合は、 [更新] を選択します。

    Web ジョブの一覧

  6. 継続的 Web ジョブを停止または再開するには、一覧の Web ジョブを右クリックし、 [停止] または [開始] を選択します。

    継続的 Web ジョブを停止する

手動でトリガーされる Web ジョブを作成する

  1. Azure portal で、App Services を検索して選択します。

  2. 一覧から Web アプリ、API アプリ、またはモバイル アプリを選択します。

  3. アプリの [App Service] ページの左側のウィンドウで、WebJobs を選択します。

    Web ジョブを選択する

  4. [Web ジョブ] ページで、 [追加] を選択します。

    [Web ジョブ] ページ

  5. [Web ジョブの追加] 設定を、次の表に示されているように入力します。

    手動でトリガーされる Web ジョブを作成するために指定する必要がある設定を示すスクリーンショット。

    設定 値の例 説明
    名前 myTriggeredWebJob App Service アプリ内で一意の名前。 名前は文字または数字で始まる必要があり、"-" と "_" 以外の特殊文字を使用することはできません。
    ファイルのアップロード ConsoleApp.zip 実行可能ファイルまたはスクリプト ファイルと、プログラムまたはスクリプトを実行するために必要な関連ファイルを含む .zip ファイル。 サポートされている実行可能ファイルまたはスクリプト ファイルの種類については、「サポートされるファイルの種類」セクションを参照してください。
    Type トリガー Web ジョブの種類については、この記事で前述のとおりです。
    トリガー マニュアル
  6. [OK] を選択します。

    [Web ジョブ] ページに新しい Web ジョブが表示されます。 Web ジョブが追加されたというメッセージが表示されても、表示されない場合は、 [更新] を選択します。

    Web ジョブトリガーの一覧

  7. Web ジョブを実行するには、一覧でその名前を右クリックし、 [実行] を選択します。

    Web ジョブの実行

スケジュールされた Web ジョブを作成する

スケジュールされた Web ジョブもトリガーされます。 指定するスケジュールでトリガーが自動的に実行されるように、スケジュール設定できます。

  1. Azure portal で、App Services を検索して選択します。

  2. 一覧から Web アプリ、API アプリ、またはモバイル アプリを選択します。

  3. アプリの [App Service] ページの左側のウィンドウで、WebJobs を選択します。

    Web ジョブを選択する

  4. [Web ジョブ] ページで、 [追加] を選択します。

    [Web ジョブ] ページ

  5. [Web ジョブの追加] 設定を、次の表に示されているように入力します。

    [Web ジョブの追加] ページ

    設定 値の例 説明
    名前 myScheduledWebJob App Service アプリ内で一意の名前。 名前は文字または数字で始まる必要があり、"-" と "_" 以外の特殊文字を使用することはできません。
    ファイルのアップロード ConsoleApp.zip 実行可能ファイルまたはスクリプト ファイルと、プログラムまたはスクリプトを実行するために必要な関連ファイルを含む .zip ファイル。 サポートされている実行可能ファイルまたはスクリプト ファイルの種類については、「サポートされるファイルの種類」セクションを参照してください。
    Type トリガー Web ジョブの種類については、この記事の中で既に説明しています。
    トリガー スケジュール スケジュールを確実に動作させるために、Always On 機能を有効にします。 Always On 機能は、Basic、Standard、および Premium の価格レベルでのみ利用できます。
    CRON 式 0 0/20 * * * * CRON 式については、次のセクションで説明します。
  6. [OK] を選択します。

    [Web ジョブ] ページに新しい Web ジョブが表示されます。 Web ジョブが追加されたというメッセージが表示されても、表示されない場合は、 [更新] を選択します。

    Web ジョブの一覧 - スケジュール済み

NCRONTAB 式

NCRONTAB 式は、ポータルで入力するか、settings.job ファイルを Web ジョブの .zip ファイルのルートに含めることができます。例を以下に示します。

{
    "schedule": "0 */15 * * * *"
}

詳細については、「Scheduling a triggered WebJob (トリガーされる Web ジョブのスケジュール設定)」を参照してください。

注意

CRON 式の実行に使用される既定のタイム ゾーンは、協定世界時 (UTC) です。 別のタイム ゾーンに基づいて CRON 式を実行するには、ご使用の関数アプリ用に WEBSITE_TIME_ZONE という名前のアプリ設定を作成します。 詳細については、「NCRONTAB タイムゾーン」を参照してください。

Web ジョブの管理

Azure portal で、サイトで実行されている個々の Web ジョブの実行状態を管理できます。 [設定] > [WebJobs] にアクセスし、[Web ジョブ] を選択するだけで、Web ジョブを開始および停止することができます。 また、Web ジョブを実行する Webhook のパスワードを表示および変更することもできます。

また、1 という値を持つ WEBJOB_STOPPED という名前のアプリケーション設定を追加して、サイトで実行されているすべての Web ジョブを停止することもできます。 これは、ステージング スロットと運用スロットの両方で競合する Web ジョブが実行されないようにするのに便利な方法です。 同様に、1 の値を WEBJOBS_DISABLE_SCHEDULE 設定に使用して、サイトまたはステージング スロットでトリガーされた Web ジョブを無効にすることもできます。 スロットの場合は、設定自体がスワップされないように、 [デプロイ スロットの設定] オプションを必ず有効にしてください。

ジョブ履歴を表示する

  1. Web ジョブを選択し、履歴を表示するには、 [ログ] を選択します。

    [ログ] ボタン

  2. [WebJob Details](Web ジョブの詳細) ページで、詳細を確認する実行時間を選択します。

    Web ジョブの詳細

  3. [WebJob Run Details](Web ジョブの実行の詳細) ページで、 [出力の切り替え] を選択すると、ログの内容のテキストが表示されます。

    Web ジョブ実行の詳細

    出力されるテキストを別のブラウザー ウィンドウに表示するには、 [ダウンロード] を選択します。 テキスト自体をダウンロードするには、 [ダウンロード] を右クリックし、ブラウザーのオプションを使用してファイルの内容を保存します。

  4. Web ジョブの一覧に移動するには、ページの上部にある [Web ジョブ] 階層リンクを選択します。

    [Web ジョブ] 階層リンク

    履歴ダッシュボードに表示された Web ジョブの一覧

次のステップ

Azure WebJobs SDK と Web ジョブを使用して、多くのプログラミング タスクを単純化できます。 詳細については、「 Azure Web ジョブ SDK とは」をご覧ください。