bunty's blog

ググったこととか勉強したことのメモ

Heroku にある Laravel の MYSQL_ATTR_SSL_CA を設定する

config/database.php ファイルの MYSQL_ATTR_SSL_CA を設定する機会がありました。 この環境変数自体は PDO の PDO::MYSQL_ATTR_SSL_CA を指定するのでドキュメントを見てみると、「SSL 認証局のファイルパス。」 と記載があるためパスを指定すれば良いようです。

www.php.net

Heroku のドキュメントでは ./config/amazon-rds-ca-cert.pem に保存していました。 (証明書のダウンロードもこちらの記事に記載されてます) devcenter.heroku.com

Git 内では管理したくないことと毎回 curl コマンドを実行してダウンロードさせるのは失敗した場合にリスキーなのでこの方法はあまり良くないかなと思います。 そこで、環境変数からダウンロードした ~.pem ファイルの中身を渡し、ファイルを毎回生成するようにしました。 .profile.d 以下にシェルファイルを作成するとビルド時に実行されるため、ここで環境変数からファイルを作成しています。

#!/usr/bin/env bash
set -ex

echo -e "${MYSQL_ATTR_SSL_CA_CONTENT}" > /app/amazon-rds-ca-cert.pem

環境変数の設定はこんな感じ指定します。

MYSQL_ATTR_SSL_CA=/app/amazon-rds-ca-cert.pem
MYSQL_ATTR_SSL_CA_CONTENT=ここにダウンロードしたファイルの中身を記載

これで毎回 .pem ファイルが作成されるようになりました。