Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Cognito+API Gateway+Lambda+S3ではじめるサーバーレスアプリ構築 /...
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Hironori Yokoyama
March 20, 2021
Technology
2.8k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Cognito+API Gateway+Lambda+S3ではじめるサーバーレスアプリ構築 / Building Serverless Apps with Cognito+API Gateway+Lambda+S3
JAWS DAYS 2021のオンライン登壇で使用した発表資料です。
https://jawsdays2021.jaws-ug.jp/timetable/track-b-1600/
Hironori Yokoyama
March 20, 2021
More Decks by Hironori Yokoyama
See All by Hironori Yokoyama
立ち上げ期のSaaSを支えるAWSの技術 / AWS technology supporting SaaS in its start-up phase
yokoyan
0
360
【DevRel Meetup in Tokyo #51】社内コミュニティを1年間続けて学んだこと~1人からはじめるDevRel~ / DevRel starting with one person
yokoyan
0
890
ゼロからはじめる Infrastructure as Code ~SIer企業がAWSで⾃社Webサービスを⽴ち上げて2年間運⽤してきた話~ / Infrastructure as code starting from scratch
yokoyan
0
8.3k
SIer企業が Ruby で成長する自社 Web サービスをリリースするまでの失敗と成功の道のり
yokoyan
3
2k
Other Decks in Technology
See All in Technology
[モダンアプリ勉強会]今更聞けないGit/GitHub入門
tsukuboshi
0
360
タクシーアプリ『GO』の実践的データ活用
mot_techtalk
3
190
LLMと共に進化するプロセスを目指して
ymatsuwitter
12
3.9k
MIERUNE JCT 発表資料「宇宙から伊能忠敬ごっこ」
syuchimu
0
200
Chainlitで作るお手軽チャットUI
ynt0485
0
140
データサイエンスを価値につなげるプロジェクト設計 〜 DS一年目が現場で得た気づき 〜
ysd113
1
120
AmazonRoute 53ではじめてのドメイン取得!HTTPS化までの道のりを整理してみた
usanchuu
3
130
AGENTS.mdとSkillsで始めるAIエージェント活用
sonoda_mj
2
190
小さくはじめるSLI/SLO ~育てながら組織に定着させる実践知~ / Starting Small with SLI/SLOs: Building Adoption Through Continuous Growth
nari_ex
2
1.3k
失敗を経て、Harness Engineering で 大切にしたいことを考える / Learning from Failure: What Matters in Harness Engineering
bitkey
PRO
1
290
白金鉱業Meetup_Vol.24_「AIエージェントは分けるほど良い」は本当か? / Is it true that “the more you divide AI agents, the better”?
brainpadpr
1
230
エンジニアリング戦略の作り方 / Crafting Engineering Strategy
iwashi86
19
6.4k
Featured
See All Featured
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
310
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
480
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
11
940
End of SEO as We Know It (SMX Advanced Version)
ipullrank
3
4.2k
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
2
390
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
1
380
WCS-LA-2024
lcolladotor
0
620
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
0
400
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
2
850
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
410
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
How to Align SEO within the Product Triangle To Get Buy-In & Support - #RIMC
aleyda
2
1.5k
Transcript
0 Copyright© System Integrator Corp. All rights reserved. System Integrator
Cognito+API Gateway+Lambda+S3で はじめるサーバーレスアプリ構築 ~SIer企業がはじめて挑戦してみた話~
1 Copyright© System Integrator Corp. All rights reserved. System Integrator
横山 弘典 (@yokoyantech) • 株式会社システムインテグレータ • 製品企画室 • 宮崎→福岡→埼玉 • AWS歴 • 約7年 • アソシエイト3冠 • SAプロフェッショナル • JAWS歴 • 2014年から毎年参加 • 2020年初登壇(動画)
2 Copyright© System Integrator Corp. All rights reserved. System Integrator
毎年ボッチ参加なので 今年こそはJAWS仲間を作りたい!
3 Copyright© System Integrator Corp. All rights reserved. System Integrator
1. 本日お伝えすること 2. サーバーレスアーキテクチャを採用した理由 3. サーバーレスでREST APIを作る 4. サーバーレスでWEBアプリを作る 5. 非同期処理を作る 6. デプロイ/負荷試験 Agenda
4 Copyright© System Integrator Corp. All rights reserved. System Integrator
新サービス開発で、はじめて サーバーレスを使った体験談をお伝えします
5 Copyright© System Integrator Corp. All rights reserved. System Integrator
株式会社システムインテグレータ • 埼玉県さいたま市にある会社 • 東証1部 • 創業27年目 • 事業内容 • 自社パッケージソフト(EC、ERPなど) • 企画、開発 • カスタマイズ • 自社WEBサービス • 開発、運営 • 技術スタック • AWS、Azure • Java、C#、Python、Rubyなど
6 Copyright© System Integrator Corp. All rights reserved. System Integrator
7 Copyright© System Integrator Corp. All rights reserved. System Integrator
8 Copyright© System Integrator Corp. All rights reserved. System Integrator
1. 本日お伝えすること 2. サーバーレスアーキテクチャを採用した理由 3. サーバーレスでREST APIを作る 4. サーバーレスでWEBアプリを作る 5. 非同期処理を作る 6. デプロイ/負荷試験 Agenda
9 Copyright© System Integrator Corp. All rights reserved. System Integrator
限られた人数で やることはいっぱい アプリ開発 インフラ開発 各種サポート
10 Copyright© System Integrator Corp. All rights reserved. System Integrator
家族や子供との時間も 大切にしたい
11 Copyright© System Integrator Corp. All rights reserved. System Integrator
精神論で頑張らない AWSで仕組みを変える
12 Copyright© System Integrator Corp. All rights reserved. System Integrator
サーバーレスを使うと 好きなことをやる時間が増える!
13 Copyright© System Integrator Corp. All rights reserved. System Integrator
受験者が コードを提出 外部APIで採点 (テストケース実行) 成否を判定 私達のプロダクト特徴
14 Copyright© System Integrator Corp. All rights reserved. System Integrator
VPC AWS Cloud 受験者 Amazon EC2 Public subnet Elastic Load Balancing NAT gateway Amazon RDS 他社外部API (提出/採点) ※EC2+α Private subnet
15 Copyright© System Integrator Corp. All rights reserved. System Integrator
16 Copyright© System Integrator Corp. All rights reserved. System Integrator
17 Copyright© System Integrator Corp. All rights reserved. System Integrator
大規模イベントでは、採点システムが 数百台必要になるケースもあった
18 Copyright© System Integrator Corp. All rights reserved. System Integrator
新サービス(SQL)では、 自社で採点システムを保持・運用
19 Copyright© System Integrator Corp. All rights reserved. System Integrator
EC2などのよくある悩み コスト高い (待機時間含) 運用が自力 (HDD容量等) 自動スケール 設定が必要
20 Copyright© System Integrator Corp. All rights reserved. System Integrator
コスト安い (実行時間) 運用が楽 自動スケール 設定が不要 サーバーレスで解決
21 Copyright© System Integrator Corp. All rights reserved. System Integrator
スパイク対策、コスト減、運用を楽にするために サーバーレスを採用
22 Copyright© System Integrator Corp. All rights reserved. System Integrator
1. 本日お伝えすること 2. サーバーレスアーキテクチャを採用した理由 3. サーバーレスでREST APIを作る 4. サーバーレスでWEBアプリを作る 5. 非同期処理を作る 6. デプロイ/負荷試験 Agenda
23 Copyright© System Integrator Corp. All rights reserved. System Integrator
API Gateway Lambda NoSQL サーバーレスでREST API
24 Copyright© System Integrator Corp. All rights reserved. System Integrator
提出API 提出コード 書き込み 提出結果 保持 サーバーレスでREST API
25 Copyright© System Integrator Corp. All rights reserved. System Integrator
MongoDB Atlas • MongoDBとは • jsonを格納するドキュメント型のNoSQL • Atlasとは • MongoDB公式が提供するDaaS • フルマネージドサービス • AWS連携が簡単 • VPCピアリングできる! • セキュリティグループによる制御できる! • 東京リージョンあり
26 Copyright© System Integrator Corp. All rights reserved. System Integrator
VPC EC2からPRIVATEなAPIを呼び出したい(受験者→提出API) AWS Cloud users Amazon API Gateway (PRIVATE) AWS Lambda Peering connection VPC Amazon EC2 Public subnet Elastic Load Balancing NAT gateway Private subnet
27 Copyright© System Integrator Corp. All rights reserved. System Integrator
VPC EC2からPRIVATEなAPIを呼び出したい(受験者→提出API) AWS Cloud users Amazon API Gateway (PRIVATE) AWS Lambda Peering connection VPC Amazon EC2 Public subnet Elastic Load Balancing NAT gateway Private subnet Private Subnet内のLambdaを API Gatewayがどうやって呼び出すの?
28 Copyright© System Integrator Corp. All rights reserved. System Integrator
【原因】LambdaをVPC内に配置した際に 想像した図が間違っていた
29 Copyright© System Integrator Corp. All rights reserved. System Integrator
AWS Cloud AWS管理VPC 私達のVPC AWS Lambda Elastic network interface LambdaをVPC内に配置すると、 私達のVPCの中に、ENIができる Private subnet
30 Copyright© System Integrator Corp. All rights reserved. System Integrator
AWS Cloud AWS管理VPC 私達のVPC AWS Lambda Elastic network interface Private subnet Lambdaの実体は、 AWS管理VPC側に存在する
31 Copyright© System Integrator Corp. All rights reserved. System Integrator
AWS Cloud AWS管理VPC 私達のVPC AWS Lambda Elastic network interface Private subnet Lambdaの実体は、 AWS管理VPC側に存在する
32 Copyright© System Integrator Corp. All rights reserved. System Integrator
AWS Cloud AWS管理VPC 私達のVPC AWS Lambda Elastic network interface Lambdaは、 ENI経由で 私達のVPC内のリソースにアクセスできる Amazon RDS Private subnet
33 Copyright© System Integrator Corp. All rights reserved. System Integrator
Private subnet API GatewayからLambdaを呼ぶときは、 AWS内部のネットワークを通る AWS Cloud AWS管理VPC 私達のVPC Amazon API Gateway (PRIVATE) AWS Lambda Elastic network interface
34 Copyright© System Integrator Corp. All rights reserved. System Integrator
【対策】VPC Endpoint とENIを使う
35 Copyright© System Integrator Corp. All rights reserved. System Integrator
VPC 【修正後】EC2からPRIVATEなAPIを呼び出したい AWS Cloud users Amazon API Gateway (PRIVATE) AWS Lambda Peering connection VPC Amazon EC2 Public subnet Elastic Load Balancing NAT gateway Elastic network interface Endpoints Private subnet
36 Copyright© System Integrator Corp. All rights reserved. System Integrator
1. 本日お伝えすること 2. サーバーレスアーキテクチャを採用した理由 3. サーバーレスでREST APIを作る 4. サーバーレスでWEBアプリを作る 5. 非同期処理を作る 6. デプロイ/負荷試験 Agenda
37 Copyright© System Integrator Corp. All rights reserved. System Integrator
S3 Cognito API Gateway サーバーレスでWEBアプリ
38 Copyright© System Integrator Corp. All rights reserved. System Integrator
HTML/JS 配置 ログイン時 認証 問題登録 API など サーバーレスでWEBアプリ
39 Copyright© System Integrator Corp. All rights reserved. System Integrator
VPC S3で静的ホスティング+API呼び出し AWS Cloud users Amazon API Gateway (Edge) Amazon S3 Amazon Cognito AWS Lambda Peering connection VPC Elastic network interface Private subnet
40 Copyright© System Integrator Corp. All rights reserved. System Integrator
クリップボード貼り付け処理
41 Copyright© System Integrator Corp. All rights reserved. System Integrator
httpで動いていた
42 Copyright© System Integrator Corp. All rights reserved. System Integrator
【原因】S3は、Web Site Endpointの HTTPSアクセスをサポートしていない
43 Copyright© System Integrator Corp. All rights reserved. System Integrator
【対策1】CloudFrontを使ってHTTPSを実現
44 Copyright© System Integrator Corp. All rights reserved. System Integrator
https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/dev/WebsiteHosting.html
45 Copyright© System Integrator Corp. All rights reserved. System Integrator
【対策2】S3 REST APIエンドポイントを使う
46 Copyright© System Integrator Corp. All rights reserved. System Integrator
http://バケット名.s3-website-ap-northeast- 1.amazonaws.com/index.html ウェブサイト エンドポイント
47 Copyright© System Integrator Corp. All rights reserved. System Integrator
https://バケット名.s3-ap-northeast- 1.amazonaws.com/index.html REST API エンドポイント
48 Copyright© System Integrator Corp. All rights reserved. System Integrator
https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/dev/WebsiteEndpoints.html#WebsiteRestEndpointDiff
49 Copyright© System Integrator Corp. All rights reserved. System Integrator
1. 本日お伝えすること 2. サーバーレスアーキテクチャを採用した理由 3. サーバーレスでREST APIを作る 4. サーバーレスでWEBアプリを作る 5. 非同期処理を作る 6. デプロイ/負荷試験 Agenda
50 Copyright© System Integrator Corp. All rights reserved. System Integrator
Lambda SQS Lambda サーバーレスで非同期処理
51 Copyright© System Integrator Corp. All rights reserved. System Integrator
採点キュー 書き込み キュー管理 採点処理 サーバーレスで非同期処理
52 Copyright© System Integrator Corp. All rights reserved. System Integrator
VPC 提出処理と採点処理の間にSQSを入れて非同期化 AWS Cloud users Amazon API Gateway (PRIVATE) AWS Lambda(提出) Peering connection VPC Amazon EC2 Elastic network interface Endpoints Amazon SQS AWS Lambda(採点) Public subnet Elastic Load Balancing Private subnet
53 Copyright© System Integrator Corp. All rights reserved. System Integrator
【問題1】Lambdaがデプロイできない
54 Copyright© System Integrator Corp. All rights reserved. System Integrator
【原因】SQSの可視性タイムアウト(30秒)が Lambdaのタイムアウト(300秒)より短い
55 Copyright© System Integrator Corp. All rights reserved. System Integrator
【対策】SQSの可視性タイムアウトを Lambdaのタイムアウトより長くする
56 Copyright© System Integrator Corp. All rights reserved. System Integrator
【問題2】採点Lambdaに1度に複数の 採点キューが渡されてしまう
57 Copyright© System Integrator Corp. All rights reserved. System Integrator
VPC 提出処理と採点処理の間にSQSを入れて非同期化 AWS Cloud users Amazon API Gateway (PRIVATE) AWS Lambda(提出) Peering connection VPC Amazon EC2 Elastic network interface Endpoints Amazon SQS AWS Lambda(採点) Public subnet Elastic Load Balancing Private subnet
58 Copyright© System Integrator Corp. All rights reserved. System Integrator
【原因】SQSトリガーの バッチサイズが1より大きい
59 Copyright© System Integrator Corp. All rights reserved. System Integrator
【対策】SQSトリガーの バッチサイズを1にする
60 Copyright© System Integrator Corp. All rights reserved. System Integrator
マネジメントコンソールからは変更ができない
61 Copyright© System Integrator Corp. All rights reserved. System Integrator
1. 本日お伝えすること 2. サーバーレスアーキテクチャを採用した理由 3. サーバーレスでREST APIを作る 4. サーバーレスでWEBアプリを作る 5. 非同期処理を作る 6. デプロイ/負荷試験 Agenda
62 Copyright© System Integrator Corp. All rights reserved. System Integrator
CodePipeline CodeBuild+ Serverless CodeDeploy サーバーレスのデプロイ
63 Copyright© System Integrator Corp. All rights reserved. System Integrator
64 Copyright© System Integrator Corp. All rights reserved. System Integrator
Serverless-framework • node.js製のツール • サーバーレスアプリをAWS上に簡単にデプロイできる (内部的にはCloudFormationが動いている) • 構成をYAMLで書ける • 例)GETリクエストでLambda関数helloを実行する API Gatewayを作成する • CodeBuild等と組み合わせると簡単にPipelineができる # serverless.yml functions: index: handler: handler.hello events: - http: GET hello $ serverless deploy
65 Copyright© System Integrator Corp. All rights reserved. System Integrator
サーバーレスの負荷試験 https://github.com/Nordstrom/serverless-artillery
66 Copyright© System Integrator Corp. All rights reserved. System Integrator
Serverless-artillery • サーバーレスで負荷試験ができる • AWS上に負荷を生成するLambdaを簡単に生成できる • 試験シナリオがYAMLで書ける • 例)秒間10アクセスの負荷を5秒実行する • 負荷試験実行も簡単 config: target: http://TESTURL/ phases: - duration: 5 arrivalRate: 10 scenarios: - flow: - get: url: "/" slsart deploy --region=ap-northeast-1 slsart invoke --region=ap-northeast-1
67 Copyright© System Integrator Corp. All rights reserved. System Integrator
限られた人数で やることはいっぱい アプリ開発 インフラ開発 各種サポート
68 Copyright© System Integrator Corp. All rights reserved. System Integrator
精神論で頑張らない AWSで仕組みを変える (わからなくても まずは挑戦!)
69 Copyright© System Integrator Corp. All rights reserved. System Integrator
サーバーレスを活用して みなさん素敵な人生を!
70 Copyright© System Integrator Corp. All rights reserved. System Integrator
※本資料掲載の情報・画像など、すべてのコンテンツの無断複写・転載を禁じます。