Azure Function Pythonのリモートビルドでハマったこと/ビルドに必要な変数

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

こんにちは、Shimaco(@shimacotripです。

Azure Functionsへのリモートビルドが手くいかず、色々調べて「へぇそんなんだー」と思ったことを備忘録的にまとめておきます。

お役に立てれば幸いです。

リモートビルドに必要な環境変数

Azure FunctionsはLinuxプラン、言語はPythonという環境でのお話です。

  • VSCodeからのデプロイ ⇒成功
  • Azure DevOpsからビルド/リリースパイプラインを使ったデプロイ ⇒デプロイはできるがFunctionsが動作しなかった。

という挙動の差を発見しました。

色々検証してみたところ、Cofigulation(日本語メニューでは「構成」)環境変数に違いを発見しました

VSCodeからデプロイした場合は以下の環境変数があるのに、Azure DevOpsからのデプロイした場合は設定されていません。

ENABLE_ORYX_BUILD=true
SCM_DO_BUILD_DURING_DEPLOYMENT=true

試しに、Azure DevOpsからのデプロイしたFunctions環境に上記の環境変数を追加してみたところ、アッサリ動きました。

こちらの環境変数は調べたところ、Linuxプランのリモートビルド設定に関する環境変数だということ。

ライブラリのバージョンは必ず指定

当たり前なのですが、ついつい今開発しているバージョンで動いているから指定を忘れがちです。

そして、開発していた時点では問題なかったものの、少し時間経過すると依存関係のエラーが起きやすいのではないかと思います。

今回まさにリモート環境のバージョンに合わせてライブラリがインストールされるため、意図しないエラーが発生したのですが、

まず、どのバージョンがインストールされているか確認してみましょう。

Functionsのメニューから「SSH」を選択してコンソールに入ります。

インストールされているフォルダは、以下のようなパスです。多少異なるかもしれません。。。

/home/site/wwwroot/.python_packages/lib/site-packages

原因になるバージョンを確認して、requirement.txtを修正して再度デプロイすると上手くいきます。

私の場合は、原因は「databricks-sql-connector」というライブラリの依存関係でエラーが発生していたので「databricks-sql-connector==1.0.1」と固定すること解決しました。

読んで頂きありがとうございました!

AzureIT
この記事を書いた人

旅に恋したリアルトラベラーの自由な個人旅行の記録

41か国・国内47都道府県を歩いてきた、旅を暮らしの延長として楽しむ34歳。話題性よりも、自分の目で見たい景色を選び、ルートも宿も交通手段もすべて自分で手配する――そんな旅が、私にとっての醍醐味です。

個人手配で旅をするようになってから、気づけば10年が経ちました。
このブログでは、自分の足で歩いた旅の記録とともに、個人旅行の手配や準備のノウハウを紹介しています。

「個人で自由に旅してみたい」——そう思ったあなたの背中をそっと押せるような存在になれたら嬉しいです。

shimacoをフォロー
ShimacoTrip