AppServiceとFunctionsを利用する際に、
「デプロイしたアプリケーションはどこに配置されるのか」
「アプリケーション処理でファイル入出力するとき、どこのサーバ領域を使えるのか」
など気になると思いますので、この記事ではその辺りの内容を料金プランごとに説明していきます。
AppServiceプランの場合(AppService/Functions共通)
AppServiceプランを作ると、AppServiceプラン用のストレージ領域が用意されます。(ストレージアカウントのリソースが作成されるわけではないのでご理解ください)
デプロイについて
デプロイやKuduサイトAppServiceとFunctionsに同じAppServiceプランを指定した場合、同じストレージ領域が使用されます。アプリケーションのAzure上へのデプロイについては、AppService/Functionsを新規作成した際に指定したAppServiceプランのストレージ領域にアプリケーションデータがデプロイ(配置)されます。
アプリケーションコードがデプロイ(配置)される場所
d:\home\site\wwwroot に配置されます。
デプロイ後に、Kuduサイトで確認できます。Kuduサイトは、こちらの記事で説明してます。
公開情報
AppServiceプランのプランの種類ごとのストレージサイズはこちらの公式ドキュメントに書かれてます。
azure.microsoft.com
===== 抜粋ここから =====
===== 抜粋ここまで =====
Functionsの従量課金プラン・Premiumプランの場合
FunctionAppのリソースを新規作成する際に、ホスティングタブのストレージアカウントで指定したリソースのストレージ領域が使用されます。
デプロイについて
Functionsの従量課金プラン・Premiumプランの場合は、指定したストレージアカウントのファイル共有にデプロイされます。
Functionsに割り当てるストレージアカウントを仮想ネットワーク上にセキュアに構成する
以下を構築すると、Functionsに割り当てるストレージアカウントはパブリックアクセスを拒否できて、ストレージアカウントへのアクセスがプライベート接続で通信できます。
(1)仮想ネットワークを作成 ※サブネットも作成
(2)ストレージアカウントを作成
(3)Functionsを作成 ※ストレージアカウントは(2)を指定
(4)ストレージアカウントにプライベートエンドポイントを作成などする
(5)Functionsのネットワーク設定からVnet統合する
ストレージ領域の活用方法
アプリケーション処理でファイル入出力を行う
アプリケーション処理でAzureサーバ上にファイル入出力したいケースががあると思います。
ファイルの保存先は、外部ストレージ領域のD:\home\site\wwwroot配下になります。
D:\homeなどのファイルシステムに保存するように実装されている場合にはファイルは暗号化されません。保存するファイルを暗号化したい場合は、アプリケーション側の実装・処理で暗号化されるStorageAccountにファイル保存する必要があります。
デプロイについて
FunctionsがAppServiceプランを利用している場合は、先述したとおりd:\home\site\wwwrootにデプロイ(配置)されます。
しかし、Functionsの従量課金プランとPremiumプランの場合は、Zipデプロイという方法が推奨されています。
Zip デプロイ
Functionsのアプリケーション設定に、以下が設定されているとAzure側が関数アプリケーションを実行するときは、d:\home\data\SitePackages フォルダー内のパッケージ ファイルから実行します。
名前:WEBSITE_RUN_FROM_PACKAGE
値 :1
こうすることで、従量課金プランの場合のコールドスタートが緩和される効果があります。(コールドスタートについては、こちらの記事をご参考ください)
しかし、Zipファイルがデプロイされるので、kuduサイトでプログラムコードの参照や変更ができなくなりますが、どうせプログラムコードの参照や変更はVisualStudioからしかやらないわ、という方にはデメリットにはならないと思います。
===== 抜粋ここから =====
AzureAppServiceでは、デプロイZIPパッケージファイルから直接アプリを実行できます。この記事では、アプリでこの機能を有効にする方法を示します。
===== 抜粋ここまで =====
アプリケーションデータを暗号化して保存する
Microsoftはセキュリティ対策がよくされているとはいえ、クラウド上にアプリケーションデータを暗号化せずにアップロードすると心配だから暗号化したい!という方のための情報です。
以下は、デプロイしたリソースをストレージアカウント上に暗号化して保存する際の公式ドキュメントです。
===== 抜粋ここから =====
AzureStorageでは、データはクラウドに永続化されるときに自動的に暗号化されます。AzureStorage暗号化によってデータは保護され、組織のセキュリティおよびコンプライアンスコミットメントを満たすのに役立ちます。
===== 抜粋ここまで =====
以上です。