Azure App Service on Windows での Azureストレージマウント機能を設定してみる

2022.05.10

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

いわさです。

以前、Azure App ServiceへAzureストレージをマウントさせる機能を紹介させて頂きました。

本日時点では、Microsoft LearnなどでもApp Service on Linuxでのみマウント可能である旨記載がされていたのですが、App Service on Windowsでもパブリックプレビューで利用出来ることに気づきました。

本日は実際にマウントして使ってみました。

ためしてみた

以下のドキュメントでも手順については記載されています。
Linux ContainerとWindows ContainerがGAとなっていて、Windows Codeはプレビューという状態のようです。

Windowsの.NET 6で環境を作成します。
また、Azureストレージアカウントにファイル共有を作成しておきます。

App Serviceの構成メニューから、パスマッピングを選択します。
「ストレージのマウント(プレビュー)」メニューで「新しいAzure Storage マウント」から追加を行います。

マウントパスは、/mounts/配下に作成する必要があり、固定となっています。
WindowsのドライブとしてはCドライブ直下にmountsが存在し、このマウントパスで指定したディレクトリにマウントされます。

このマウントパスは少し制限があって、/mounts/hoge形式で設定が出来ます。
/mountsのみだったり、/mounts/hoge/fugaのようにレベルが深くなったパスはサポートされていません。

余談ですが、マウント設定の追加後に「保存」操作を忘れないようにしましょう。いつも忘れてしまいます。

設定を保存後、コンソール機能を使ってApp Service内からマウントされたディレクトリにアクセスしてみます。

              _    _____   _ ___ ___
             /_\  |_  / | | | _ \ __| 
       _ ___/ _ \__/ /| |_| |   / _|___ _ _ 
     (___  /_/ \_\/___|\___/|_|_\___| _____) 
        (_______ _ _)         _ ______ _)_ _ 
               (______________ _ )   (___ _ _) 

一般コマンド ('mkdir'、ディレクトリを変更する 'cd' など) を実行して、Web アプリ環境を管理します。これはサンドボックス環境であるため、管理者特権を必要とするコマンドは機能しません。
        
C:\home\site\wwwroot>cd /mounts/hoge

C:\mounts\hoge>touch hoge.txt

C:\mounts\hoge>ls
hoge.txt

マウントしたストレージアカウントのファイル共有から確認することが出来ました。

今回はシンプルにストレージをひとつマウントしましたが、アプリごとに最大5つまでマウントポイントの設定が可能です。
また、プライベートエンドポイントを有効化したストレージでも利用可能です。

さいごに

本日はApp Service on Windowsでのストレージマウントを使ってみました。
注意事項の多くはLinux時のストレージマウントと同じで、レイテンシー問題に対処するためにApp ServiceとAzureストレージを同じリージョンにしたり、App Serviceのバックアップ機能ではバックアップされない領域になるのでAzureストレージのバージョニングやスナップショット機能を必要に応じて併用します。

他にも注意事項や推奨事項が多いです。
ローカルDBなどの用途での利用は非推奨となっていますが、知らないと無意識に設定してしまいそうです。

以下のベストプラクティスには目を通しておきましょう。

Mount Azure Storage as a local share - Azure App Service | Microsoft Docs