Open42
NestJS + TypeScriptでAWSにアクセスするAPIサーバーをAWSにデプロイするときのメモ
![kondei](https://res.cloudinary.com/zenn/image/fetch/s--2YemqGDu--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_70/https://storage.googleapis.com/zenn-user-upload/avatar/d89c597b18.jpeg)
社内共通で使っているeslintルールで @typescript-eslint/consistent-type-imports
が効いていて、NestJSのControllerでServiceやDTOの import
が(直接使わずDIしているので利用していない判定となり)自動で import type
になってしまい、おそらくJSトランスパイル後に情報が消えており、実行エラーやDTOのvalidationが効かないなどの現象が発生した
対策として上記ルールを無効化
![kondei](https://res.cloudinary.com/zenn/image/fetch/s--2YemqGDu--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_70/https://storage.googleapis.com/zenn-user-upload/avatar/d89c597b18.jpeg)
NestJSのバリデーションはzodでも書けることを知ったけど、デフォルトのclass-validator + class-transformerと違っておそらくuseGlobalPipesに渡せず、個別にusePipesする必要がありそう
![kondei](https://res.cloudinary.com/zenn/image/fetch/s--2YemqGDu--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_70/https://storage.googleapis.com/zenn-user-upload/avatar/d89c597b18.jpeg)
docker側のEXPOSEしたportと、ecs task difinitionのportMappings containerPortが異なっている場合、疎通できない
![kondei](https://res.cloudinary.com/zenn/image/fetch/s--2YemqGDu--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_70/https://storage.googleapis.com/zenn-user-upload/avatar/d89c597b18.jpeg)
S3はオブジェクト作成日と最終更新日を別々に管理していない
![kondei](https://res.cloudinary.com/zenn/image/fetch/s--2YemqGDu--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_70/https://storage.googleapis.com/zenn-user-upload/avatar/d89c597b18.jpeg)
API KEYをVercelのSensitive Environment Variablesに登録して使おうとしたが、preview, production環境しか使えないらしく、ローカルで vercel dev
だとdevelopment環境となるので使えない
![kondei](https://res.cloudinary.com/zenn/image/fetch/s--2YemqGDu--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_70/https://storage.googleapis.com/zenn-user-upload/avatar/d89c597b18.jpeg)
nest.jsをfastifyにするとecsで自分をヘルスチェックできずデプロイエラーになったが、expressと違って0.0.0.0のリッスンが必要