Azure App Serviceの「Hello World!」をしてみる
はじめに
この記事は、【オンライン】第1回 JAZUG Fukuoka リブートイベントの振り返り記事です。
概要
Visual Studio 2022でコンソールアプリからスタートしてMinimalAPIを作成しVisual Studio2022からApp Serviceに直接デプロイするというもの。
アプリの作成
まずは、Visual Studio2022を起動します。
新しいプロジェクトの作成からC#のコンソールアプリを作成します。
プロジェクト名などは任意の名前で次へで
今回はフレームワークは.NET 9で作成していきます。
コンソールアプリでプロジェクトが作られました。
このままでは本当にコンソールアプリですのでこれをWebのアプリケーションに作り替えていきます。
プロジェクト名(画像上ではConsoleApp22)をダブルクリックして開きます。
Project SDKがMicrosoft.NET.SdkとなっているのでこれをMicrosoft.NET.Sdk.Webに書きかえます。これでWebのアプリケーションになっています。
その上で、プロジェクトを再読み込みします。
Webのプロジェクトに返信したのでProgram.csを書きかえていきます。
var app = WebApplication.Create(args);
app.MapGet("/", () => TypedResults.InternalServerError());
app.MapGet("/hello", () => TypedResults.Ok("Hello, World!"));
app.Run();
デモでは上のようなコードを書いたと思います。
実行結果としては、ルートを要求したときはステータスコード500を返します。
/helloを要求したときは"Hello, World"を返しステータスコード200を返してます。
ちなみに、このときのContentTypeはapplication/jsonです。
では、動作確認が済んだところで本題のAzure App Serviceへのデプロイに進んでいきましょう。
Azure App Serviceへのデプロイ
Visual Studio 2022のビルド→発行をクリックします。
すると、公開ウィザードが立ち上がります。
Azureを選択して次へをクリックします。
今回は、Azure App ServiceのLinuxへデプロイしていきます。
.NET Frameworkでない限りすでにWindowsのApp Serviceを選択する理由というのはWebアプリのみを動かすという意味合いではほぼなくなってきています。
また、従来Web JobsもWindowsでしかサポートされなかったものがLinuxのApp Serviceでプレビューになるなど対応が進んできているのでますます.NETを使う上でLinux一択になってくるでしょう。
どのApp Serviceかを選択します。
ここでApp Serviceを作成することもできます。ここでは、新規作成する手順を見てみます。
右の方にある新規作成ボタンを押下します。
どのSubscriptionでどのリソースグループにどのApp Service Planでどんな名前でApp Serviceを作成するかがこの画面になります。
リソースグループやApp Service Planについての作成も可能です。
ホスティングプランの新規作成でApp Service Planの作成ができます。
こちら、デモをしたときよりSKUの選択がよくなっています。
デモ時はP1v3で作成しました。
この状態で、作成ボタンを押下することによってApp Serviceのリソースが作られます。
また、プレビュー機能ではありますが一意の既定のホスト名あたりにも対応しているあたりVisual Studio 2022(Preview)の対応素晴らしいです。
この状態で、完了ボタンを押下すると一通りの準備が完了します。
発行プロファイルが作成されたとのことですのでここまでの作業が成功のようです。
残りは、右上の方にある発行ボタンを押してしばらく待ちます。
しばらく待ちます。
おそらく、発行ボタンを押してからApp Serviceで動き出すまで2-3分はかかると思います。
無事ステータスコード500が返りました。
/hello
とすると無事Hello World!が返ってきたので想定通りの動作となっていることが分かりました。
まとめ
ここまでAzure Portalを一回も見ずにAzure App Serviceにデプロイすることができました。
また、開発者にとって使い慣れたVisual Studio 2022というツールでApp Serviceへのデプロイまで簡単に完結できてしまうということがとても開発体験として素晴らしいということが理解できたと思います。
Discussion