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