ちょこちょこ参加させていただいているAWSエヴァンジェリストシリーズのハンズオン。
今回の題材はみんな大好きLambdaとAPI Gatewayです。
https://awsbasics.connpass.com/event/234744/
自分は以前から知っておく必要がある分野だと思っていたのですが、
体系だったセミナーやハンズオンは巡り合わせがよくなく、
今回こそはとイベント公開時からスケジュールを押さえていました。
おうち(だけど)帰ってレポるまでがイベントなので、いつも通り書き出してみます。
書き出すにあたってハッシュタグを眺めているのですが、やはりいつもより流量が多めですね。
(1) 座学
[メモ]
- サーバレスとLambdaの歴史と変遷の話
- 2014年にLambdaが出たが、公開当初はここまでキーとなるサービスになるとはAWSも思ってなかった
- Lambdaは昔はDockerコンテナベースだったが、現在はFirecrackerベースのマイクロVMで動く
https://github.com/firecracker-microvm/firecracker - Lambdaの処理は15分以内に終わらせる必要がある
- バックエンドで使う場合はStepFunctionsと組み合わせて使う
- 何でもかんでもLambdaでやっていいわけではない
- コスト見積はきっちりやること(Lambdaのリソース単価はそれなりにする)
- Lambdaは起動と終了を繰り返すため、永続的な処理を行う場合はEC2やFargateでやるべし(アプリの作りもそれを見越す必要がある)
- LambdaとRDBMSの相性がよくないといわれていたが、最近はかなり改善されている
- 今はVPC通信ができる
- コネクションプーリングが使えるようになっている
- 初回起動時の動作に注意すること
- Lambda layers:C++でいうヘッダーみたいなものと思ってよい
- コンテナイメージをそのまま起動のスライドは、Lambdaのお作法に乗ったプログラムを書かなければいけないという意味なので誤解しないこと
- 高負荷時にスロットリング
[QA(拾えた分のみ)]
- メモリをどれくらい増やしたらCPUがどれくらい増えるかわかる方法はありますか?
→AWSのドキュメントを見ること - コンパイル型(Java等)は初回起動が遅い(ファーストタッチペナルティが大きい)けど、2回目以降コンテナのマイクロVMが上がっている間はインタプリタ型より「速い」のでは?
→ラムダのVMはリユースされることがあるので、速くなることがある - 特定のLambda関数からのリクエストは、同じRDS Proxyを使って接続する(他のLambda関数には関係ない)という感じですか?
→Yes
(2)LT:Refactor Spacesハンズオン延長戦
先週のイベントでのLTの続き(自分は不参加でしたが、たぶんこれかな?)
https://awsbasics.connpass.com/event/234743/
ハンズオンシナリオがJavaだったけど、処理速度が遅いのでPythonにしてみたら
めちゃんこ速くなったという理解でいいのかな。
資料は本エントリ冒頭記載のイベントサイトURLに載るとのこと。
(3)ハンズオン
https://github.com/harunobukameda/AWS-Amplify-AWS-Lambda-Amazon-DynamoDB-AWS-API-Gateway-Amazon-Cognito
の手順書4.2のラストまでが題材。
DynamoDBのUIが手順書からだいぶ変わっていて、手順を追いかけるだけでいっぱいいっぱい。
講師側の説明とデモはあまり聞けずという状態でしたが、何とか完走できました。
[大まかな流れ]
- Cloud9の準備
- DynamoDB作成
ArtistとTitleを項目としたテーブルを作成 - Lambdaの作成
IAMポリシー、IAMロール、Lambda関数(単品実行含む) - API Gatewayの作成
- 実行結果の確認
GET:JSONレスポンス
3件のデータから「Michael Jackson」を検索すると2件ヒットする。
POST:DynamoDBにデータが反映される
「Artist:NANA MIZUKI」「Title:ETERNAL BLAZE」を登録するPOSTリクエストを投げたらDynamoDBに反映される。
[メモ(拾えた分のみ)]