AWS Lambdaが好きでよく使っていますが、
Azureでも同じようなFaaSとしてAzure Functionsがあると知り、使ってみました。
正直なところLambdaのようなお手軽さはなく、なかなか複雑で使いづらいなという印象でした。
まずは試しに使って動かしてみたいレベルの人向けにこの記事がお役に立てばうれしいです。
開発環境の準備
今回はAzure Functionsの開発をVisual Studio Code(VSCode)で行います。
VSCodeで開発するにあたり、端末で以下の準備が必要です。
- VSCodeのインストール
- pythonのインストール (※Azure Functionで使用するPythonバージョンと同じバージョン)
- VSCode拡張機能として「Azure Functions」と「Azurite」のインストール
- Azure Functions Core Toolsのインストール
VSCodeのインストールとpythonのインストールはインターネット上に情報が十分にありますので、
インストール手順は省略します。
VSCode拡張機能として「Azure Functions」と「Azurite」のインストール
VSCodeの拡張機能でAzure Functions検索してインストールできます。
Azuriteも同様にインストールできます。
Azure Functions Core Toolsのインストール
VSCodeの拡張機能でAzure Functionsをインストールすると、「Azure Functions Core Tools」はこの拡張機能からインストールできます。
VSCode上で「Ctrl + Shift + p」でコマンドパレットが起動できますので、
そこで「Azure」と入力して、「Azure Functions: Install or Update Azure Functions Core Tools」を実行します。
以下のように自動でnpm installが実行されます。
Pythonコード開発
開発環境の準備ができましたらここからAzure Functions内で実行させるPythonコードの開発になります。
ローカルプロジェクトの作成
VSCodeのメニューに「Azure」のメニューが追加されていますので、
そこから「WORKSPACE」で「Create Function Project…」で作業スペースが作成されます。
WORKSPACEはローカルPC上のフォルダになりますので、お好きな場所を指定してください。
プロジェクトは「python」を選択します。
使用されるPythonのバージョンを選択します。
私はPython3.13をインストールしておきましたので、選択肢に出てきています。
実行トリガーを指定します。
トリガーは多様な種類があり、定期実行やHTTP実行、EventGridによりイベント駆動なども選択可能です。
今回はとりあえず動作を見るということで定期実行の「Time Trigger」を選んでみます。
作成するPythonコードの関数名を指定できます。
お好みがあれば指定いただけますし、デフォルトでもOKです。
定期実行のタイミングをcron形式で指定できます。
今回は早く実行結果を見たいので1分間隔にします。各自お好みの間隔に設定してOKです
設定値を入力しきるとWORKSPACEが作成されてVSCodeでオープンされます。
必要なファイルも自動で作成されていますね。
処理実装
作成されている「function_app.py」の中に処理を実装していくことになります。
赤枠の部分に実装していきましょう。
設定した定期実行のタイミングを変更したい等あれば、この部分の「schedule=」の部分変更しましょう。
requirements.txtに記載しないとライブラリがインストールされず、importに失敗します。
とりあえず動かすだけなので、処理内容は変えずこのまま動作テストしてみます。
Timer Triggerを使うにはStorage Accountが必要になるのですが、ローカルPC環境にはないので、「Azurite」で代替します。
VSCode上で「Ctrl + Shift + p」でコマンドパレットを起動して、「Azurite: Start」を実行しましょう。
Azuriteが起動したら、VSCodeでコマンドプロンプトのターミナルを起動して以下のコマンドを実行しましょう。
func start
無事に「Python timer trigger function executed.」が1分おきに実行されていることがわかりますね。
これでローカル環境上では正常にAzure FunctionがTimer Triggerで実行されることがわかりましたので、
実際のAzure Functionsにデプロイしていきましょう。
Azure Functionsデプロイ
メニューからAzureのマークに移動して、「ACCOUNTS & TENANTS」で「Singn in to Azure…」を押下しましょう。
MicroSoftのログイン画面が表示されますので、デプロイ先のAzureアカウントのユーザーでログインしましょう。
ログインできたら、「WORKSPACE」の「Local Project」で雲のマークを押します。
「Create new function app…」でデプロイ先のAzure Functionsを作成しましょう。
もし、既に作成済みなら、そのFunctions名を指定しましょう。
作成するAzure Functionsの名前を指定します。
Local Projectと名前が異なっても大丈夫ですが、全世界で一意の必要があるので、誰かが使っていたらNGになります。
リージョンを指定します。
Pythonはローカル環境に入れたものと同じバージョンを指定します。
認証方式は「Secrets」を選択します。
設定に沿って自動でAzure Functionsや必要な周辺リソースを作成してくれます。
正常に完了したら、自身のAzureアカウントにAzure Functionsが作成され、コードもデプロイされています。
実際に使われる際には、事前にAzureポータルで作成して、コードだけデプロイする方をお勧めします。
実行確認
作成されたAzure Functionsで「監視 > ログ」で「requests」テーブルを参照してみましょう。
見事に1分間隔で実行されていますね。
まとめ
開発開始するまでのVSCodeの事前準備が思ったより手間取りましたが、
そこを超えれば何とかなりそうです。
ローカル環境でStorage Accountの代替が可能なAzuriteが必要だったり、
実行前にAzuriteを起動させないといけなかったり、知らずにやると落とし穴に落ちますが、
少しでもこの記事が参考になれば幸いです。


























