はじめに:Azure Functions のタイマートリガーでローカルデバッグするとエラーでデバッグできない
Azure Functionsのタイマートリガーをローカルでデバッグしようとすると、画像のようなワーニングメッセージが表示されます。
Failed to verify “AzureWebJobsStorage” connection specified in “local.settings.json”. Is the local emulator installed and running?
「local.settings.jsonで設定したAzureWebJobsStorageがインストールされ実行されていますか?」とのこと。
ワーニングなので、Debug anyway(とにかくデバッグという意らしい)を押して続行しても良いのですが、結局実行時にエラーとなりデバッグすることができません。
The listener for function 'Functions.TimerTrigger' was unable to start. Azure.Core: Retry failed after 6 tries. Retry settings can be adjusted in ClientOptions.Retry. (対象のコンピューターによって拒否
されたため、接続できませんでした。) (対象のコンピューターによって拒否されたため、接続できませんでした。) (対象のコンピューターによって拒否されたため、接続できませんでした。) (対象のコンピューターによって拒否されたため、接続でき
ませんでした。) (対象のコンピューターによって拒否されたため、接続できませんでした。) (対象のコンピューターによって拒否されたため、接続できませんでした。). Azure.Core: 対象のコンピューターによって拒否されたため、接続できませんで
した。. System.Net.Http: 対象のコンピューターによって拒否されたため、接続できませんでした。. System.Private.CoreLib: 対象のコンピューターによって拒否されたため、接続できませんでした。.
解決策:Azuriteを実行する
デバッグ実行する前に「Azurite」を実行します。
タイマートリガーのAzure Functionsを実行するには、Azure Storageにアクセスする必要があります。
完全にローカルでAzure Functionsのデバッグする場合、ローカルでAzure Storageのエミュレーターを起動する必要があるのですが、デバッグ実行するときにエミュレーターが起動していないので、警告を出していたようです。
本質的には「対象のコンピューターによって拒否されたため、接続できませんでした。」のエラーメッセージが、「ローカルの Azure Storage にアクセスできませんでした。」の意味のようです。
Azuriteの起動方法は開発ツールによって異なり、マイクロソフト公式ドキュメントに記載があるので割愛します。
ローカルでの Azure Storage の開発に Azurite エミュレーターを使用する
補足:開発環境情報
ちなみに私は以下の環境で動作しました。
- Windows 10
- Visual Studio Code 1.62.1
- [拡張機能]Azure Functions v1.6.0
- [拡張機能]Azurite v3.14.3
コメント