Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

AWS で作る Serverless ASP.NET Core 2.x WebApp はじめの一歩

401 views

Published on

AWS .NET Developer User Group 勉強会 #1 の資料です。

Published in: Software
  • Login to see the comments

AWS で作る Serverless ASP.NET Core 2.x WebApp はじめの一歩

  1. 1. AWS で作る Serverless ASP.NET Core 2.x WebApp はじめの一歩 .NET Developer AWS Community 2019/4/22 Shinya Terasaki Shaxware Inc.
  2. 2. 本日の目標 AWSは怖くないよ!
  3. 3. About Speaker • 寺崎 真哉 • コンシューマ向け市販ソフトウエアの開発 • モバイルアプリケーションの研究開発 • 立体視、AR/VRなどの研究開発 • デスクトップ~組み込み~モバイル~クラウド全般のソフトウ エア開発 • Windows/Win32, Android/Xamarin, C/C++, C#, Scala, Quantum Computing
  4. 4. About Company • Shaxware Inc. • スマートスピーカー向けソフトウエア開発 • これまたサーバーレス • スマートスピーカー向けニュース配信プラット フォーム Piconews • 三遠ネオフェニックス ~公式ニュース~
  5. 5. なぜサーバーレスなのか
  6. 6. Amazon Virtual Private Cloud • Amazon Virtual Private Cloud (Amazon VPC) では、AWS クラウドの論 理的に分離されたセクションをプロビジョニングし、お客様が定義した仮 想ネットワーク内の AWS リソースを起動することができます。自分の IP アドレス範囲の選択、サブネットの作成、ルートテーブルやネットワーク ゲートウェイの設定など、仮想ネットワーキング環境を完全に制御できま す。VPC では、リソースやアプリケーションに安全かつ簡単にアクセス できるよう、IPv4 と IPv6 を両方とも使用できます。 • できます=自分でやれ https://aws.amazon.com/jp/vpc/
  7. 7. なぜサーバーレスなのか サーバーレス • サーバーの管理が不要 • 柔軟性のあるスケーリング • 価値に対する支払い • 高可用性の自動化 VPC • サーバーの管理が必要 • 自分でスケーリング設定 • 立ち上げっぱなし • 自分で耐障害対策 https://aws.amazon.com/jp/serverless/
  8. 8. アプリケーション開発だけしたい ×No VPC settings ×No Internet Gateway settings ×No TPC/UDP Port settings ×No Subnet definitions ×No Routings ×No Security Group settings
  9. 9. Serverless ASP.NET Core 2.1 WebApp
  10. 10. 開発に必要なもの • AWS アカウント • Visual Studio 2017 • AWS Toolkit for Visual Studio 2017 (and 2019)
  11. 11. AWS Toolkit for Visual Studio https://aws.amazon.com/jp/visualstudio/
  12. 12. プロジェクトテンプレート
  13. 13. ASP.NET Core Web App
  14. 14. Publish to AWS Lambda...
  15. 15. Publish to AWS https://aws.amazon.com/jp/blogs/developer/serverless-asp-net-core-2-0-applications/ このアプリの名前 ビルドしたパッケー ジをアップロードす る先 2.1を選ぶ AWSのアカウント プロファイル リージョンは普段は東京 (ap- northeast-1) だと思われ
  16. 16. Publish to AWS • Doing... • Upload .zip to S3 • CloudFormation • IAM role • Lambda • API Gateway • Command line • dotnet lambda deploy- serverless https://aws.amazon.com/jp/blogs/developer/serverless-asp-net-core-2-0-applications/ WebApp のアドレス
  17. 17. あっさりWebサーバが立ちました https://aws.amazon.com/jp/blogs/developer/serverless-asp-net-core-2-0-applications/ アドレスは API Gateway  ステージ から確認できます
  18. 18. サーバーレスの仕組み
  19. 19. 仕組みについてちょっとだけ Amazon API Gateway AWS Lambda AWS Identity and Access Management (IAM) AWS CloudFormation インターネット接続 ASP.NET Core WebApp Roleを割り当て デプロイ
  20. 20. Lambdaについてちょっとだけ • インスタンスタイプみたいなものはありません • メモリを多く割り当てるとパフォーマンスが上がります • Amazon Linuxで動いてる https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/current-supported-versions.html
  21. 21. 今回のコスト • S3 • 無料枠内 • API Gateway • 無料枠内 • Lambda • 無料枠内 • CloudFormation • 無料 • Identity and Access Management (IAM) • 無料
  22. 22. はまりどころ
  23. 23. はまりどころ • オートスケーリング • ファイルアップロード • 最大リクエスト・レスポンスサイズ • タイムアウト時間 • 実行権限
  24. 24. オートスケーリング
  25. 25. Lambdaはオートスケーリングする cookie WebApp
  26. 26. 暗号化キーは共通化する WebApp cookie https://github.com/hotchkj/AspNetCore.DataProtection.Aws
  27. 27. ファイルアップロード
  28. 28. HTTPリクエスト・レスポンスはJSON化 されている http protocol JSON テキスト扱いされている multipart/form-dataもテキスト扱いされる バイナリファイルをアップロードしてもテキスト扱い
  29. 29. API Gatewayの設定で、multipart/form-dataを バイナリメディアタイプとして登録する
  30. 30. 最大リクエスト・レスポンス サイズ
  31. 31. Lambdaのペイロードの最大サイズは6MB http protocol JSON https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/limits.html ここの最大サイズが6MB
  32. 32. S3に直接アップロードする • 大きなファイルはS3に直接アップロードする • 署名付きオブジェクトURLを生成し、PUTする • 大きなファイルはS3からダウンロードする https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/dev/ShareObjectPreSignedURLDotNetSDK.html
  33. 33. タイムアウト時間
  34. 34. API Gatewayは29秒でタイムアウトする http protocol JSON タイムアウトは最大15分タイムアウトは最大29秒
  35. 35. 実行権限
  36. 36. デプロイ後のIAM Roleの権限に注意 ローカル実行 デプロイ後 AWS Account IAM Role 必要な権限を与えておく
  37. 37. はまりどころのまとめ • オートスケーリング • マルチインスタンスの運用で考える • ファイルアップロード • バイナリファイルをアップロードする場合の設定に注意 • 最大リクエスト・レスポンスサイズ • 大きなリクエスト・レスポンスはS3直接で • タイムアウト時間 • 29秒しかない • 実行権限 • デプロイ後に必要な権限を与えておいてね
  38. 38. まとめ
  39. 39. Serverless WebAppに向かないもの • RDBを使うもの • 最大同時接続数をあっさり超えちゃうかも • スロットリングできるけど、サーバーレスっぽくなくなっちゃう • VPCを使うもの • 使っちゃいけないわけではないが、レイテンシがある https://www.keisuke69.net/entry/2017/06/21/121501
  40. 40. Serverless WebAppに向くもの • 使用頻度が少ないもの • 一時的なもの • RDB/VPCを使わないもの
  41. 41. 総まとめ • ASP.NET Core WebAppはAWS上にサーバーレスであっという 間に立ち上げることができる • シングルインスタンスでの運用とは異なる点に注意 • ファイルアップロード機能や大きなレスポンスを返す際には注意 • VPC必須の業務アプリなどで使う場合はタイムアウトに注意
  42. 42. コンタクト先 • Company • http://www.shaxware.com/ • Speaker • Shinya.Terasaki@shaxware.com • https://www.facebook.com/sterasaki • https://twitter.com/ShinyaTerasaki • https://www.linkedin.com/in/shinyaterasaki/

×