NestJSをLambdaでホストしているとき、特定のサービスのメソッドをダイレクトに実行したい場合があります。
例:cronジョブをCloudWatch Event -> Lambdaで実行する
そういう時はこんな感じのhandlerを作ればOKです。
import{NestFactory}from'@nestjs/core'import{Handler}from'aws-lambda'// 実行したいサービスのあるモジュールimport{SiteModule}from'./site.module'// 実行したいサービスimport{SiteService}from'./site.service'exportconsthandler:Handler=async(event)=>{// Create NestJS applicationconstapp=awaitNestFactory.create(SiteModule)// Resolve Dependenciesconstservice=awaitapp.resolve(SiteService)// Execute methodconstresult=awaitservice.listSite(event.username)returnresult};
NestJSをLambdaでってどうなの?
パフォーマンス期待するならやめた方がいいと思います。
Fargateとかその辺覚える労力より先にNestJS使いこなせるようになりたい目的でLambdaに載せてるだけなので・・・
ただ、この記事のような形で、すでに動かしているNestJSアプリケーションの実装を使ったバッチ処理をLambdaにやらせるのはありかもしれません。
ジョブのリトライとか通知とかその辺りの便利機能がLambdaにはありますし、バッチ系なら多少立ち上がりが遅くても問題ないですし。