WebJobs は、Web アプリと同じインスタンスでプログラムおよびスクリプトを実行できるようにする Azure App Service の機能です。 すべての App Service プランでは、追加料金なしで WebJobs がサポートされます。 このチュートリアルでは、任意の開発スタックを使用して、スケジュールされた (トリガーされた) Web ジョブを作成する手順について説明します。
[前提条件]
- アクティブなサブスクリプションを持つ Azure アカウント。 無料でアカウントを作成できます。
- 既存の App Service .NET 9 アプリ。
- アプリで [Always on] を有効にする必要があります。
- アプリ設定
WEBSITE_SKIP_RUNNING_KUDUAGENT
がfalse
に設定されていることを確認します。
Web ジョブをローカルで準備する
この手順では、基本的な .NET Web ジョブ プロジェクトを作成し、プロジェクト ルートに移動します。
dotnet new console -n webjob –framework net9.0 cd webjob
次に、
Program.cs
を、現在の時刻をコンソールに書き込む次のコードに置き換えます。using System; class Program { static void Main() { DateTimeOffset now = DateTimeOffset.Now; Console.WriteLine("Current time with is: " + now.ToString("hh:mm:ss tt zzz")); } }
webjob ディレクトリから Web ジョブを実行して、現在の時刻がコンソールに出力されていることを確認します。
dotnet run
次のような出力が表示されます。
Current time with is: 07:53:07 PM -05:00
アプリが動作することを確認したら、アプリをビルドして親ディレクトリに移動します。
dotnet build --self-contained cd ..
次に、次のコードで
run.sh
を作成します。#!/bin/bash dotnet webjob/bin/Debug/net9.0/webjob.dll
今度は、次に示すようにすべてのファイルを .zip にパッケージ化します。
zip webjob.zip run.sh webjob/bin/Debug/net9.0/*
スケジュールされた Web ジョブを Azure で作成する
Azure portal で App Service アプリの [App Service] ページに移動します。
左側のウィンドウで [Web ジョブ] を選択し、[追加] を選択します。
表で指定されている [Web ジョブの追加] 設定を入力し、[Web ジョブの作成] を選択します。 [ファイルのアップロード] では、先ほど作成またはダウンロードした .zip ファイルを選択してください。
設定 価値 説明 名前 ウェブジョブ Web ジョブ名。 文字または数字で始まる必要があり、"-" と "_" 以外の特殊文字を使用することはできません。 ファイルのアップロード webjob.zip 実行可能ファイルまたはスクリプト ファイルを含む .zip ファイル。 サポートされているファイルの種類については、「サポートされるファイルの種類」セクションを参照してください。 タイプ トリガー Web ジョブを実行するタイミングを指定します: [継続] または [トリガー]。 トリガー スケジュール済み [予定] または [手動]。 スケジュールを確実に機能させるには、[Always on] が有効になっていることを確認してください。 CRON 式 0 0/1 * * * * このクイックスタートでは、1 分ごとに実行されるスケジュールを使用します。 構文の詳細については、「CRON 式」を参照してください。 [Web ジョブ] ページに新しい Web ジョブが表示されます。 Web ジョブが追加されたというメッセージが表示されても、表示されない場合は、[更新] を選択します。
スケジュールされた Web ジョブは、CRON 式で定義されたスケジュールで実行されます。
WebJobs は、Web アプリと同じインスタンスでプログラムおよびスクリプトを実行できるようにする Azure App Service の機能です。 すべての App Service プランでは、追加料金なしで WebJobs がサポートされます。 このサンプルでは、スケジュールされた (トリガーされた) Web ジョブを使用して、1 分に 1 回システム時刻を出力します。
[前提条件]
- アクティブなサブスクリプションを持つ Azure アカウント。 無料でアカウントを作成できます。
- 既存の App Service Python アプリ。
- アプリで [Always on] を有効にする必要があります。
- アプリ設定
WEBSITE_SKIP_RUNNING_KUDUAGENT
がfalse
に設定されていることを確認します。
サンプル Web ジョブをダウンロードする
ビルド済みのサンプル プロジェクトをダウンロードして、すぐに開始できます。 サンプルには、webjob.py
と run.sh
の 2 つのファイルが含まれています。
Python スクリプト webjob.py
は、次に示すように現在の時刻をコンソールに出力します。
import datetime
current_datetime = datetime.datetime.now()
print(current_datetime) # Output: 2025-03-27 10:27:21.240752
ファイル run.sh
は、次に示すように WebJob.py を呼び出します。
#!/bin/bash
/opt/python/3/bin/python3.13 webjob.py
スケジュールされた Web ジョブを作成する
Azure portal で App Service アプリの [App Service] ページに移動します。
左側のウィンドウで [Web ジョブ] を選択し、[追加] を選択します。
表で指定されている [Web ジョブの追加] 設定を入力し、[Web ジョブの作成] を選択します。 [ファイルのアップロード] では、「サンプル Web ジョブをダウンロードする」セクションで先ほどダウンロードした .zip ファイルを選択してください。
設定 価値 説明 名前 ウェブジョブ Web ジョブ名。 文字または数字で始まる必要があり、"-" と "_" 以外の特殊文字を使用することはできません。 ファイルのアップロード App-Service-Python-WebJobs-Quickstart-Main.zip 実行可能ファイルまたはスクリプト ファイルを含む .zip ファイル。 サポートされているファイルの種類については、「サポートされるファイルの種類」セクションを参照してください。 タイプ トリガー Web ジョブを実行するタイミングを指定します: [継続] または [トリガー]。 トリガー スケジュール済み [予定] または [手動]。 スケジュールを確実に機能させるには、[Always on] が有効になっていることを確認してください。 CRON 式 0 0/1 * * * * このクイックスタートでは、1 分ごとに実行されるスケジュールを使用します。 構文の詳細については、「CRON 式」を参照してください。 [Web ジョブ] ページに新しい Web ジョブが表示されます。 Web ジョブが追加されたというメッセージが表示されても、表示されない場合は、[更新] を選択します。
スケジュールされた Web ジョブは、CRON 式で定義されたスケジュールで実行されます。
WebJobs は、Web アプリと同じインスタンスでプログラムおよびスクリプトを実行できるようにする Azure App Service の機能です。 すべての App Service プランでは、追加料金なしで WebJobs がサポートされます。 このサンプルでは、スケジュールされた (トリガーされた) Web ジョブを使用して、1 分に 1 回システム時刻を出力します。
[前提条件]
- アクティブなサブスクリプションを持つ Azure アカウント。 無料でアカウントを作成できます。
- 既存の App Service Node アプリ。
- アプリで [Always on] を有効にする必要があります。
- アプリ設定
WEBSITE_SKIP_RUNNING_KUDUAGENT
がfalse
に設定されていることを確認します。
サンプル Web ジョブをダウンロードする
ビルド済みのサンプル プロジェクトをダウンロードして、すぐに開始できます。 サンプルには、webjob.js
と run.sh
の 2 つのファイルが含まれています。
JavaScript webjob.js
は、次に示すように現在の時刻をコンソールに出力します。
// Import the 'Date' object from JavaScript
const currentTime = new Date();
// Format the time as a string
const formattedTime = currentTime.toLocaleTimeString();
// Output the formatted time to the console
console.log(`Current system time is: ${formattedTime}`);
ファイル run.sh
は、次に示すように webjob.js を呼び出します。
#!/bin/bash
node webjob.js
スケジュールされた Web ジョブを作成する
Azure portal で App Service アプリの [App Service] ページに移動します。
左側のウィンドウで [Web ジョブ] を選択し、[追加] を選択します。
表で指定されている [Web ジョブの追加] 設定を入力し、[Web ジョブの作成] を選択します。 [ファイルのアップロード] では、「サンプル Web ジョブをダウンロードする」セクションで先ほどダウンロードした .zip ファイルを選択してください。
設定 価値 説明 名前 ウェブジョブ Web ジョブ名。 文字または数字で始まる必要があり、"-" と "_" 以外の特殊文字を使用することはできません。 ファイルのアップロード App-Service-Node-WebJobs-Quickstart-Main.zip 実行可能ファイルまたはスクリプト ファイルを含む .zip ファイル。 サポートされているファイルの種類については、「サポートされるファイルの種類」セクションを参照してください。 タイプ トリガー Web ジョブを実行するタイミングを指定します: [継続] または [トリガー]。 トリガー スケジュール済み [予定] または [手動]。 スケジュールを確実に機能させるには、[Always on] が有効になっていることを確認してください。 CRON 式 0 0/1 * * * * このクイックスタートでは、1 分ごとに実行されるスケジュールを使用します。 構文の詳細については、「CRON 式」を参照してください。 [Web ジョブ] ページに新しい Web ジョブが表示されます。 Web ジョブが追加されたというメッセージが表示されても、表示されない場合は、[更新] を選択します。
スケジュールされた Web ジョブは、CRON 式で定義されたスケジュールで実行されます。
WebJobs は、Web アプリと同じインスタンスでプログラムおよびスクリプトを実行できるようにする Azure App Service の機能です。 すべての App Service プランでは、追加料金なしで WebJobs がサポートされます。 このサンプルでは、スケジュールされた (トリガーされた) Web ジョブを使用して、1 分に 1 回システム時刻を出力します。
[前提条件]
- アクティブなサブスクリプションを持つ Azure アカウント。 無料でアカウントを作成できます。
- 既存の App Service Java アプリ。
- Azure App Service Web Apps 用の Maven プラグイン。
- アプリで [Always on] を有効にする必要があります。
- アプリ設定
WEBSITE_SKIP_RUNNING_KUDUAGENT
がfalse
に設定されていることを確認します。
Web ジョブを準備する
サンプルの Java Web ジョブが作成されました。 このセクションでは、サンプルを確認し、Maven を使用して .JAR
ファイルをビルドします。
サンプルを確認する
project/src/main/java/webjob/HelloWorld.java
にある Java プロジェクトは、メッセージと現在の時刻をコンソールに出力します。
import java.time.LocalDateTime;
public class HelloWorld {
public static void main(String[] args) {
System.out.println("------------------------------------------------------------");
System.out.println("Hello World from WebJob: " + LocalDateTime.now());
System.out.println("------------------------------------------------------------");
}
}
Java Web ジョブをビルドする
run.sh
スクリプトは、Maven 構成で設定された名前の jar を実行します。 このスクリプトは、Web ジョブがトリガーされたときに実行されます。java -jar webjob-artifact-1.0.0.jar
次に、Java プロジェクトをコンパイルして実行可能ファイル
.jar
を生成します。 これを行う方法は複数ありますが、この例では Maven を使用します。project/
ディレクトリから次のコマンドを実行します。mvn install mvn package
ビルドが成功すると、jar ファイルは
project/target/webjob-artifact-1.0.0.jar
に配置されます。mv project/target/webjob-artifact-1.0.0.jar .
を実行して、jar ファイルを git リポジトリのルートに移動します。次に、アプリケーションを.zip
ファイルとしてパッケージ化します。zip webjob.zip run.sh webjob-artifact-1.0.0.jar
スケジュールされた Web ジョブを Azure で作成する
Azure portal で App Service アプリの [App Service] ページに移動します。
左側のウィンドウで [Web ジョブ] を選択し、[追加] を選択します。
表で指定されている [Web ジョブの追加] 設定を入力し、[Web ジョブの作成] を選択します。 [ファイルのアップロード] では、「サンプル Web ジョブをダウンロードする」セクションで先ほどダウンロードした .zip ファイルを選択してください。
設定 価値 説明 名前 ウェブジョブ Web ジョブ名。 文字または数字で始まる必要があり、"-" と "_" 以外の特殊文字を使用することはできません。 ファイルのアップロード webjob.zip 実行可能ファイルまたはスクリプト ファイルを含む .zip ファイル。 サポートされているファイルの種類については、「サポートされるファイルの種類」セクションを参照してください。 タイプ トリガー Web ジョブを実行するタイミングを指定します: [継続] または [トリガー]。 トリガー スケジュール済み [予定] または [手動]。 スケジュールを確実に機能させるには、[Always on] が有効になっていることを確認してください。 CRON 式 0 0/1 * * * * このクイックスタートでは、1 分ごとに実行されるスケジュールを使用します。 構文の詳細については、「CRON 式」を参照してください。 [Web ジョブ] ページに新しい Web ジョブが表示されます。 Web ジョブが追加されたというメッセージが表示されても、表示されない場合は、[更新] を選択します。
スケジュールされた Web ジョブは、CRON 式で定義されたスケジュールで実行されます。
WebJobs は、Web アプリと同じインスタンスでプログラムおよびスクリプトを実行できるようにする Azure App Service の機能です。 すべての App Service プランでは、追加料金なしで WebJobs がサポートされます。 このサンプルでは、スケジュールされた (トリガーされた) Web ジョブを使用して、1 分に 1 回システム時刻を出力します。
[前提条件]
- アクティブなサブスクリプションを持つ Azure アカウント。 無料でアカウントを作成できます。
- Linux 上の既存の App Service PHP アプリ。 このクイック スタートでは、PHP アプリを使用します。
- アプリで [Always on] を有効にする必要があります。
- アプリ設定
WEBSITE_SKIP_RUNNING_KUDUAGENT
がfalse
に設定されていることを確認します。
サンプル Web ジョブをダウンロードする
ビルド済みのサンプル プロジェクトをダウンロードして、すぐに開始できます。 サンプルには、webjob.php
と run.sh
の 2 つのファイルが含まれています。
PHP スクリプト webjob.php
は、次に示すように現在の時刻をコンソールに出力します。
<?php
// Get the current time
$current_time = date("Y-m-d H:i:s");
// Display the current time
echo "The current time is: " . $current_time;
?>
ファイル run.sh
は、次に示すように webjob.php を呼び出します。
#!/bin/bash
php -f webjob.php
スケジュールされた Web ジョブを作成する
Azure portal で App Service アプリの [App Service] ページに移動します。
左側のウィンドウで [Web ジョブ] を選択し、[追加] を選択します。
表で指定されている [Web ジョブの追加] 設定を入力し、[Web ジョブの作成] を選択します。 [ファイルのアップロード] では、「サンプル Web ジョブをダウンロードする」セクションで先ほどダウンロードした .zip ファイルを選択してください。
設定 価値 説明 名前 ウェブジョブ Web ジョブ名。 文字または数字で始まる必要があり、"-" と "_" 以外の特殊文字を使用することはできません。 ファイルのアップロード App-Service-PHP-WebJobs-Quickstart-Main.zip 実行可能ファイルまたはスクリプト ファイルを含む .zip ファイル。 サポートされているファイルの種類については、「サポートされるファイルの種類」セクションを参照してください。 タイプ トリガー Web ジョブを実行するタイミングを指定します: [継続] または [トリガー]。 トリガー スケジュール済み [予定] または [手動]。 スケジュールを確実に機能させるには、[Always on] が有効になっていることを確認してください。 CRON 式 0 0/1 * * * * このクイックスタートでは、1 分ごとに実行されるスケジュールを使用します。 構文の詳細については、「CRON 式」を参照してください。 [Web ジョブ] ページに新しい Web ジョブが表示されます。 Web ジョブが追加されたというメッセージが表示されても、表示されない場合は、[更新] を選択します。
スケジュールされた Web ジョブは、CRON 式で定義されたスケジュールで実行されます。
注
CRON 式の実行に使用される既定のタイム ゾーンは、協定世界時 (UTC) です。 別のタイム ゾーンに基づいて CRON 式を実行するには、ご使用の関数アプリ用に WEBSITE_TIME_ZONE という名前のアプリ設定を作成します。 詳細については、「NCRONTAB タイムゾーン」を参照してください。
Web ジョブのログを確認する
先ほど作成した Web ジョブのログを選択します。
出力は次のようになります。
クリーンアップ
Web ジョブを削除するには、ポータルで Web ジョブを選択し、[ Delete
] を選択します。