Slide 1

Slide 1 text

APIフレームワークを Lambdaで動かす 生活協同組合コープさっぽろ 2024/08/31 小森一成(@icckx) 札幌ITでぃぐでぃぐ会 vol.2 ~API勉強会~

Slide 2

Slide 2 text

小森 一成(@icckx)

Slide 3

Slide 3 text

今日お話すること

Slide 4

Slide 4 text

● APIフレームワークは良い ● APIフレームワークをLambdaで動かしたい 今日お話すること

Slide 5

Slide 5 text

皆さんは、APIを実装するとき、 APIフレームワークつかってますか?✋

Slide 6

Slide 6 text

例えば、FastAPI

Slide 7

Slide 7 text

● Node.jsやGo並の最も高速なPythonフレームワークの1つ ● 大体のライブラリはPyPIに存在しており、ビジネスロジックに集中しやすい ● コードファースト。OpenAPIが自動生成される

Slide 8

Slide 8 text

“FastAPI は巨人の肩の上に立っています” 引用

Slide 9

Slide 9 text

https://www.starlette.io/  ASGI Framework  非同期、Websoketの実装が  非常にかんたん 巨人 - 1(すたーれっと)

Slide 10

Slide 10 text

https://docs.pydantic.dev  データ検証ライブラリ  Pythonが型安全に 型アノテーションを利用した 型のバリデーション 巨人 - 2(ぱいだんてぃっく)

Slide 11

Slide 11 text

APIフレームワークを語弊がある程度に 端的にまとめると 難しかったり、めんどくさくて ビジネスをするには必要だが、 1円も売上に関係ない実装を 肩代わりしてくれるやつ (素晴らしい)

Slide 12

Slide 12 text

APIフレームワークを使うと ビジネスロジックに集中できる時間が増える

Slide 13

Slide 13 text

じゃあ、 APIフレームワークを使いたい場合、 どんなアーキテクチャになるか

Slide 14

Slide 14 text

Virtual private cloud (VPC) Amazon API Gateway Application Load Balancer AWS Fargate まずコンテナが思い浮かぶ

Slide 15

Slide 15 text

15 Client ALB Cluster Service ECR Image Security Group Container Port Mappings Task Definition HTTPSプロトコル通信 を選択 443ポート HTTPSを許可 80ポート、HTTP ホスト80→コンテナ8000 80ポート、HTTP ALBのSG Security Group Target Group 実際には、SGとかポートマッピングとかいろいろ考える必要がある

Slide 16

Slide 16 text

コンテナをホスティングしたくない VPCつかいたくない そしてこう考える....

Slide 17

Slide 17 text

Amazon API Gateway LambdaでAPIフレームワークが使えればいいのに.. AWS Lambda

Slide 18

Slide 18 text

現実

Slide 19

Slide 19 text

起動とペイロード Lambdaは「lambda_handler」から始まります

Slide 20

Slide 20 text

APIフレームワークは「独特」の記法から始まります 起動とペイロード

Slide 21

Slide 21 text

入出力インターフェースが違うので LambdaでAPIフレームワークは動かない

Slide 22

Slide 22 text

Lambda Web Adapter

Slide 23

Slide 23 text

https://github.com/awslabs/aws-lambda-web-adapter


Slide 24

Slide 24 text

https://github.com/awslabs/aws-lambda-web-adapter


Slide 25

Slide 25 text

https://github.com/awslabs/aws-lambda-web-adapter


Slide 26

Slide 26 text

なるほど...?

Slide 27

Slide 27 text

実装をみてみる

Slide 28

Slide 28 text

https://gallery.ecr.aws/awsguru/aws-lambda-adapter 最新バージョンをギャラリーからCopyして

Slide 29

Slide 29 text

COPYコマンド1つ追記(Dockerfileの場合)

Slide 30

Slide 30 text

https://github.com/awslabs/aws-lambda-web-adapter

Slide 31

Slide 31 text

👍とっても簡単

Slide 32

Slide 32 text

<幅広く対応> あなたの好きな APIフレームワーク きっと対応済

Slide 33

Slide 33 text

DEMO

Slide 34

Slide 34 text

まとめ

Slide 35

Slide 35 text

● APIフレームワークはサーバレスで動きます ○ Lambda Web AdapterならDockerfileに1行追記するだけ ● アーキテクチャパターンとして知っているかが重要 ○ Lambda✕APIフレームワークしたいときは、まずコレ ○ API待機のために常時稼働のFargateがあったら、リファクタが可能な構成 ■ VPCやめられる可能性 ■ ALBやめられて、コスト削減 ■ Fargateやめられて、未稼働時間分のコスト削減 ■ Dockerfile1行追記するだけ(大事なことなので繰り返し)なので難易度低め まとめ

Slide 36

Slide 36 text

APIフレームワークを Lambdaで動かす 生活協同組合コープさっぽろ 2024/08/31 小森一成(@icckx) 札幌ITでぃぐでぃぐ会 vol.2 ~API勉強会~