💭

CDKでNest.js+PrismaをApp Runnerでdeploy

2023/09/01に公開

CDKを使って、Nest.js+PrismaのアプリをAWSのApp Runnderでデプロイする。
githubのrepoはこちら。
https://github.com/ikeda1729/prisma-nest-cdk

CDK

こちらを参考にVPC, RDS, App RunnerをつくるCDKを作った。
https://dev.classmethod.jp/articles/x-ray-with-cdk-with-app-runner/

以下の点を追加変更

  • db migrateするためのEC2をつくるためのコードも追加
  • App Runnerでdb情報をenvironmentではなく、secretで設定

EC2の作成はこちらの記事を参考にした。
https://qiita.com/yokoo-an209/items/140b8a597360f4d3981c

infra dirでcdk deployするとdeployが完了。

db migrate

dbのmigrationはec2にログインする。

aws ssm start-session --target {ec2-id}

git cloneして、app dirに行き、.envにDATABASE_URL=***を記載(secret managerに登録されている)。
migrateとseedを実行して完了。

npx prisma db push
./node_modules/.bin/ts-node  prisma/seed.ts

Nest.jsアプリ

Prismaが公式で出している、Nest.js Rest APIのレポジトリを使用。
https://github.com/prisma/prisma-examples/tree/latest/typescript/rest-nestjs

上記にコンテナデプロイするためのDockerfileを追加した。

実行結果

usersエンドポイントにアクセスして、seedで投入したデータが見えれば成功。

[
  {
    "id": 1,
    "email": "alice@prisma.io",
    "name": "Alice"
  },
  {
    "id": 2,
    "email": "nilu@prisma.io",
    "name": "Nilu"
  },
  {
    "id": 3,
    "email": "mahmoud@prisma.io",
    "name": "Mahmoud"
  }
]

まとめ

CDKで、Nest.js+Prismaのapiをデプロイできた。
CDKはTSでインフラコードがかけるので、開発体験が良いと思います。

Discussion