Azure FunctionsをVisual Studio Codeでローカルで実行・デバッグする
目的
LINE Messaging APIを使って作ってみたいものがあり、練習しようと思い立ったのが始まりです。
具体的にはLINEで画像を送ってもらい、いい感じに分析して返すサービスを作ろうかなと思っています。
なぜAzure Functions?
LINE Messaging APIは、友達追加してもらったチャンネルにメッセージを受信すると予め設定したURLにPOSTメソッドで情報を送ってきます。
これをいい感じに処理すればいいのです。
いつも通りNode-REDを使うのが最も手軽ですが、少し複雑な感じで処理しようとすると、Node-REDでも結構コードを書かなければならなくなりそうで、じゃあ書き慣れてるC#で書けるAzure Functionsを使おうと思いました。
Azure Functionsについて少し
Azure Functionsはサーバーレスで手軽に処理を実行できるサービスです。
関数のコール数で課金額が決まっているため、個人で小規模に使う分には無料 or 安く使えそうです。知らないですが。
Visual Studio CodeでAzure Functionsプロジェクトを作成
今回は使いませんが、Azureのアカウントはこちらであらかじめ作成しておいてください。
Visual Studio Codeの拡張機能Azure Functionsを導入します。
Create Functionを選択してください。
その後は開発言語を聞かれるので今回はC#。テンプレートはHTTPリクエストで駆動するので、HTTP Triggerを選びます。
適当に関数の名前などを入力し、次へ次へ進みます。
これでプロジェクトは新規作成されます。
ローカル実行&デバッグ
新規作成したばかりでもF5を押すと、ビルド&実行されます。
Http Functions:
HttpTriggerCSharp: [GET,POST] http://localhost:7071/api/HttpTriggerCSharp
初期設定だとポート7071で待ち受けされるみたいです。
この状態でも何かの方法で上記エンドポイントにGET or POSTリクエストを投げてやれば関数が実行されます。
ただ、この状態だとあくまでLAN内からのリクエストを受け付けるだけなので、LINE Messaging APIのwebhookを受けることができません。
これ、まさかルーターを転送してLAN内に通信通すとかしなきゃいけないのかなぁとか思っていると、完璧なツールに救われたので、そちらを使います。
ngrok
便利すぎる。
公式サイトからダウンロードします。
https://ngrok.com/
展開すると、インストールとかではなく、exeが入っているだけなので、環境変数のパスを通すか展開したディレクトリにコマンドラインで移動して使ってください。
また、公式サイトの案内通りアカウントを作成するとアクセストークンが支給されます。
このアクセストークンを使って下記コマンドを実行すると、認証情報がどこかのフォルダに作成されます。
これで準備完了です。
$ ./ngrok authtoken <YOUR_AUTH_TOKEN>
ここから、実際に使ってみます。
ngrok http 7071
このように、ローカルでAzure Functionsが実行されているポートを指定します。
Session Status online
Account <user name> (Plan: Free)
Version 2.3.35
Region United States (us)
Web Interface http://127.0.0.1:4040
Forwarding
http://xxxxxxxx.ngrok.io -> http://localhost:7071 Forwarding
https://xxxxxxxx.ngrok.io -> http://localhost:7071
Connections ttl opn rt1 rt5 p50 p90
0 0 0.00 0.00 0.00 0.00
すると、このようにWAN上にngrokが用意してくれたURLへのリクエストがローカルのポートに転送されるようになります。
しかも、httpsに対応しているので、実用性抜群ですね。
LINE Messaging APIであれば、[https://xxxxxxxx.ngrok.io] をwebhookに指定すれば、そのチャンネルにメッセージが送られるたびにPOSTリクエストが送られるので、VSCodeでブレークを張っておけばデバッグできます。
これでローカルで実行しながらインターネット上で送られる本物のリクエストを使いながらデバッグできますね。
お疲れさまでした。
Author And Source
この問題について(Azure FunctionsをVisual Studio Codeでローカルで実行・デバッグする), 我々は、より多くの情報をここで見つけました https://qiita.com/ronkabu/items/60b1c41d96899928159d著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .