やっと 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 ジョブ が表示されている状態
WebJobs (Cron) で実行するシェルスクリプトを作成
bash
echo date > test.sh
ちなみに現時点だと、sh と py のみのサポートで、py は zip にして登録する必要がありました。
Web ジョブの追加
先ほど作成した test.sh
を登録します。
SSH で登録されたファイルを確認
Web ジョブの状態を確認
「完了」になったら動作完了です。
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
参考