AzurePaaS研究サイト

~理解しずらい情報をシンプルにお伝えします~

【WindowsOS】AppServiceプランの外部ストレージと内部ストレージを理解する

外部ストレージ領域とは

以下の場所を指します。
d:\home

主に、ログが出力されたり、アプリケーションがデプロイされる場所(D:\home\site\wwwroot)あたりのことを指します。

 
アプリケーション処理でファイル入出力する場合は、こちらの外部ストレージ領域を使いましょう。内部ストレージ領域に保存してしまうと、再起動で削除されてしまうからです。
 
もし、外部ストレージ領域のサイズを増やしたければ、App Service プランの場合はスケールアップFunctions の従量課金プランの場合は指定したストレージアカウントのサイズを増やすと、アプリケーションの外部ストレージ領域のサイズを増やすことができます。

内部ストレージ領域 A とは

以下の場所を指します。
d:\local

内部ストレージ領域は、サイズを確認したり、サイズを増やしたりすることはできません。
 
アプリケーション処理でファイル入出力を行える領域ですが、外部ストレージ領域のところでも記述したとおり、アプリケーション処理のファイル入出力では外部ストレージ領域の使用をオススメします。
 
内部ストレージ領域で、ファイル入出力すること自体は悪いことではないですが、AppService/Functions の再起動でファイルが削除されます(初期状態にリセットされる)ので、理解した上で使用ください。
 
再起動は、Azure プラットフォームのメンテナンスによって勝手に再起動されることもあることも覚えておいてくださいね。
 
 

内部ストレージ領域 B とは

以下の場所を指します。
d:\home、d:\local 以外
 
こちらは、アプリケーションからアクセスできない領域です。ユーザが直接いじる必要は基本的にはありませんし、変にいじると環境が壊れてしまいます。
 
ひとつの App Service プランに登録している全てのアプリケーションが同じ内容になっています。(ひとつの領域を各アプリケーションが参照してます。) 
 
 

ストレージ領域は kudu サイトで内容を確認できます

 
該当 App Service > 開発ツールの高度なツール > 移動 > kudu サイト > Debug console タブ > CMD
で外部/内部ストレージ領域の内容を確認したり変更したりすることができます。

外部ストレージ領域には例えばこんなものが配置されてます

● d:\home\site\wwwroot ▶ Azure 上にデプロイしたアプリケーションコードが配置される
● d:\home\site\wwwroot\Modules ▶ インストールしたライブラリモジュールが配置される(d:\home\site\wwwroot\requirements.psd1 に記載されたモジュールが Modules フォルダに自動インストールされる仕組み)
● d:\home\LogFiles\eventlog.xml ▶ IIS 上で発生したイベントのログが出力される

内部ストレージ領域には例えばこんなものが配置されてます

● d:\Program Files ▶ たとえば、Git・apatch-tomcat・MySQL・IIS・Java などがインストールされています。
● d:\Python34 ▶ Python がインストールされています。
   
以上です。
 

ご意見・ご要望はこちらへ