お約束
- 本記事は ARISE analytics Advent Calendar 2022 の22日目の記事です
- 昨日は @skybee8 さんの 強化学習を用いたレコメンドを検証してみた件
- 明日は、@tsukasaI さんの Goでの日付比較チートシート
はじめに
皆さん、AWS Lambdaはお好きですか?私は大好きです。
さて、皆様はPython x lambdaでAPIをつくるときどうしてますか?
Chaliceを使う?シングルlambdaでルーティングはAPI gateway任せてますか?
多分、皆様の誰でも普段使ってるフレームワークのdjangoやStarlette、FastAPIとかをそのままlambdanに持っていきたいと思ったことないでしょうか?けど、なんか無理ぽいなと試したり、感覚で感じ取られてないでしょうか?
その夢叶えられます。そうMangumならね
https://mangum.io/asgi-frameworks/
Mangum使ってみた
さて、案ずるより産むが易しでコードを見てみましょう!
from fastapi import FastAPI
from mangum import Mangum
app = FastAPI()
@app.get("/")
def read_root():
return {"Hello": "World"}
@app.get("/items/{item_id}")
def read_item(item_id: int, q: str = None):
return {"item_id": item_id, "q": q}
handler = Mangum(app, lifespan="off")
これだけで、lambdaでFastAPIが使えるようになります!
簡単でしょ!
終わりに
サーバーレスフレームワーク大好きな皆様は、資産の移行性やベンダーロックについて認識しておりながらも渋々便利だか使っていたかと思います。Mangumを使えば最初はlambda上でAPIを作って規模が大きくなったり、非機能要件が上がった際にはECSに切り替えるなどして移行性やベンダーロックを気にしないでソリューションを作れるようになります。ぜひ、使ってみて下さい!