AWS CodeBuildでprisma migrationができない

CodeBuildでprisma migrate deployを実行すると以下のエラーが出たので、解決方法を紹介します。

[Container] 2024/03/19 05:19:26.783641 Running command npx prisma migrate deploy
Environment variables loaded from .env
Prisma schema loaded from prisma/schema.prisma
Datasource "db": MySQL database "database_name" at "hogehoge.region.rds.amazonaws.com:3306"

Error: P1011: Error opening a TLS connection: error:0A000086:SSL routines:tls_post_process_server_certificate:certificate verify failed:../ssl/statem/statem_clnt.c:1883: (unable to get local issuer certificate)

[Container] 2024/03/19 05:19:28.212194 Command did not exit successfully npx prisma migrate deploy exit status 1
[Container] 2024/03/19 05:19:28.216114 Phase complete: BUILD State: FAILED
[Container] 2024/03/19 05:19:28.216138 Phase context status code: COMMAND_EXECUTION_ERROR Message: Error while executing command: npx prisma migrate deploy. Reason: exit status 1

DATABASE_URLは以下のように設定をして、データベースはRDSのAuroraを使用していました。

DATABASE_URL="mysql://USER:PASSWORD@HOST:PORT/DATABASE?sslaccept=strict"

CodeBuildで使用しているDocker Imageはaws/codebuild/standard:7.0です。

目次

原因: SSL証明書がないため

エラー文にある通り、SSL証明書がないため上記のエラーが出ていました。

buildspec.ymlを使ってca-certificatesをインストールした後にprisma migrate deployを実行しても解決できませんでした。

...
- apt-get install -y ca-certificates
...

解決方法: sslaccept=accept_invalid_certsを使う

解決方法は以下のようにsslaccept=accept_invalid_certsを使うことです。

DATABASE_URL="mysql://USER:PASSWORD@HOST:PORT/DATABASE?sslaccept=accept_invalid_certs"

sslacceptでは証明書に存在しない値をチェックするかどうかを設定します。

accept_invalid_certsを指定することで、無効な証明書を受け入れます。
この値はsslacceptのデフォルト値です。

参考

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする


reCaptcha の認証期間が終了しました。ページを再読み込みしてください。

目次