Azure WebJobs は Azure App Service の組み込み機能であり、バックグラウンド タスク、スクリプト、プログラムを Web、API、またはモバイル アプリケーションと共に実行できます。 Web ジョブは、アプリケーションと同じスケーラブルなマネージド環境で実行することで、データ処理、イメージのサイズ変更、キューの処理、ファイルのクリーンアップなどの一般的な操作の自動化を簡略化します。
ウェブジョブの選択
Web ジョブは、次の場合に適しています。
- 既に App Service でアプリケーションをホストしています。
- アプリと共にバックグラウンド タスクをデプロイおよび管理する必要があります。
- 基本的なスケジュール設定やキューのポーリング以外に、個別のスケーリング モデルやイベントベースのトリガーは必要ありません。
よりスケーラブルで、独立してホストされる、またはイベント ドリブンのワークロードについては、 Azure Functions の使用を検討してください。
主要な機能
- 個別のインフラストラクチャをプロビジョニングせずにバックグラウンド タスクを実行する
- オンデマンドで、スケジュールに従って、または継続的にジョブをトリガーする
- 複数の言語とスクリプト プラットフォームを使用する
- Azure portal、Visual Studio、zip デプロイ、または自動化パイプラインを使用してデプロイする
- Kudu や App Service 診断を使用して監視と問題解決を行う
- Azure Storage、Event Hubs、Service Bus などの他の Azure サービスと統合する
Web ジョブの種類
Web ジョブには、主に次の 3 種類があります。
- トリガーされた Web ジョブ: オンデマンドで実行するか、特定のイベントに応答して実行します。 手動でトリガーすることも、Azure Storage などのサービスからトリガーすることもできます。
-
スケジュールされた Web ジョブ: 定義されたスケジュールで実行される、特殊な種類のトリガーされた Web ジョブで、NCRONTAB 式を用いた
settings.job
ファイルを使用して実行されます。 - 継続的な Web ジョブ: App Service アプリの実行中にバックグラウンドで永続的に実行します。 キューのポーリングまたはバックグラウンド監視タスクに最適です。
サポートされているプラットフォームとファイルの種類
Web ジョブは、次の App Service ホスティング オプションでサポートされています。
- Windows コード
- Windows コンテナー
- Linux コード
- Linux コンテナー
サポートされているファイル/スクリプトの種類は次のとおりです。
- Windows 実行可能ファイルとスクリプト:
.exe
、.cmd
、.bat
- PowerShell スクリプト:
.ps1
- Bash スクリプト:
.sh
- スクリプト言語: Python (
.py
)、Node.js (.js
)、PHP (.php
)、F# (.fsx
) - コンテナー アプリに含まれる任意の言語のランタイム
この多様性により、既に使い慣れているツールと言語を使用して、WebJobs をさまざまなアプリケーション アーキテクチャに統合できます。
配置オプション
Web ジョブは、次のいくつかの方法を使用してデプロイできます。
- Azure portal または zip アップロード: スクリプトまたはジョブ ファイルを手動でアップロードします。
- Visual Studio: ASP.NET アプリを使用して Windows App Service に直接デプロイします。
- CI/CD パイプライン: GitHub Actions、Azure DevOps、または Azure CLI を使用してデプロイを自動化します。
- ARM/Bicep テンプレート: インフラストラクチャとジョブを宣言によってデプロイします。
また、WebJobs では、Kudu を介した 組み込みのログ記録 と App Service 診断との統合も提供され、ジョブアクティビティの監視や問題のトラブルシューティングに役立ちます。
スケーリングに関する考慮事項
Web ジョブは、App Service プランと共にスケーリングされます。 アプリが複数のインスタンスにスケールアウトするように構成されている場合、Web ジョブは必要に応じて各インスタンスで実行されます。
- トリガーされた Web ジョブは、 既定で 1 つのインスタンスで実行されます。
-
継続的 Web ジョブは、 すべてのインスタンスで実行するように構成することも、
WEBJOBS_RUN_ONCE
設定を使用して単一のインスタンスで実行するように構成することもできます。
個別にスケーラブルまたはイベント ドリブンの実行が必要な場合は、 Azure Functions の方が適している可能性があります。
ベスト プラクティス
- アドホック操作またはスケジュールされた操作には、 トリガーされた Web ジョブを使用します。
- 継続的な Web ジョブは、タスクを絶えず実行する必要がある場合 (キューのポーリングなど) にのみ使用します。
- スクリプト内に 再試行ロジックとエラー処理 を実装します。
- アプリケーション ログと Kudu ログを使用して、ジョブの動作を監視します。
- 可能な場合は 、ジョブ ロジックをメイン アプリ ロジックとは別 に保ちます。
- 信頼性の高い分離された通信には、 ストレージ ベースのトリガー (Azure キューなど) を使用します。
シナリオの選択
目標 | [アーティクル] |
---|---|
スケジュールされた Web ジョブをすばやく実行する | クイック スタート: スケジュールされた Web ジョブを作成する |
スクリプトまたはコードを使用して Web ジョブを手動でビルドする | Azure App Service で Web ジョブを作成する |
実用的なユース ケースを使用してチュートリアルに従う | チュートリアル: WebJobs を使用してバックグラウンド タスクを実行する |