スポンサーリンク
概要
herokuにActive StorageでGCSを使用した際にハマったのでメモ。
症状
storage.ymlに下記のようにGCSの設定を環境変数から読み込むように設定すると下記のようなエラーが発生。
private_keyに含まれる改行などが悪さをしていると思われる。
エラー:
OpenSSL::PKey::RSAError (Neither PUB key nor PRIV key: nested asn1 error):
設定:
1 2 3 4 5 6 7 8 9 10 |
google: service: GCS project: <%= ENV['GCS_PROJECT'] %> bucket: <%= ENV['GCS_BUCKET'] %> credentials: <%= ENV['GOOGLE_CREDENTIALS'].as_json %> type: "service_account" project_id: <%= ENV['GCS_PROJECT_ID'] %> private_key_id: <%= ENV['GCS_PK_ID'] %> private_key: <%= ENV['GCS_PK'].dump %> #以下略 |
解決方法
ルートディレクトリなどにGCPからダウンロードしたjsonファイルを配置して、herokuのconfigに直接ファイルを読み込ませる。
(.gitignoreに記載しておくように注意)
1 |
heroku config:set GOOGLE_CREDENTIALS="$(< GCS.json)" |
storage.ymlにはjsonとして読み込ませる。
1 2 3 4 5 |
google: service: GCS project: <%= ENV['GCS_PROJECT'] %> bucket: <%= ENV['GCS_BUCKET'] %> credentials: <%= ENV['GOOGLE_CREDENTIALS'].as_json %> |
色々と苦労したが、これで解決した。
参考元:
https://medium.com/@pjbelo/setting-up-rails-5-2-active-storage-using-google-cloud-storage-and-heroku-23df91e830f8