Azure Functions, App Service でローカルからファイルを開く(Windows)#Azure リレー

こんにちは、さとはること佐藤晴輝です。

ローカルPCで動くプログラムでは、特定のディレクトリにあるファイルを開いてなんやかんやすることがよくあると思います。

Azure ではファイルは Blob Storage 等、別のサービスと接続することで管理するのが一般的だと思います。

しかし、ローカルにファイルがある前提のライブラリも多く、使えないと面倒な場面が存在します。

そこで、クラウド上のローカルディレクトリ(?!)を扱う方法について解説したいと思います。

忙しい人向けの方法

d:\home

上記の通り、ホームディレクトリ以下が使えます。

詳しい解説

App Service は一般にPaaS(Platform as a Service)と呼ばれるものの一つです。

また、Azure Functions は裏では App Service のインスタンスが起き上がって実行しているので以下では App Service について説明していきます。

PaaSの特徴として、ユーザーはコンピュータの物理的なマシンやOS、実行環境などを気にする必要がないというものがあります。

一方でローカルのファイル管理は通常、OSが担当しており、PaaSでは触れない領域なようにも思えます。

そこで、App Service では裏でどのように管理しているかを気にすることなく使用可能な領域が用意されています。

d:\home

上記領域内のファイルは、一つのアプリに関連するすべての仮想マシンのインスタンスで共有されています。

逆に、すべてのインスタンスのそれぞれで管理される領域も用意されています。

d:\local

こちらはホームディレクトリと違いインスタンス毎に完全に独立しており、インスタンスが再起動されたタイミングで保存された内容も削除されます。

また、インスタンス自身が持っているディレクトリに書き込む分ホームディレクトリより高速であるという点も特徴です。

一般的なPCのローカルディレクトリとは異なる挙動なので、クラウド特有のインスタンス等の扱いがわかっている方や、クラウドネイティブな開発を目指したい方は挑戦してみるのもいいかもしれません。

参考

オペレーティング システムの機能 – Azure App Service | Microsoft Docs

Azure Web Apps のファイルシステムについて (Windows と Linux) – (仮) ブログ (hatenablog.com)