Upgrade to Pro — share decks privately, control downloads, hide ads and more …

App Runnerで始める、AWSでの C#生活

Ken'ichirou Kimura
October 26, 2023
190

App Runnerで始める、AWSでの C#生活

2023/10/26に開催された、ふくてんでのLT資料です

Ken'ichirou Kimura

October 26, 2023
Tweet

More Decks by Ken'ichirou Kimura

Transcript

  1. 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
  2. Copyright © 2015-2023 ALTERBOOTH inc. All Rights Reserved. C#のプログラムをクラウドで動かす •

    ここではいわゆるWebアプリケーションやREST APIを想定 • まぁだいたいはAzureですよね • 最新SDKのサポートが手厚い • WebApps/Functionsなどネイティブに対応しているサービスが豊富 • ドキュメントも豊富 • とはいえ、AWSで動かしたい・・という方もいらっしゃるので は?
  3. 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やコンテナならどこでも動きますよね
  4. 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のマネージドランタイムを試してみました
  5. 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
  6. Copyright © 2015-2023 ALTERBOOTH inc. All Rights Reserved. App Runnerの設定をリポジトリ内のYAML

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

    Runnerのマネージドランタイムのコンテナに入ってるSDKのバージョンが global.jsonで指定しているものと違うようです。 とりあえずglobal.jsonを削除してリトライ。
  8. Copyright © 2015-2023 ALTERBOOTH inc. All Rights Reserved. dotnetコマンドで起動すると、規定では localhostだけにバインドされます。つまり、

    コンテナの外からアクセスできません。 そこで、リバースプロキシを適切に構成し ないといけません。 App Runnerの「サービス設定」で、 ASPNETCORE_URLSという環境変数を設 定します。 (コンテナに埋め込んどいて欲しい・・)
  9. Copyright © 2015-2023 ALTERBOOTH inc. All Rights Reserved. まとめ ・AWSでもC#のプログラムを動かす方法は沢山あります

    ・Webアプリケーションなら、今はApp Runnerがお勧めです ・App RunnerはLTSの.NETがマネージドランタイムに入っているので、 ソースコードから直接デプロイできます ・ASPNETCORE_URLSという環境変数を設定するのを忘れない ・SDKのバージョンに注意 ・.NET8もきっとすぐに使えるようになると思いますので皆さんお楽しみに!