AWS App Runner でサポートされるマネージドランタイムが追加されたので .NET アプリケーションを実行してみる

2022.10.29

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

いわさです。

App Runner では一部のランタイムはマネージドランタイムという形で、ソースコードリポジトリを指定することでコンテナイメージを個別に用意せずにデプロイすることが出来ていました。

本日のアップデートで様々なランタイムが追加されました。

みなさんの大好きな .NET もマネージドランタイムのサポート対象となりました。
サポートされているバージョンは最新の Long Term Support (LTS) リリースである .NET 6 です。

ちなみに .NET 5 は 2022年5月10日 にサポートが終了しており、ひとつ前の LTS である .NET Core 3.1 は 2022年12月13日 で終了する予定です。
App Runner の利用を検討される方はこれを気に .NET 6 へのバージョンアップもご検討いただくのが良さそうですね。

GitHub リポジトリを用意

まずは GitHub へリポジトリを用意します。

こちらは以下のコマンドで生成した最小限の .NET 6 Web アプリケーションです。

% dotnet new web      
The template "ASP.NET Core Empty" was created successfully.

Processing post-creation actions...
Running 'dotnet restore' on /Users/iwasa.takahito/work/hoge1029dotnet/hoge1029dotnet.csproj...
  Determining projects to restore...
  Restored /Users/iwasa.takahito/work/hoge1029dotnet/hoge1029dotnet.csproj (in 40 ms).
Restore succeeded.

ローカル実行してエンドポイントへアクセスしてみます。

% dotnet run
Building...
info: Microsoft.Hosting.Lifetime[14]
      Now listening on: https://localhost:7127
info: Microsoft.Hosting.Lifetime[14]
      Now listening on: http://localhost:5240
info: Microsoft.Hosting.Lifetime[0]
      Application started. Press Ctrl+C to shut down.
info: Microsoft.Hosting.Lifetime[0]
      Hosting environment: Development
info: Microsoft.Hosting.Lifetime[0]
      Content root path: /Users/iwasa.takahito/work/hoge1029dotnet/

App Runner でサービスを作成する

リポジトリの準備が出来たら App Serivce でサービスを作成していきます。
リポジトリタイプでソースコードリポジトリを選択し先程のリポジトリとブランチを選択します。

後ほど自動デプロイを試してみたいのでデプロイトリガーは自動を選択します。

次へ進むと構成設定を行うことが出来ます。
コンソール上で設定を構成するか、設定ファイルを事前にソースリポジトリへ用意しておきそれを使うかを選択出来ます。
今回はコンソール上で設定を構成してみます。

以下のようにランタイムを選択します。
たくさん追加されてますね。.NET 6 を選択しましょう。

.NET の場合はビルドと .NET アプリケーションの実行コマンドが必要です。
また、デフォルトだと構成ファイルで許可されるアプリケーション URL やポートなどが設定されているのでそのあたりもオーバーライドしてやります。
前者はこの画面で構成し、後者はその次の画面で構成します。

Release モードで publish し、dotnet コマンドでアプリケーションを起動しています。
内部でマネージドコンテナが実行されると思いますが、内部ポートに 5000 を指定しています。以下に従って指定しています。

サービス設定ですがここで環境変数を指定出来るので ASPNETCORE_URLS を指定しましょう。

今回使ったソースコードリポジトリのようなシンプルな構成であれば、ここまで設定出来るとデプロイ後にヘルスチェックが成功しサービスが起動されると思います。

最後に App Runner コンソールに表示されているデフォルトドメインでアクセスします。
今回はカスタムドメインなどは構成していません。

アクセス出来ました。

自動デプロイを試してみる

ついでに自動デプロイがどのような使い勝手なのかもためしてみました。

App Runner と連携しているブランチへ変更をプッシュするとすぐに App Runner 上でデプロイが開始されました。

ビルド・デプロイ・ヘルスチェックと数分時間がかかりますがその間ダウンタイムが発生しなかったのが良いですね。 以下のように新しくデプロイされたアプリケーションへのヘルスチェックが成功後にルーティングが切り替えられています。

さいごに

本日は AWS App Runner でサポートされるマネージドランタイムが追加されたので .NET アプリケーションを実行してみました。

App Runner でサポートされている .NET ランタイムバージョンは以下をご確認ください。本日時点では 6.0.9 がサポートされているとのこと。

今回はコンソールから指定しましたが App Runner 構成ファイルで明示的にバージョンロックすることも出来ます。
今後新しいマイナーバージョン・パッチバージョンが登場した際にランタイムの自動更新を控えたい場合は構成ファイルでの指定をご利用ください。