はじめに
仕事の関係でAzureFunctionsを使うことになった。
AzureFunctionsは座学でしか扱わなかったので、試しに使ってみる
せっかくなのでローカル環境は使わずgithub 環境使って作成する
参考
一番参考になりました。感謝。
前提
- Azureアカウント取得済み
- Github CodeSpaceが利用できる
開発環境づくり
Codespacesの設定ファイル作成
コマンドパレット(Ctrl+Shift+P)より、”codespaces: Add Container Cofiguration Files...”実行
"Modify your active configuration..."クリック
以下を選択して、OK クリック
OK クリックすると、画面右下のポップアップからRebuildを促されるので "Rebuild now" クリック
こんな感じで裏でgithubが頑張ってるので数分程度待つ。。。
再起動後、左下あたりにアイコン(赤線部)が増えてるのを確認する
ローカル上でAzure Functionsプロジェクトの作成
Azure Functions プロジェクトの作成
画面左下のWORKSPACEに見えないけれども。。。クリックできる箇所がある。
Create Function... クリック(ホントはFunctionのアイコン出るはずなのになぜか表示されなかった。。。)
今動かしてるリポジトリでFunctions作りたいので azfunction... クリック
最終的に作りたいものは時間実行の関数だけど今はとりあえず作りたいので"HTTP trigger" クリック
認証キーとかは不要でとりあえずつながるやつ作りたいのでANONYMOUS クリック
できあがり。
処理の本体は、function_app.py
nameって引数に値を入れて実行すると返事を返すプログラムっぽい。
最後に、requirements.txtできてるのでターミナルでインストールしておくこと
pip install -r requirements.txt
試しに動かす
早速出来上がったローカル上(正確にはcodespace上)でHTTP Trigerを動かしてみる。
少し待つと、新しいターミナルが増えてる。
で、そこのログにURLが割り振られてる。
http://localhost:7071/api/http_trigger
リンクをクリックすると、ちゃんとfunctionが動作していることが確認できる。
次はこのURLに対してcurlを飛ばす
curl http://localhost:7071/api/http_trigger
では次は引数nameを入れて実行
curl http://localhost:7071/api/http_trigger?name=nabehiro
成功!無事にHTTP Triggerの処理が実行できました。
Azure上にAzure Functionを作成する
ローカルに実行環境できたので、続いて、Azure上にFunctionを枠組みを作ろう。
これ、ポータル上で作ってもいいけど、せっかくなのでcodespace上で作った
AzureにログインしてからFunctionを作る
Azureログイン
ログインに成功するとVSCode上で読み込み待ちになるのでしばし待つ
Functions作成
Azure functions を右クリックして "Create Function App in Azure" クリック
functionsの名前を決める。グローバル名になるため適当に且つかぶらないやつを選ぶ。。。
1分ほど待ったらできた。
ログ末尾にURLが出てるのでクリックしてみる
動いてるっぽい!でも、このままは空っぽなのでちゃんとデプロイしてやろうと思う。
Azureにデプロイ
ローカルにアプリができて、AzureにFunctionsの枠ができたので、いざデプロイ。
※あらかじめCodespace上でAzureログイン済みであることを確認してから実施
WORKSPACEのアイコンクリックしてから "Deploy to Function App..." クリック
クリックすると、画面上部に選択可能なfunctionsがあるので "pro-nb-..."クリック
ポータルからデプロイっぷりをチェック
ポータル上で、デプロイ先のfunctionsを選択
関数>アプリファイル へ移動するとデプロイしたファイルが確認できた。
動作確認しよう
codespace上のターミナルから実行
https://pro-nb-hellofunc-001.azurewebsites.net/api/http_trigger?name=nabehiro
~おしまい~