この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
いわさです。
知らなかったのですが、Azure App Service on LinuxにてAzureストレージコンテナをマウント出来るらしいです。
カスタムコンテナーでも対応しているようなので、通常のマウントと同じ感じであれば永続ストレージとして気軽に使えそうです。
少し触って確認してみました。
ためしてみた
Blobコンテナーをマウント。ポータルから設定するのみで簡単
アプリ構成
->パスのマッピング
から、マウントの設定を行うことが出来ます。
マウント後、Web SSHでアクセスして確認してみます。
_____
/ _ \ __________ _________ ____
/ /_\ \___ / | \_ __ \_/ __ \
/ | \/ /| | /| | \/\ ___/
\____|__ /_____ \____/ |__| \___ >
\/ \/ \/
A P P S E R V I C E O N L I N U X
Documentation: http://aka.ms/webapp-linux
PHP quickstart: https://aka.ms/php-qs
PHP version : 8.0.3
Note: Any data outside '/home' is not persisted
root@7dfab1914ab5:/hogemount# df -h
Filesystem Size Used Avail Use% Mounted on
none 48G 29G 18G 63% /
tmpfs 64M 0 64M 0% /dev
tmpfs 962M 0 962M 0% /sys/fs/cgroup
shm 62M 0 62M 0% /dev/shm
//10.0.160.10/volume-24-default/40eb363fed953cc0b614/e761e9dfb6644e919e4a8ee5cb7585c2 1000G 6.7G 994G 1% /home
/dev/sda1 62G 39G 23G 63% /appsvctmp
blobfuse 35G 1.4G 32G 5% /hogemount
/dev/loop0p1 48G 29G 18G 63% /etc/hosts
udev 944M 0 944M 0% /dev/tty
tmpfs 962M 0 962M 0% /proc/acpi
tmpfs 962M 0 962M 0% /proc/scsi
tmpfs
マウントされていますね。
マウントパスで指定されるディレクトリはマウントされると削除されてしまうので、空のディレクトリを指定するように注意してください。
マウントされた先でファイルを作成してみます。
root@7dfab1914ab5:/hogemount# touch hoge.txt
touch: cannot touch 'hoge.txt': Read-only file system
失敗しました。読み取り専用だと。
Blobストレージのマウントは読み取り専用のみ、Azure Filesであれば書き込みも可能
よく読んで見るとドキュメントには以下の記載がありました。
Azure Files (読み取り/書き込み)。
Azure BLOB (読み取り専用)。
では、Azure Filesでもマウントをしてみましょう。
ちなみに、Azure FilesというのはAzureストレージのファイル共有サービスのことです。
ストレージアカウントのファイル共有メニューから作成することが出来ます。
早速、新たなファイル共有を作成したので、もう一度Azure App Serviceへマウントさせてみましょう。
追加でマウントさせることが可能ですが、「アプリあたりマウントポイントは最大5つまで」という制限があるようです。
_____
/ _ \ __________ _________ ____
/ /_\ \___ / | \_ __ \_/ __ \
/ | \/ /| | /| | \/\ ___/
\____|__ /_____ \____/ |__| \___ >
\/ \/ \/
A P P S E R V I C E O N L I N U X
Documentation: http://aka.ms/webapp-linux
PHP quickstart: https://aka.ms/php-qs
PHP version : 8.0.3
Note: Any data outside '/home' is not persisted
root@326df947faf6:/home# df -h
Filesystem Size Used Avail Use% Mounted on
none 48G 29G 18G 63% /
tmpfs 64M 0 64M 0% /dev
tmpfs 962M 0 962M 0% /sys/fs/cgroup
shm 62M 0 62M 0% /dev/shm
//10.0.160.10/volume-24-default/40eb363fed953cc0b614/e761e9dfb6644e919e4a8ee5cb7585c2 1000G 6.7G 994G 1% /home
/dev/sda1 62G 39G 23G 64% /appsvctmp
blobfuse 35G 1.4G 32G 5% /hogemount
//iwasastorage20210908.file.core.windows.net/hoge-share 5.0T 0 5.0T 0% /hogewrite
/dev/loop0p1 48G 29G 18G 63% /etc/hosts
udev 944M 0 944M 0% /dev/tty
tmpfs 962M 0 962M 0% /proc/acpi
tmpfs 962M 0 962M 0% /proc/scsi
tmpfs
追加のマウントとが出来たので、ファイルを作ってみましょう。
root@326df947faf6:/home# cd /hogewrite/
root@326df947faf6:/hogewrite# touch hoge.txt
作成できたました。
Azureポータルからも見てみるとファイルが格納されていることが確認出来ます。
なお、マウントされていてもApp Serviceのバックアップ機能ではマウントしたストレージコンテナはバックアップされないので、Azure ストレージ側でバックアップ対策を取る必要がある点にも注意してください。
さいごに
ストレージサービスをマウントしてええんかいという声も聞こえてきそうですが、ドキュメントでは容量やスループットの要件に応じて適切に使い分けることがベストプラクティスだと記載されています。
以下に、スケーラビリティとパフォーマンスターゲットというページがあり、どういう性能要件のときにこれらが利用できそうなのか参考になると思います。
なお、SQLiteなどのローカルデータベースに利用したりすることは非推奨となっており、ファイルハンドルやロックに依存するアプリケーションで利用することも非推奨となっています。
ユースケースとしては動画や画像などの静的コンテンツを共有したりログファイルのアーカイブ先に直接使うような用途が想定されているようです。