😀

Azure App Service for Linux でパブリックプレビューの WebJobs (Cron) を試して

に公開

やっと Azure App Service for Linux に WebJobs (Cron) が来ました! Windows の App Service では以前から WebJobs を使う事ができました。その頃の Microsoft のドキュメントには、「WebJobs は App Service on Linux ではまだサポートされていません。」と記載されていて、"まだ"というワードに、ずっと期待を寄せていました。

という事で、早速試してみました。

検証用の Azure App Service for Linux を作成

japaneast で不明なエラーが出たので、eastus で作成しました。

bash
prefix=mnrwebjobs
region=eastus

az group create \
  --name ${prefix}-rg \
  --location $region

az appservice plan create \
  --name ${prefix}-asp \
  --resource-group ${prefix}-rg \
  --sku B1 \
  --is-linux

az webapp create \
  --name ${prefix} \
  --resource-group ${prefix}-rg \
  --plan ${prefix}-asp \
  --runtime "PYTHON:3.9" \
  --https-only true

az webapp config set \
  --name ${prefix} \
  --resource-group ${prefix}-rg \
  --always-on true

curl https://${prefix}.azurewebsites.net

Azure App Service for Linux に Web ジョブ が表示されている状態

appservice-linux-webjobs-01.png

WebJobs (Cron) で実行するシェルスクリプトを作成

bash
echo date > test.sh

ちなみに現時点だと、sh と py のみのサポートで、py は zip にして登録する必要がありました。

Web ジョブの追加

先ほど作成した test.sh を登録します。

appservice-linux-webjobs-02.png

SSH で登録されたファイルを確認

appservice-linux-webjobs-03.png

Web ジョブの状態を確認

「完了」になったら動作完了です。

appservice-linux-webjobs-04.png

Web ジョブの実行履歴を確認

現時点では「ログ」のアイコンから、実行履歴を確認する事ができなかったので、コマンドで確認しました。

bash
scmurl=$(az webapp deployment list-publishing-credentials \
  --name ${prefix} \
  --resource-group ${prefix}-rg \
  --query scmUri \
  --output tsv)

curl -s $scmurl/api/triggeredwebjobs/test/history \
  | jq -r '.runs[].output_url'
txt
https://mnrwebjobs.scm.azurewebsites.net/vfs/data/jobs/triggered/test/202404130025000715/output_log.txt
https://mnrwebjobs.scm.azurewebsites.net/vfs/data/jobs/triggered/test/202404130020000757/output_log.txt
https://mnrwebjobs.scm.azurewebsites.net/vfs/data/jobs/triggered/test/202404130015000730/output_log.txt
https://mnrwebjobs.scm.azurewebsites.net/vfs/data/jobs/triggered/test/202404130010000948/output_log.txt

上記の URL にブラウザでアクセスすると下記のように date コマンドの出力結果を確認できました。

txt
[04/13/2024 00:25:00 > bd04dc: SYS INFO] Status changed to Initializing
[04/13/2024 00:25:00 > bd04dc: SYS INFO] Run script 'test.sh' with script host - 'BashScriptHost'
[04/13/2024 00:25:00 > bd04dc: SYS INFO] Status changed to Running
[04/13/2024 00:25:00 > bd04dc: INFO] Sat 13 Apr 2024 12:25:00 AM UTC
[04/13/2024 00:25:00 > bd04dc: SYS INFO] Status changed to Success

登録した Web ジョブを削除

現時点では Azure ポータル上から Web ジョブを削除できないようなので、CLI で削除しました。

bash
az webapp webjob triggered remove \
  --webjob-name test \
  --name ${prefix} \
  --resource-group ${prefix}-rg

検証後の後片付け

bash
az group delete \
  --name ${prefix}-rg \
  --yes

参考

https://techcommunity.microsoft.com/t5/apps-on-azure-blog/azure-app-service-at-ignite-2023/ba-p/3977578

https://azure.github.io/AppService/2024/04/04/Public-Preview-Sidecars-Webjobs.html

https://learn.microsoft.com/ja-jp/azure/app-service/webjobs-create?tabs=linuxcode

Discussion