【AWS|ASP.NET】ASP.NET Coreで作成したWebアプリを公開する

AWS

はじめに

前回はASP.NET Core MVCを用いて簡単なWebアプリを作成しました。

続いてこちらのアプリを公開することを考えてみます。
代表的なWebアプリを公開する手段としては以下の方法があります。

Microsoft AzureAWSGitHub Pages
サービスの種類クラウドプラットフォームクラウドプラットフォーム静的サイトホスティング
.NET Coreアプリの実行◎ 可能◎ 可能× 不可能
データベースの利用◎ 可能◎ 可能× 不可能
得意なこと.NET、Visual Studioとの深い連携豊富なサービス数、業界シェアNo.1シンプル、無料、コードと一緒に管理できる
今回のアプリの公開先として最適最適不適切

今回は、AWSを用いて公開する方向で進めていきます。

AWSのチュートリアルでRDSを構築するというものがあるので、これを獲得していこうと思います。

アプリ内容

前回の友人メモを公開するわけにはいかないので、新しく読書メモを作りました。

前回と同じように進めて作成しました。
モデルは、タイトルと評価・メモを残せるようにしています。

データベース作成

データベース作成

それではAWSのAurora and RDSでデータベースを作成していきます。
今回はMicrosoft SQL Serverを選択します。

またマスターユーザー名とマスターパスワードを設定し、記録します。
パブリックアクセスを「はい」にします。

その他いくつか設定して、作成できました。

セキュリティグループの設定

続いてセキュリティグループの設定を行っていきます。

現状のままだとデータベースに接続できません。
なので接続を許可する必要があります。

RDSで作成したデータベースを選択し、「VPCセキュリティグループ」と表示されている項目を選択します。

するとEC2のセキュリティグループに飛ぶので、セキュリティグループを選択し「インバウンドのルールを編集」を選択します。

こちらで新しいルールを追加していきます。
タイプをMSSQLにして、ソースに自分のIPアドレスを入れます。

自分のIPアドレスは「What Is My IPAddress」というWebページなどで知ることができます。

ルールを保存して、これで接続できるようになりました。

DBの接続先を変更する

Visual Studioでデータベースの接続先を変更します。
appsettings.jsonを開いて、ConnectionStringsセクションを以下のように変更します。

"ConnectionStrings": {
  "DefaultConnection": "Server=エンドポイント;Database=BookMemoDB;User Id=マスターユーザー名;Password=マスターパスワード;Encrypt=False"
}

変更出来たら、パッケージマネージャーコンソールでUpdate-Databaseを実行していきます。
上手くいけば前回のようにDone.と表示されるはずです。

拡張機能のインストール

Visual StudioにてAWSの拡張機能をインストールしていきます。
これを入れることでAWSへの操作が楽になるはずです。

インストールしたらまずログインします。

ログインするユーザーはIAMユーザーじゃないといけないので、作成します。
ポリシーに「AdministratorAccess」を設定しました。

アクセスキーとシークレットアクセスキーを保存しておきます。

アクセスキーを入力すると、ログインできました。

プロジェクトを右クリックすることで、「Publish to AWS…」という項目が増えています。

Publish to AWS

「Publish to AWS…」を選択して、AWSに上げていきます。
今回はWindows OSを借りていきます。
またリージョンはTokyoにしました。

EC2のインスタンスタイプはt3.microにしました。

確認ダイアログを押して、しばらく待つと成功しました。

DBセキュリティグループ修正

さっそく接続してみたところ、応答が返ってきませんでした。
Elastic Beanstalkの状態を確認してみると、異常が発生してそうです。

アプリケーションが起動した直後にクラッシュしています。

よくよく考えたら、DBのインバウンドルールを修正していませんでした。
それで接続できずに止まっていたんですね。
先ほどのように追加していきます。

EC2インスタンスのセキュリティ→セキュリティグループに書いてあるグループを追加します。

Elastic Beanstalkを再起動します。

今度はちゃんと動いていますね。

Webページにアクセスしてみると、ちゃんと表示されました。

料金

半日ほど動かしたのですが、料金が以下のようになりました。

EC2やVPCは以前の記事で動かしていたので、そこまで増えてはいないのですが、RDSの料金が高いですね。

RDSの内訳は以下の通りです。
起動しているだけで1時間ごとに0.03ドル必要になるんですね。

同じDBサービスとしては、DynamoDBならアイドルコストはかかりません。
しかしその場合、Entity Framework Coreが使えないようです、残念。

補足:レジストリ問題

AWSの拡張機能をインストールしたとき、インストールエラーが発生しました。

2025/10/22 (水) 15:34:04 - Skipping VSNgenRunner launch due to ngen argument being null or empty.
2025/10/22 (水) 15:34:04 - インストール エラー : Microsoft.VisualStudio.Setup.PackageFailureException: Package 'Microsoft.VisualStudio.Debugger.JustInTime.Msi' failed to install
   場所 
...

その後、Visual Studioの修復やクリーンインストールをしましたが、同様にエラーが発生していました。

インストールで問題が発生しました。

パッケージの不具合は、次の方法でトラブルシューティングできます:

    1. パッケージエラーごとに以下の検索 URL を使用して解決策を検索する
    2. 影響を受けるワークロードまたはコンポーネントの選択を変更してから、インストールを再試行する
    3. コンピューターから製品を削除してから、再度インストールする

問題が既に Developer Community で報告されている場合は、そこで解決策や回避策を見つけることができます。問題が報告されていない場合は、他の開発者が解決策や回避策を見つけられるように、新しい問題を作成することをお勧めします。Visual Studio インストーラーの右上にある [フィードバックの提供] ボタンから、新しい問題を作成できます。

================================================================================

パッケージ 'Microsoft.VisualStudio.Debugger.JustInTime.Msi,version=17.14.36015.10,chip=x64,machinearch=x64' をインストールできませんでした
    検索 URL
        https://aka.ms/VSSetupErrorReports?q=PackageId=Microsoft.VisualStudio.Debugger.JustInTime.Msi;PackageAction=Install;ReturnCode=1316
    詳細
        MSI: C:\ProgramData\Microsoft\VisualStudio\Packages\Microsoft.VisualStudio.Debugger.JustInTime.Msi,version=17.14.36015.10,chip=x64,machinearch=x64\jitdebugger_x64.msi、プロパティ:  REBOOT=ReallySuppress ARPSYSTEMCOMPONENT=1 
        リターン コード: 1603
        リターン コードの詳細: インストール中に致命的なエラーが発生しました。
        メッセージ ID: 1316
        メッセージの詳細: 指定されたアカウントは既に存在します。

    ログ
        C:\Users\neko\AppData\Local\Temp\dd_setup_20251022161459_502_Microsoft.VisualStudio.Debugger.JustInTime.Msi.log
    影響を受けたワークロード
        .NET デスクトップ開発 (Microsoft.VisualStudio.Workload.ManagedDesktop,version=17.14.36518.2,productarch=x64)
    影響を受けるコンポーネント
        Just-In-Time デバッガー (Microsoft.VisualStudio.Component.Debugger.JustInTime,version=17.14.36510.44)

調べたところおそらく、レジストリキーが邪魔をしているんじゃないかということで修復しました。
レジストリキーをいじる場合は修復できるように「ファイル」からエクスポートしてバックアップを作っておきましょう。

問題のレジストリキーは「HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug」の「Debugger」というキーです。
これを削除して、32bit版の方も探してあれば削除します。

32bit版「HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows NT\CurrentVersion\AeDebug」

その後、Visual Studioと拡張機能を再インストールしたら直りました。

おわりに

今回はASP.NET MVCとEntity Framework Coreで作成した簡単なWebアプリをAWSで公開しました。

以前SSH接続でEC2に.NET環境を用意したのと比べると格段に楽に構築できました。

投稿者プロフィール

MuramatsuYuki

関連記事

  1. AWS

    【AWS】AWS Step Functions with Lambda…

  2. Google認証の実装

  3. AWS

    【AWS】Amazon DynamoDBを使ってみる(CLI、Part…

  4. AWS

    【API Gateway】Lambda Web AdapterからWe…

  5. AWS

    【AWS】AWS SAMを使いCLIでLambda関数をデプロイ(Ty…

  6. 【新米エンジニア学習記録③】Next.jsのデプロイ

最近の記事

  1. AWS
  2. AWS

制作実績一覧

  1. Checkeys