0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Azure FunctionsのTimerTrigger(など)をMac環境で動かす

Last updated at Posted at 2021-05-27

Azure Functions のTimerTriggerをVSforMacで作る

HTTPTriggerだと何も気にせずVSのみで完結するのだが、他のTriggerはAzure Storage Emu.が必要
しかもそれをちゃんと知らずに動かすとよくわからんエラー吐いてしまう、という落とし穴あり。
(なんかそれに関する警告とか出してくれればいいのに…)
ちなみにこんなエラー↓
The listener for function 'Function1' was unable to start. Microsoft.Azure.Storage.Common: Connection refused. System.Net.Http: Connection refused. System.Private.CoreLib: Connection refused.
verboseフラグとかつければもっと詳細に出るかもしれないが。

Azuriteを入れる

こういうことだそうな。
Azuriteを入れて動かしておかないとHTTPTrigger以外のAzure Functionsはちゃんと動かない。
なので、上のページに従ってAzuriteを入れる。
(最近はMSのドキュメントでもVSCode前提の記事が多い、ちゃんとVS前提の記事もほしいんだが…)

npm install -g azurite で良いと思う

Dockerイメージとかあるけどサクッと入れれるnpmにした。
開始方法はこちら
https://docs.microsoft.com/ja-jp/azure/storage/common/storage-use-azurite#run-azurite-from-a-command-line
パスの書き方はmacに合わせること。

まだ手動で開始しないといけないらしい。

Azuriteを起動していたらちゃんと動くようになった。

追加)HTTPTrigger以外のものをHTTPで呼び出す

TimerTriggerを手動で動かせないので、デバッグやりにくい…
と思っていたが、こういう方法があるみたい。

https://docs.microsoft.com/ja-jp/azure/azure-functions/functions-manually-run-non-http
https://docs.microsoft.com/ja-jp/azure/azure-functions/functions-run-local?tabs=windows%2Ccsharp%2Cbash#non-http-triggered-functions
このあたりを参照
デプロイ後でもHTTP経由でアクセスできるみたい。(Headerにキーは必要)

ローカル実行中なら以下のようなURLになる。
http://localhost:{port}/admin/functions/{function_name}
portはデフォルトなら7071

0
0
1

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?