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
のデフォルト値です。
参考
MySQL database connector | Prisma Documentation
This page explains how Prisma can connect to a MySQL or MariaDB database using the MySQL database connector.
コメント