Prisma x AWS Amplify x Next.jsでPrismaClientがエラーを返していた理由

投稿日:2025-01-22

Prisma x AWS Amplify x Next.jsでPrismaClientがエラーを返していた理由

ローカル環境やVercelでのデプロイ環境では動くのに何故かAWSのAmplify環境ではPrismaが動かない!

今回はその解決方法と忘備録です。

0からのNext.js学習としてORM(Prisma)を用いてデータを取得するサイトの開発を行っており、「一旦本番環境(Amplify)にデプロイするかぁ...!」と思いデプロイ。
findMany()を使用してデータ一覧を表示することは出来たが、api/sample/[id]からデータを取得して表示を行うページでは何故かPrismaClientがerrorを返してくる。

Amplifyでデプロイするのは初めてで使い方が悪いのかもしれないと思い、Vercelにデプロイ。すると一覧のページもapiのページも正常に動く....
「じゃあAmplifyの環境変数かビルドの設定がおかしいんじゃない?!」と仮定し、色々いじってみたりする...動かない!(原因はそこでは無かった為)


謎!

「Amplifyのログを確認すれば良いのでは...?」

CloudWatchでログを確認した所、以下のような文章が

Error [PrismaClientInitializationError]: Prisma Client could not locate the Query Engine for runtime "rhel-openssl-1.0.x".
This happened because Prisma Client was generated for "rhel-openssl-3.0.x", but the actual deployment required "rhel-openssl-1.0.x".

...?

どうやら、Amplifyのデプロイではprisma.schemaのgerate clientに binaryTargets = ["native", "rhel-openssl-1.0.x"] を設定しないといけないらしい。

まとめ

本番環境でのエラーを解消するには

  1. ログを見る
  2. ビルド設定を見る
  3. コードを見る

の順番が良さそうですね...?