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
この記事を書いた人
shimaco

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

shimacoをフォロー
ShimacoTrip
タイトルとURLをコピーしました