こんにちは。Takitaです。
いつもはS3を利用することが多いのですが、
GCSを利用してみてcredentialsどうすれば良いんだっけ
と思ったので備忘がてら記事を書くことにしました。
普通にprivate_keyとかべた書きしてpushしたりする人いそうなので、違う書き方にした方が良さそうhttps://t.co/jGsRLDoopw
— Yusuke Takita (@3chhe) 2019年5月27日
まとめると、
private_keyをべた書きしたり、ファイルをgitに上げたりと
サンプルを見るとヒューマンエラーを誘発しそうだったよ、
という内容のツイートです。
2つくらいありそうですが、Railsのcredentialsを採用しました。
jsonファイルから内容をコピーするとダブルクオートなどが入っているので置換などして整形してcredentialsに貼り付けます。
# credentials
gcs_app_name_key:
type: service_account
project_id: hoge
private_key_id: fuga
private_key: "-----BEGIN PRIVATE KEY-----hoge-----END PRIVATE KEY-----\n"
client_email: piyo
client_id: hoge
auth_uri: hoge
token_uri: hoge
auth_provider_x509_cert_url: hoge
client_x509_cert_url: hoge
storage.ymlで上記を呼び出しつつjsonにしてあげます。
# config/storage.yml
google:
service: GCS
project: hoge
credentials: <%= Rails.application.credentials.gcs_app_name_key.to_json %>
bucket: fuga
credentialsのprivate_keyはダブルクオートで囲まないと
Neither PUB key nor PRIV key: nested asn1 error
というエラーでハマると思うので気をつけてください。