Yak shaving logs


My life is just yak shaving.

[Active Storage] Google Cloud Storage(GCS)を使用する時にcredentialsをどうするか

2019/05/28 #rails #activestorage #GCP #GCS

By Yusuke Takita


こんにちは。Takitaです。

いつもはS3を利用することが多いのですが、
GCSを利用してみてcredentialsどうすれば良いんだっけ
と思ったので備忘がてら記事を書くことにしました。

背景

まとめると、
private_keyをべた書きしたり、ファイルをgitに上げたりと
サンプルを見るとヒューマンエラーを誘発しそうだったよ、
という内容のツイートです。

対応方法

2つくらいありそうですが、Railsのcredentialsを採用しました。

  1. Railsのcredentialsを利用する
  2. .gitignoreなどでjsonファイルがコミットされないようにしつつ、ローカルやサーバーにファイルは置いてそれを使う

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
というエラーでハマると思うので気をつけてください。

参考

https://medium.com/@pjbelo/setting-up-rails-5-2-active-storage-using-google-cloud-storage-and-heroku-23df91e830f8

このエントリーをはてなブックマークに追加

categories


最新記事


tags