アラフォーがお金持ちになるためプログラマ目指すブログ

お金も根性も学歴もないアラフォーまきのがエンジニア…じゃない、プログラマになってお金持ち目指すよ!

【Railsメモ】Heroku × AWS / S3 × Railsの設定

超個人的メモ。
プロトタイプの設定を流用している部分があるから記憶が定かでない部分あり。





1:【Rails】gemのaws-sdk-s3を追加


Gemfileへ加筆

gem "aws-sdk-s3"


そしたらコマンド

$ bundle install


よく忘れるので注意。





あと、config/environmentes/production.rbで

config.active_storage.service = :local


config.active_storage.service = :amazon


にする




2:【AWS】AWSログイン

S3へ移動




3:【AWS / S3】「バケットを作成する」クリック


バケットの名前をつけて、それ以外はとりあえずデフォでおk
※内容を詳しく調べて、調整したいようなら調整


4:【Rails】config/locales/storage.ymlへ設定を加筆

# Use rails credentials:edit to set the AWS secrets (as aws:access_key_id|secret_access_key)
amazon:
  service: S3
#   access_key_id: <%= Rails.application.credentials.dig(:aws, :access_key_id) %>
#   secret_access_key: <%= Rails.application.credentials.dig(:aws, :secret_access_key) %>
#   region: us-east-1
#   bucket: your_own_bucket

最初は全てコメントアウトされてるから、amazon: と service: S3 の部分をコメント外す。




その下の4つのコメント行が、設定として書いてね!と言われている内容。



ただし、見た通りこの設定はaccess_key_idやsecret_access_keyなどが含まれ、AWSから発行されたそれをベタうちすれば、当然悪用されることになる。





5:【Heroku】環境変数を使って書いておく。


悪用されないように、環境変数を使ってidやらsecret keyやらを設定する。
Heroku先生にご協力いただく。






HerokuのSettingにある「Reveal Config Vars」をクリック。
Config Varsが見えるようになる。




右下の「Add」で、さっきのstorage.ymlでコメントされていた4つの項目を設定。




左のフォームが環境変数。
環境変数にはアプリの名前を入れてあげるとわかりやすい。
HOGEっていうアプリならHOGE_AWS_IDみたいな。





右のフォームが実際のidなど代入すべき内容。



6:【Rails】storage.ymlに環境変数をかく

Herokuで環境変数と実際のidなどが結び付けられたら、さっきのRailsのstorage.ymlにもそれを書く。


amazon:
  service: S3
  access_key_id: <%= ENV['HOGE_AWS_ID'] %>
  secret_access_key: <%= ENV['HOGE_AWS_SECRET_ID'] %>
  region: <%= ENV['HOGE_AWS_REGION'] %>
  bucket: <%= ENV['HOGE_AWS_BUCKET'] %>


こんな感じ


7:Herokuへpush


git保存してpushすればおk!
私の場合Github Desktopを使っているので、そっちでコミットしたらコマンドで

$ git push heroku master


する。