【初心者向け】Azure FunctionsでPythonを実行する(Timer Trigger)

AWS Lambdaが好きでよく使っていますが、
Azureでも同じようなFaaSとしてAzure Functionsがあると知り、使ってみました。

正直なところLambdaのようなお手軽さはなく、なかなか複雑で使いづらいなという印象でした。

まずは試しに使って動かしてみたいレベルの人向けにこの記事がお役に立てばうれしいです。

開発環境の準備

今回はAzure Functionsの開発をVisual Studio Code(VSCode)で行います。

VSCodeで開発するにあたり、端末で以下の準備が必要です。

  1. VSCodeのインストール
  2. pythonのインストール (※Azure Functionで使用するPythonバージョンと同じバージョン)
  3. VSCode拡張機能として「Azure Functions」と「Azurite」のインストール
  4. Azure Functions Core Toolsのインストール

VSCodeのインストールとpythonのインストールはインターネット上に情報が十分にありますので、
インストール手順は省略します。

VSCode拡張機能として「Azure Functions」と「Azurite」のインストール

VSCodeの拡張機能でAzure Functions検索してインストールできます。

拡張機能(Azure Function)インストール

Azuriteも同様にインストールできます。

拡張機能(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」を実行します。Azure Function Coreパレット

以下のように自動でnpm installが実行されます。

Azure Function Coreインストール

 

Pythonコード開発

開発環境の準備ができましたらここからAzure Functions内で実行させるPythonコードの開発になります。

ローカルプロジェクトの作成

VSCodeのメニューに「Azure」のメニューが追加されていますので、
そこから「WORKSPACE」で「Create Function Project…」で作業スペースが作成されます。
WORKSPACEはローカルPC上のフォルダになりますので、お好きな場所を指定してください。

WORKSPACE指定

プロジェクトは「python」を選択します。

言語選択

使用されるPythonのバージョンを選択します。
私はPython3.13をインストールしておきましたので、選択肢に出てきています。

Pythonバージョン選択

実行トリガーを指定します。
トリガーは多様な種類があり、定期実行やHTTP実行、EventGridによりイベント駆動なども選択可能です。
今回はとりあえず動作を見るということで定期実行の「Time Trigger」を選んでみます。

トリガー選択

作成するPythonコードの関数名を指定できます。
お好みがあれば指定いただけますし、デフォルトでもOKです。

関数名

定期実行のタイミングをcron形式で指定できます。
今回は早く実行結果を見たいので1分間隔にします。各自お好みの間隔に設定してOKです

定期実行タイミング

設定値を入力しきるとWORKSPACEが作成されてVSCodeでオープンされます。
必要なファイルも自動で作成されていますね。

WORKSPACEオープン

処理実装

作成されている「function_app.py」の中に処理を実装していくことになります。
赤枠の部分に実装していきましょう。

処理実装

注意@app.timer_triggerが、定期実行をつかさどる部分になりますので、この行は削除NGです。
設定した定期実行のタイミングを変更したい等あれば、この部分の「schedule=」の部分変更しましょう。
注意追加のPythonライブラリを使う場合は、requirements.txtに追加してください。
requirements.txtに記載しないとライブラリがインストールされず、importに失敗します。

とりあえず動かすだけなので、処理内容は変えずこのまま動作テストしてみます。

Timer Triggerを使うにはStorage Accountが必要になるのですが、ローカルPC環境にはないので、「Azurite」で代替します。

VSCode上で「Ctrl + Shift + p」でコマンドパレットを起動して、「Azurite: Start」を実行しましょう。

Azurite起動

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…」を押下しましょう。

Azureサインイン

MicroSoftのログイン画面が表示されますので、デプロイ先のAzureアカウントのユーザーでログインしましょう。

ログイン画面

ログインできたら、「WORKSPACE」の「Local Project」で雲のマークを押します。

Deploy開始

「Create new function app…」でデプロイ先のAzure Functionsを作成しましょう。
もし、既に作成済みなら、そのFunctions名を指定しましょう。

Functions作成

作成するAzure Functionsの名前を指定します。
Local Projectと名前が異なっても大丈夫ですが、全世界で一意の必要があるので、誰かが使っていたらNGになります。

Azure Functions名指定

リージョンを指定します。

リージョン指定

Pythonはローカル環境に入れたものと同じバージョンを指定します。

Pythonバージョン

認証方式は「Secrets」を選択します。

認証方式

設定に沿って自動でAzure Functionsや必要な周辺リソースを作成してくれます。

Azure Functionsデプロイ

正常に完了したら、自身のAzureアカウントにAzure Functionsが作成され、コードもデプロイされています。

AzureFunctionsデプロイ

注意VSCodeの作成方法では、リソースグループやインスタンス メモリ、プランなどがコントロールできません。
実際に使われる際には、事前にAzureポータルで作成して、コードだけデプロイする方をお勧めします。

実行確認

作成されたAzure Functionsで「監視 > ログ」で「requests」テーブルを参照してみましょう。

実行ログ参照 

見事に1分間隔で実行されていますね。

実行間隔

別のテーブルでtracesを見ると実行ログも確認できます。実行ログ確認

まとめ

開発開始するまでのVSCodeの事前準備が思ったより手間取りましたが、
そこを超えれば何とかなりそうです。

ローカル環境でStorage Accountの代替が可能なAzuriteが必要だったり、
実行前にAzuriteを起動させないといけなかったり、知らずにやると落とし穴に落ちますが、
少しでもこの記事が参考になれば幸いです。

著者について

インフラエンジニアからクラウドエンジニアへ。
主にAWS環境の構築を担当。少しずつAzureを勉強中。

前田光太朗をフォローする

クラウドに強いによるエンジニアブログです。

SCSKクラウドサービス(Azure)は、Azureを最大限活用するためのオールインワンサービスです。40年以上の様々なシステム構築・運用実績で得た業界理解と、Azure構築ナレッジを強みに、クラウドへの移行から運用までトータルでサポートし、お客様のAzure活用を実現します。

Azureクラウド
シェアする
タイトルとURLをコピーしました