Azure Functionsでトリガーが認識されなくなったら、環境変数を確かめよう
記事の要約
Azure Functionsでは、設定→構成→アプリケーション設定
から環境変数を追加できますが、使用してはならない名前があります。今回のケースでは、CONTAINER_NAME
というキーの追加により、トリガーの認識が失われる不具合に直面しました。
問題の発生
Azure FunctionsでCosmos DBへの接続設定を行っていたところ、Function Appのトリガーが突然認識されなくなりました。この問題により、Function自体が正常に動作しなくなりました。
↑ Azure Portalで作業していると、トリガーが認識されなくなった
原因分析
Azure Functionsを再作成し、作業を再現してみると、CONTAINER_NAME
という環境変数を追加したタイミングで問題が生じることが判明しました。これが既存の環境変数を上書きして、問題を引き起こしたのではないかと思います。
解決方法
環境変数の名前をよりユニークなものに変更することで問題を解決しました。無事にトリガーが正常に認識されるようになりました。
補足情報
さらに調べると以下のようなIssueがありました。
[BUG] Host won't start when adding CONTAINER_NAME as environment variable #793
これによると、CONTAINER_NAME
はホスティング環境を解決するために関数ランタイムによって使用される環境変数の1つらしいですが、詳細はよく分かりませんでした。
他にも、公式リファレンスで予約済み環境変数について説明がありました。
App settings reference for Azure Functions
ここにCONTAINER_NAME
についての記述はありませんでした。開発時の参考になればと思います。
まとめ
環境変数の設定には気をつけましょう。
私自身、「Azure Functions トリガー 認識されない」などと検索しても有益な情報が見つけられず、かなり苦労しました。また、CONTAIER_NAME
という環境変数は注意していなければ使ってしまいそうなものです。まさか予約済みだとは思いませんでした…。
この情報が、同じような問題に直面している人の役に立てば幸いです。