今晩はアストロボットです。
さて、仕事では予算のせいでECSも無理と言われて、LambdaにFastAPIそのまま乗せる方法を調べた。実はサーバーレス自体経験したことないので、制限も多く結構苦しかった。
僕はDocker派です。
社内では他のプロジェクトはSSTを使ってるので、それを参考したんだけど、それでも壁だらけだった。
一番苦しいのはサイズ。Pandasを入れたら速攻アウトとなった。これ解析APIはどうするかという課題を残るが、いまはまだそれが必要ないので、一旦Pandasを外した。
その次はFastAPIとOpenAIのPydantic問題だった。それに引っかかて色々とだめとなった。しかもDockerやSST DEVでは問題なかったのに、デプロイだけがModule Not Foundエラー(Pydantic CoreやらJiter.jiterやら)。
このエラーと散々バトルした結果、最終的に解決方法はLambdaのアーキテクチャをarm64にした。よく考えたら作業環境はM3なんだから、それはそうだろうと思いつつ…でも社内他のプロジェクトはたぶんそこ設定してないし、なぜそっちだとM3でもビルドできたんだろう…まあ、そっちFastAPI使ってないのはそうだが…
一旦それでうまく行けたので、たぶんこのベースで本番開発とする予定。
まあサーバーレスはそもそもモジュールそれぞれ分割するのが一般的なやり方なんだろうけど…。
予算がないのはつらいよ