🙄

【第1回】Azureで社内システム再現(オンプレ編)|Azure FilesとIISでアプリをホスト

に公開

概要

「Azureで社内システム再現(オンプレ編)」では、
AzureのIaaSサービスを使って簡単な社内システムを再現します。

機能としては、社員番号を入力して検索ボタンを押すと、
対応する名前を表示するだけのシンプルなものです。

※詳しい全体構成については、【第0回】Azureで社内システム再現(オンプレ編)|構成図と動作の流れで紹介しています。


システム構成(今回の対象範囲)

以下は、最終的に構築を目指す全体構成図です。

azure_onpre_joutai (2).png

この記事では、赤枠で囲っている部分が対象です。
IISからAzure Filesに配置したアプリケーションのファイル(HTML / JavaScript)を参照して表示する構成を作成します。

IISではこの共有フォルダをマウントして参照しており、Webページとしてそのまま配信できる構成です。
これにより、アプリの更新時はAzure Files上のファイルを差し替えるだけで反映されるようにします。


Azure Filesの作成とファイルの配置

Azure Portalから、ストレージアカウントを作成し、その中にファイル共有(Azure Files)を作成します。

スクリーンショット 2025-04-11 22.02.22.png

作成したファイル共有には、Webアプリケーションで使用する静的ファイルをアップロードしておきます。
これらのファイルは、後ほどIISサーバーからマウントして参照することになります。


IISサーバーへのマウント(Azure Files)

作成したAzure Filesは、IISをインストールした仮想マシン上にネットワークドライブとしてマウントします。
今回は、Yドライブとして割り当てました。

スクリーンショット 2025-04-11 22.03.31.png

エクスプローラ上でも、正常にマウントされていることが確認できます。

スクリーンショット 2025-04-11 22.04.49.png


IISでの仮想ディレクトリ設定

IISでは、マウントしたYドライブを仮想ディレクトリとして設定し、Web上に公開します。

 .PNG

仮想ディレクトリ名は employee-app とし、物理パスには Azure Files の UNC パス(\\<ストレージアカウント名>.file.core.windows.net\<ファイル共有名>)を指定しました。

※注意
Y:\ のようなネットワークドライブ経由のパスを指定すると、IISの実行ユーザーからアクセスできないことがあります。
そのため、仮想ディレクトリには UNC パスを直接指定することが推奨されます


アクセス時のエラーと対処

仮想ディレクトリの設定を終え、ブラウザからアクセスを試みたところ、403エラーが発生しました。

スクリーンショット 2025-04-11 22.24.02.png

403エラーは、アクセス権限が不足している場合によく発生します。
そのため、IISがAzure Filesに対してアクセスできていない可能性があると考えました。

調査を進める中で、以下の参考サイトを発見しました。

Azure FilesをWindowsでユーザー指定マウントする方法(jpaztech.github.io)

このページでは、PowerShellの New-SmbGlobalMapping コマンドを使って、
Azure Filesを“他のユーザーからも利用できる状態で”マウントする方法が紹介されています。

通常の net use コマンド※によるマウントでは、コマンドを実行したユーザーにしかマウントが見えません。

※Azure Portalの「接続」メニューで表示されるPowerShellスクリプトにも使われている一般的なマウント方法

そのため、IISなど別のユーザー(たとえば IUSR やアプリケーションプールの実行アカウント)からは、Azure Filesにアクセスできず、403エラーになったんじゃないかなと考えました。


New-SmbGlobalMapping コマンドの実行

以下のコマンドを使用して、Azure Files を Yドライブにマウントしました。

# ストレージアカウント名をユーザー名として指定
$User = "localhost\<ストレージアカウント名>"

# アクセスキーをパスワードとして指定
$PWord = ConvertTo-SecureString -String "<ストレージアカウントアクセスキー>" -AsPlainText -Force

# 認証情報(Credential)を作成
$Credential = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $User, $PWord

# Azure Files を Y ドライブにマウント(他のユーザーからも参照できるように)
New-SmbGlobalMapping -RemotePath "\\<ストレージアカウント名>.file.core.windows.net\<ファイル共有名>" -Credential $Credential -LocalPath Y: -Persistent $true

アクセス確認

グローバルマウントを行った後、ブラウザから再度アクセスを試みたところ、
Webページが正常に表示されるようになりました。

スクリーンショット 2025-04-11 22.37.48.png

これで、Azure Files 上に保存された HTML / JavaScript ファイルを、
IIS を通じて Web ページとして配信できることが確認できました。

Discussion