ほりひログ

所属組織の製品 (Azure とか) に関連する内容が多めだけど、個人の見解であって、所属組織を代表する公式情報ではないです。

Deno と Azure App Service (Functions 含む) の現状

少し前に Deno 1.2.0 がリリースされていました。

このリリースで、Windows 版のAzure App Service での動作が改善しました。
# Linux 版の App Service では、これまでのリリースでも問題ありませんでしたが。

具体的には 下記の 2 つの issue です。

ユーザー プロファイル問題

1 つ目の issue は、Deno が起動時にユーザー プロファイルの読み込みに失敗し panic になる、というものです。

github.com

これはアプリケーション設定 WEBSITE_LOAD_USER_PROFILE を設定することで回避できることが、しばやんさんからコメントもらってました。
一方で、このプロファイルに関するアプリケーション設定は、占有型の App Service プラン (Basic 以上) でのみ使用可能な方法ため、Free (F1), Shared (D1) では Deno は動かせない状態でした。

issue を上げたのが去年の 12 月だったので、半年以上進展がない状態でしたが、「この PR で直ってると思うよ、確認して」と v1.2.0 のリリースにマージされた下記 PR を案内されました。

f:id:horihiro:20200724151055p:plain github.com

v1.2.0 を App Service (Free) にデプロイして試してみると、確かに panic は出なくなっていました。

すばらしい!

これで、Free, Shared といったお試しプランで、Deno を試すことができます。

Azure Functions での標準入力問題

2 つ目の issue は、Azure Functions のカスタム ハンドラーとして deno v1.1.x を使った時に、deno run 時に panic になる、というものです。

こちらも Windows 版のみで発生していた問題で、v1.0.x までは上記 WEBSITE_LOAD_USER_PROFILE を設定することで問題なく動いていたところで、v1.1.x で突如発生しました。

github.com

Azure Functions の function host のプロセスが標準入力を無効にした状態でカスタム ハンドラー用のプロセスを起動しており (これは「by design だ」と言われました)、Deno が起動時に標準入力が取れず panic になっているようでした。

Azure Functions 以外でも、標準入力を無効にして Deno を起動するとリプロすることが分かったので、「これでリプロするよ」と貼り付けたら、さっきの PR と同じ方が「じゃあ、俺やるよ」と颯爽と現れ、サクっと直してくれたようです。

github.com

何者なんでしょうか。。。

何はともあれ、今のところ Azure App Service 上で Deno を使うときのめぼしい問題は片付いたように見えます。