Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
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 git@github.com: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.