Slide 1

Slide 1 text

Copyright © 2015-2023 ALTERBOOTH inc. All Rights Reserved. App Runnerで始める、AWSでの C#生活 木村健一郎 2023年10月26日 Fukuoka.NET #25

Slide 2

Slide 2 text

Copyright © 2015-2023 ALTERBOOTH inc. All Rights Reserved. 名前:木村健一郎 所属:株式会社オルターブース SORACOM UG九州 JAWS-UG福岡 娘ちゃんのパパ(6歳3ヶ月) お仕事:IoT番⾧ 受賞歴:AWS Samurai 2019 SORACOM MVC 2021,2023 好きなAzureサービス :WebApp、Functions、IoT Hub

Slide 3

Slide 3 text

Copyright © 2015-2023 ALTERBOOTH inc. All Rights Reserved. C#のプログラムをクラウドで動かす • ここではいわゆるWebアプリケーションやREST APIを想定 • まぁだいたいはAzureですよね • 最新SDKのサポートが手厚い • WebApps/Functionsなどネイティブに対応しているサービスが豊富 • ドキュメントも豊富 • とはいえ、AWSで動かしたい・・という方もいらっしゃるので は?

Slide 4

Slide 4 text

Copyright © 2015-2023 ALTERBOOTH inc. All Rights Reserved. C#のプログラムをAWSで動かす • Elastic Conputing Cloud(EC2) • いわゆるIaaS。Azureで言えばVM • Elastic Containe Service(ECS) • コンテナ実行基盤。AzureでいえばContainer Apps • Elastic Kubernates Service(EKS) • Kubernates実行基盤。AzureでいえばAKS まぁIaaSやコンテナならどこでも動きますよね

Slide 5

Slide 5 text

Copyright © 2015-2023 ALTERBOOTH inc. All Rights Reserved. C#のプログラムをAWSで動かす • Elastic Beanstalk • 対応した言語スタックのアプリをデプロイするだけでEC2ベースのスケーラブルなアプリケー ション実行環境を構築できる • Azureで言えばApp Service(ASEが近いかも) • Lambda • いわゆるFaaS • AzureでいえばFunctions • マネージドランタイムの.NETはLTSのみ。コンテナで.NET7も対応 • App Runner • 対応した言語スタックのソースまたはコンテナで、簡単にコンテナベースのスケーラブルな Webアプリケーション実行環境を構築できる • AzureでいえばWebApp for Containers • マネージドランタイム(コンテナを準備しなくてよいもの)に.NETがある • Lambdaと同じくマネージドランタイムはLTSのみ 今回はApp Runnerのマネージドランタイムを試してみました

Slide 6

Slide 6 text

Copyright © 2015-2023 ALTERBOOTH inc. All Rights Reserved. デプロイするプログラムを作成 • Webアプリケーションのテンプレートそのまま • SDKのバージョンをdotnet6に • GitHubにpushしておく % dotnet new globaljson --sdk-version 6.0.415 % dotnet new webapp % git init % git add . % git commit -m "initial commit" % git remote add origin [email protected]:kenichiro-kimura/AppRunnerTest-dotnet6.git % git branch -M master % git push -u origin master

Slide 7

Slide 7 text

Copyright © 2015-2023 ALTERBOOTH inc. All Rights Reserved. App Runnerにデプロイする Webコンソールから新しいサービスを作成

Slide 8

Slide 8 text

Copyright © 2015-2023 ALTERBOOTH inc. All Rights Reserved. リポジトリのタイプは「ソースコードリ ポジトリ」を選びます。 プロバイダーでGitHubを選び、接続の設 定をします。

Slide 9

Slide 9 text

Copyright © 2015-2023 ALTERBOOTH inc. All Rights Reserved. App Runnerの設定をリポジトリ内のYAML ファイルから読むこともできますが、「こ こですべての設定を構成する」にします。 ランタイムで.NET6を選び、構成コマンド と開始コマンドを入れます。 構成コマンドはdotnet publish、開始コマ ンドはコンテナで実行されるコマンドを指 定します。 ここではpublishの成果物のdllを実行しま す。 (この辺自動で埋まってくれると嬉しいん ですが・・)

Slide 10

Slide 10 text

Copyright © 2015-2023 ALTERBOOTH inc. All Rights Reserved. サービスの設定ではサービス名だけ入れて、 他はデフォルトのままで進みます。 確認画面を経て、いよいよデプロイ!

Slide 11

Slide 11 text

Copyright © 2015-2023 ALTERBOOTH inc. All Rights Reserved. ・・・デプロイ失敗してますね。 App Runnerのマネージドランタイムのコンテナに入ってるSDKのバージョンが global.jsonで指定しているものと違うようです。 とりあえずglobal.jsonを削除してリトライ。

Slide 12

Slide 12 text

Copyright © 2015-2023 ALTERBOOTH inc. All Rights Reserved. ・・・デプロイ失敗してますね。 ビルドは成功したけど、デプロイ後のヘルスチェックに失敗しているようです。

Slide 13

Slide 13 text

Copyright © 2015-2023 ALTERBOOTH inc. All Rights Reserved. dotnetコマンドで起動すると、規定では localhostだけにバインドされます。つまり、 コンテナの外からアクセスできません。 そこで、リバースプロキシを適切に構成し ないといけません。 App Runnerの「サービス設定」で、 ASPNETCORE_URLSという環境変数を設 定します。 (コンテナに埋め込んどいて欲しい・・)

Slide 14

Slide 14 text

Copyright © 2015-2023 ALTERBOOTH inc. All Rights Reserved. ついでにヘルスチェックもTCPからHTTP にしておきましょう

Slide 15

Slide 15 text

Copyright © 2015-2023 ALTERBOOTH inc. All Rights Reserved. 今度こそ無事起動しました!

Slide 16

Slide 16 text

Copyright © 2015-2023 ALTERBOOTH inc. All Rights Reserved. まとめ ・AWSでもC#のプログラムを動かす方法は沢山あります ・Webアプリケーションなら、今はApp Runnerがお勧めです ・App RunnerはLTSの.NETがマネージドランタイムに入っているので、 ソースコードから直接デプロイできます ・ASPNETCORE_URLSという環境変数を設定するのを忘れない ・SDKのバージョンに注意 ・.NET8もきっとすぐに使えるようになると思いますので皆さんお楽しみに!

Slide 17

Slide 17 text

Copyright © 2015-2023 ALTERBOOTH inc. All Rights Reserved.