Amazon Web Service(AWS)のElastic Compute Cloud(EC2)上にWindows Server 2022/.NET 6の環境を構築し、Webアプリケーション(ASP.NET Core Web MVC)をデプロイするまでの流れを解説します。
手順の把握に主眼を置き、必要最低限の構成となります。また、作業者のIAMユーザーアカウントに対し、AmazonEC2FullAccessのポリシーを付与しています。
環境
利用サービス
- AWS EC2
実行環境
- Microsoft Windows Server 2022 Base
- .NET 6
- IIS10
- Microsoft Edge
開発環境
- Windows 11
- .NET 6
- Visual Studio 2022
実行環境の構築
以下の作業を行います。
AWS EC2のインスタンスを作成する
AWSにサインインして、EC2サービスの利用を開始します。
コンソールのホーム画面が表示されたら、左上の”サービス”–“コンピューティング”から“EC2”を選択してください。
EC2ダッシュボードが表示されたら、[インスタンスを起動]ボタンをクリックし、インスタンス(仮想サーバー)の作成を行います。
- 名前とタグ
インスタンスの名前を入力します。今回は“AdvEC2Sample”とします。
- インスタンスタイプ
CPUとメモリの仕様を選択します。今回は“t2.micro”を選択します。
- キーペア(ログイン)
リモート接続用パスワードの復号に必要なキーペアを登録します。
今回は新規にキーペアを作成します。
キーペア名は任意です。今回は“Sample”とします。
プライベートキーファイル形式は.pemを選択します。
[キーペアを作成]ボタンをクリックすると、プライベートキーファイルがダウンロードされます。
- ネットワーク設定
ファイアウォール(セキュリティグループ)
今回は新規にセキュリティグループを作成します。 [セキュリティグループを作成する]にチェックを入れて作成を進めることで、VPCサービス内のセキュリティグループ(ファイアウォールルール)が新規に作成されます。
“RDP トラフィックを許可する”にチェックを入れて作成を進めることで、専用ポートの解放が行われ、ローカル環境端末からのリモート接続が可能になります。 また、“インターネットからの HTTP トラフィックを許可”にチェックを入れることで、インターネット経由でのアクセスが可能になります(IPv4のみ)。
インスタンスの起動後、ステータスのチェックが実行されます。
作成したインスタンスの概要ページ下部にある”ステータスチェック”タブ から確認が可能です。
システムステータス、インスタンスステータスの両方が合格になれば、正常に起動完了です。
リモートアクセスする為の機能をローカル端末に用意(RDP)
作成したサーバーにリモート接続を行う準備を行います。
インスタンス概要ページ内の[接続]ボタンをクリックし、[インスタンスに接続]画面に移動します。
“インスタンス情報の記述に失敗~”の旨のエラーが出ますが、セッションマネージャーを利用してリモート接続しない場合は問題ありません。
画面内で[RDPクライアント]を選択し、[リモートデスクトップファイルのダウンロード]をクリックすると、リモート接続用のファイルがダウンロードできます。このファイルをデスクトップ上などに配置し、ダブルクリックすることでAWS 上のWindows Serverにリモート接続できます。
実際に接続を試す前に、"パスワードを取得"をクリックし、リモート接続に必要なパスワードを取得します。
インスタンス作成時に作成したプライベートキーファイル(.pem)をアップロードし、[パスワードを復号化]ボタンをクリックします。
RDPクライアントの画面に戻り、”パスワードを取得”が表示されていた辺りに、生成されたパスワードが表示されています。このパスワードはコピーして、保管してください。
ローカル環境のデスクトップ上など、任意の場所に配置したリモート接続のファイルをダブルクリックし、リモート接続します。発行元の識別やセキュリティ証明書エラーは「接続」「はい」で進めて問題ありません。
また、資格情報の入力を要求されるので、先ほど保管したパスワードを入力します。
”このアカウントを記憶する”にチェックを入れると、次回以降パスワードの入力が不要になるので、必要に応じてチェックを入れてください。
リモート接続され、Windowsのデスクトップ画面が表示されたら接続成功です。
Windows Serverの環境を構築
以下の作業を行います。
- Windows Updateの確認
- 言語やタイムゾーンの調整
- IIS アプリのインストール、動作確認
- .NET Windows Server Hostingのインストール
Windows Updateの確認
左下のスタートボタン–Settings(設定)–Update&Security(更新とセキュリティ)から、[Check for Update]を押下し、Windows Updateを確認します。
言語やタイムゾーンの調整
作成したばかりのWindows Serverは、標準ではタイムゾーンやリージョン、言語が日本向けではない為、必要に応じて変更してください。今回は日本向けの設定に調整します。
左下のスタートボタン – Settings(設定) – Time&Language(時刻と言語)から、各項目を変更します。Speech(音声認識)は今回設定しません。
Date & timeページ内で、タイムゾーンを変更します。 今回は“(UTC+09:00) Osaka, Sapporo, Tokyo”に変更します。
続いて、Regionページ内で、国や地域を変更します。 今回はCountry or regionで“Japan”を選択します。
次に、Languageページ内で、言語の変更を行います。
日本語の言語パックはインストールされておらず、”Windows display language”のドロップダウンリストには日本語が表示されません。適用するために、まずは言語パックのインストールが必要です。
⊞ Add a languageをクリックし、追加する言語を選択します。
言語を検索するウィンドウが開きます。テキストボックスに”ja”などを入力すると、候補が検索され、日本語を簡単に見つけることができます。日本語を選択して[Next]をクリックします。
次に、インストールする項目を選択します。 今回はデフォルトのまま[Install]ボタンをクリックします。
言語パックのインストールが完了すると、”Windows display language”のドロップダウンリストで日本語が選択できるようになります。これを選択する事で、表示言語が日本語に変更されます。
変更を反映させるには、一度サインアウトする必要があります。[Yes, sign out now]でサインアウトし、数分ほど時間を空けて再度リモート接続しましょう。
再接続し、日本語表示が適用されていれば設定完了です。
IISアプリのインストールを行う
サーバーマネージャーを起動します。
初回起動時はサーバーの情報をチェックしていて、少しのあいだ操作を受け付けません。
②役割と機能の追加 部分をクリックし、機能のインストールを行います。
“開始する前に”の内容を確認し、[次へ]をクリックします。
- インストールの種類
役割ベースまたは機能ベースのインストールを選択して[次へ]をクリックします。
- サーバーの選択
サーバープールからサーバーを選択を選択状態で、アクセス中のサーバーを選択します。
- 役割の選択
リストの中から”Web Server(IIS)”を探し、チェックを入れて[次へ]をクリックします。
追加を確認する画面が出現しますが、デフォルトのままで[機能の追加]をクリックします。
- 機能の選択
必要な機能が有る場合、適宜追加します。今回はデフォルトのまま[次へ]をクリックします。
- 役割サービス
必要な機能が有る場合、適宜追加します。今回はデフォルトのまま[次へ]をクリックします。
指定した条件で機能のインストールが実行されます。正常完了したら[閉じる]で終了します。
インストール完了後、サーバーマネージャー上にIISの表示が追加されます。
IISの動作を確認する
インターネット インフォメーション サービス(IIS)マネージャー を起動し、動作を確認します。
左メニューバーのリストを展開し、[🌎Default Web Site]をクリックします。 右カラム中段の“Webサイトの参照 *:80(http) 参照”をクリックし、ブラウザーでWebページが表示可能か確認します。
Webブラウザーが起動し、青い画面が表示されれば、IISの動作に問題はありません。
リモート接続の画面は最小化しておき、ローカル環境からも同じページにアクセス可能か確認します。
AWS EC2画面でインスタンスのパブリックIPv4アドレス、もしくはパブリックIPv4 DNSをコピーし、Webブラウザーのアドレスバーにペーストしてアクセスします。
先程と同じページが表示されれば、IISの動作確認は完了です。
.NET Windows Server Hostingのインストールを行う
IISでASP.NET CoreのWebアプリケーションを公開するには、Hosting Bundleに含まれるIIS runtime support(ASP.NET Core Module)が必要になります。
Windows Server上でWebブラウザーを起動し、” Microsoft "、".net”などで検索し.NETのダウンロードページにアクセスします。
公開するWebアプリケーションの.NETバージョンに合ったページにアクセスし、Hosting Bundleをダウンロードします。今回は.NET 6.0版をダウンロードします。
“全 .NET 6.0 ダウンロード”のリンクをクリックして.NET 6.0コンポーネントのダウンロードページに移動します。
.NET 6.0のダウンロードページへ移動したら、画面内で“ASP.NET Core ランタイム”のエリアを探します。ダウンロードリンクの中から“Hosting Bundle”を見つけたら、クリックしてダウンロードします。
インストーラーがダウンロード出来たら、インストールを行います。
インストール完了後、 IISマネージャーからサーバーを再起動してください。
アプリケーションの配置
IISと.NETランタイムの準備が整ったら、アプリケーションをWebサーバーへ配置します。
方法はシンプルで、Webサーバーに配置できるようにアプリケーションを加工した後、アプリケーションのフォルダーをリモート接続先のサーバー上にコピーペーストします。
なお、この手順で使用しているアプリケーションは以下のURLからダウンロード頂けます。
https://www.adv.co.jp/download/blog/deploy-excelcreator11-ec2-windowsserver2022/EC11WebSample.zip
Webサーバーに配置する為のファイルを生成
作成済のアプリケーションを開発環境のVisual studioで開き、プロジェクト上で右クリック、[発行]をクリックします。
発行プロファイルを作成します。
今回はターゲットに”フォルダー”を選択し、[次へ]をクリックします。
ファイルの出力先を指定します。任意の場所を指定してください。
今回はC:\の直下に新規フォルダーを作成して指定します。
プロファイル作成が完了すると、公開準備が完了した旨の表示が出るので、[発行]ボタンで発行します。
発行が正常に完了すると、公開が成功した旨の表示が出ます。
Visual Studio上での作業は以上になり、Visual Studioは終了して構いません。
アプリケーションを実行環境に移動
発行したアプリをフォルダーごとコピーし、Windows Server画面を表示させて、任意の場所にペーストします。
今回はC:\inetpub直下にペーストします。IISのインストールが完了していれば、C:\の直下にinetpubフォルダーが作成されている筈です。
※リモート接続画面を縮小して並べています。
IISを使用してアプリケーションを公開
いよいよ、Windows Server上でWebアプリを公開する準備になります。
IISマネージャーを起動し、動作確認時と同様に左メニューバーのリストを展開します。
アプリケーションプールの追加
アプリケーションの公開前に、アプリケーションプールの設定を行います。
[アプリケーションプール]を右クリックし、”アプリケーションプールの追加”をクリックします。
アプリケーションプールの名前は任意です。今回は“Sample”とします。
.Net CLRバージョンは”マネージコードなし”、マネージドパイプラインモードは“統合”を選択して[OK]をクリックし、アプリケーションプールを追加します。
Webサイトの追加
左メニューバーのリストから[🌎Default Web Site]を右クリックし、削除します。
次に[サイト]上で右クリック、[Webサイトの追加]をクリックします。
アプリケーションプール:先ほど作成したアプリケーションプールを指定します。[選択] ボタンをクリックすると、アプリケーションプールの選択画面が開きます。
サイト名:任意です。今回は“AdvEC2Sample”とします。
物理パス:アプリケーションを配置したフォルダーを指定します。
バインド については、今回は以下の通り設定します。
Webサイトを直ちに開始するにチェックを入れ、[OK]をクリックします。
アクセス許可と認証の設定
Webサイトの追加が完了したら、サイトへのアクセス許可および認証について設定を行います。 [サイト]の下に先ほど入力したサイト名が表示されたら、サイト名をクリックしてホーム画面を表示させます。
アクセス許可の編集
サイト名を右クリック、[アクセス許可の編集]をクリックし、フォルダーのプロパティを編集します。
[セキュリティ]タブを選択し、[編集]をクリックすると、アクセス許可の編集画面を呼び出せます。
[追加]をクリックし、”ユーザーまたはグループの選択”画面を呼び出したら、テキストボックスに“IIS_IUSRS”と入力し、[名前の確認]ボタンをクリックします。
先程入力した文字列の前方にサーバー名が追加されていれば、[OK]をクリックします。
IIS_IUSRSに対するアクセス許可の編集を行います。
アクセス許可のチェックボックスは“変更”もしくは“読み取りと実行”を任意で選択します。
今回は”変更”にチェックを入れ、[OK]で閉じます。プロパティ画面も[OK]で閉じます。
認証資格情報の編集
中央の[認証]をダブルクリックし、画面を移動します。
匿名認証を右クリックし”編集”をクリックすると、認証資格情報の編集画面が表示されます。 ※認証の名前一覧は、環境によっては他の名前も表示されている場合があります。
今回はアプリケーションプールIDを選択します。
[OK]をクリックして閉じたら、IISマネージャー上での編集作業は終了です。IISマネージャーは閉じても構いません。
再びAWS EC2画面でインスタンスのパブリックIPv4アドレス、もしくはパブリックIPv4 DNSをコピーし、ローカル環境のブラウザーからアクセスします。
期待通りの画面が表示されれば公開完了です。
ダウンロード後のExcelファイル
[データ一覧]
取得したデータの一覧を新規作成したExcelファイルに書き込み、ダウンロードします。
[納品書]
取得したデータを基に納品書を作成し、ダウンロードします。
さいごに
ExcelCreator11をWebアプリに組み込みEC2(AWS)のWindows Server 2022にデプロイするまでを解説してきました。
今回は以上です。ありがとうございました。