Python Azure Functions Core Toolsを使ってローカル(Ubuntu)環境で実行する

この記事は約4分で読めます。

こんにちは、Shimacoです。

表題の件、ローカル実行でハマりましたので備忘録を残しておきます。

不足している箇所はのちほど追記していきます。Microsoft公式のリファレンスはこちらです。

環境構築

  • Azure VM (Ubuntu 12.x)
  • Python3.8

Tera Term等でUbuntuのVMにアクセスし、リファレンスの前提条件通りに、Azure Function Core Toolsなどのインストールをします。

テスト関数の実行

前提条件がクリアできたら、テスト関数を作成して実行してみましょう。

func init LocalFunctionProj –python
func new –name HttpExample –template “HTTP trigger” –authlevel “anonymous”

これで、関数を作成したら、

func start

で実行します。

開発した関数をローカル実行

テスト実行が確認できましたら、いよいよこちらのステップに移って参りましょう。

何はともあれまずはGit clone

今回のケースは、既存のFunctionsプロジェクトを、Azure DevOpsからGit Cloneしてローカル実行します。

Git cloneコマンドを実行すると、Azureの認証画面リンクが表示されますのでクリックすると、Tera Termに接続している自分のPCのChromeで開きました。

そこで認証して、無事Git clone完了。

.venvを作って有効化

わたしの最大のハマりポイントでした。

Functions Core toolsでローカル実行する際は、.venvが必須です。

これが分からず、ローカルのPythonパスで実行していたため、ありとあらゆるエラーに苦しめられました。根本理由とは関係ないようなエラーの羅列も。今回は、azure-storage-blobのライブラリを使っていたのですが、あるのにないと言われていました。パス通しているのに。

venvを作成して有効化するには、下記を実行します。

python -m venv .venv
source .venv/bin/activate

パスは通しているんだけど、Pythonは環境複数作れて便利な反面、パラレルワールド的にわたしいまどこ?が明確に分からないとハマるポイントなのかと思いました。同じような初心者の皆さんのお力になれば幸いです。

ローカルの環境変数

Azure側は、Configからアプリの環境変数を設定するのですが、ローカルの場合はlocal.setting.jsonに環境変数を記載していきます。※os.environ[~]で取得するものです。

使っていなければ特に指定しなくてOKです。

ちなみに、試していませんが、Azure環境にデプロイする際に同期もできるようです。便利ですね。

ルートパスで実行

必要な環境変数の設定が終わったら、テスト実行でも触れたようにfunc startで実行します。

Functionsのアイコンの雷みたいなアスキーアートが表示されたあと、ローカルAPIが表示されますので、リクエストしてみましょう。※Tera Termのセッション複製で新たにターミナルを立ち上げて、curlで呼びます。

そうすると、APIが表示された方にも成功とかエラーとか出てきます。

悩んでいる方は是非お試しいただけると幸いです。

IT
この記事を書いた人

旅を愛し旅に生きる33歳女子。
37か国/国内47都道府県を旅しました。
「自分の足で歩く」のが好きで、ほぼ全て個人手配です。
「個人で旅をしてみたい。」そんな人の背中を押すような情報をお届けします。
直近の旅はモロッコ、イギリス、オランダに行ってまいりました。順次記事更新していきます。

shimacoをフォロー
ShimacoTrip