LoginSignup
0
0

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

Posted at

やっと 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

参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0