現象
Azure Functionsをfunc azure functionapp publish
でパブリッシュする際、
処理は「デプロイ」「トリガーの同期」の二段階で進みます。
- デプロイ開始:Starting the function app deployment...
- デプロイ終了:Deployment completed successfully.
- トリガーの同期開始:Syncing triggers...
- トリガーの同期終了:緑色で各種URLが表示される
しかし稀に、「デプロイは成功して、そのままトリガーの同期に進まずに終わってしまう」という場合があります。
以下のスクショのように「Syncing triggers...」が始まらない。
特にエラーが出るわけでもなく、ただ「デプロイのみ実行して満足している」状態。publish全体は完了しておらずfunctionは古いままになるんですが、エラーが出ないせいで問題の原因が特定しづらく、非常に困ります。
回避方法
一旦は「handler関数の中身をちょっといじって再デプロイすればOK」でした。
例えば↑のように、handler関数内から別の自作モジュールをimportして、
その関数を呼び出すことはよくあると思うんですよね。
この場合、import先(この場合はmain)を修正してもトリガーの同期はされないままでした。
handler関数(この場合はExampleFuncHTTP)の直下を修正してあげると、
それによって「トリガーに変更があったので同期する!」とスイッチが入るようですね。
根本原因と対策は・・・
なんかもっと、本質的な部分で根本原因と対策がありそうな予感はしています。
根本対処など詳しい方いらっしゃれば、コメントお待ちしてます!
しかし、もうちょっとAzure側でなんとかしてほしいところではありますよね。。
参考サイト
Azure Functions のトリガーの同期とは - Japan Azure PaaS Support Team
Azure FunctionsでPrismaを使おうとしたらcli からのデプロイでドハマりしたメモ
【Azure】(Syncing triggers...)で関数アプリが同期できない