0
0

More than 3 years have passed since last update.

【Rails】ローカル環境でS3の画像投稿ができるのに、Heroku上でS3に切り替わらない問題

Last updated at Posted at 2021-01-19

現象

ローカル環境でうまくS3に画像を保管出来た!!
しかし、Heroku側にマージしてもなぜかHerokuのDB上で画像を保管している。。。
エラーも出ない。。
なぜだろうか。。。

原因

今思えば当たり前の話なのですが、、
原因は本番環境用(Heroku)のファイルにActiveStorageの設定をしていないというものでした。

種類 環境 設定ファイル
開発環境 ローカル環境 development.rb
本番環境 Heroku production.rb(⇦こっちに設定入れてなかった)

** 同じミスをしないように手順を残しておきます **

ローカル環境での設定(※aws側の設定は割愛)

①S3を使用するために必要なGemfileを導入

Gemfile.
gem "aws-sdk-s3", require: false

②追記したら、ターミナルにて開発中のアプリに入り「bundle install」を実行

ターミナル.
% bundle install

③development.rbとstorage.ymlファイルも更新

config/environments/development.rb

# S3にて保存されるように設定を変更
# config.active_storage.service = :local
config.active_storage.service = :amazon
config/storage.yml
# S3の設定を追記
amazon:
  service: S3
  region : ap-southeast-1  # リージョンをaws側で確認して記載
  bucket : furimabucket    # バケット名をaws側で確認して記載
  access_key_id: <%= ENV['AWS_ACCESS_KEY_ID'] %> 
  secret_access_key:  <%= ENV['AWS_SECRET_ACCESS_KEY'] %>

④環境変数の追記

③のstorage.ymlにて「AWS_ACCESS_KEY_ID」「AWS_SECRET_ACCESS_KEY」を設定しているので開発中のアプリにて環境変数を追記。

ターミナル.
% vim ~/.zshrc

「i」で編集モードにして2つの変数を登録

ターミナル.
export AWS_ACCESS_KEY_ID="Access key IDの値"
export AWS_SECRET_ACCESS_KEY="Secret access keyの値"

編集が終わったら、[ESC]→:wqで終了
続いて、環境変数の設定ファイルを読み込み直す

ターミナル.
% source ~/.zshrc

これで、ローカル環境でS3の画像投稿ができた!!!!!!:relaxed:
以降は、本番環境(Heroku)への反映手順となります。:writing_hand:

本番環境(Heroku)への反映

①まずは忘れずにproduction.rbの更新:point_up:
storage.ymlは特に変更なし。

config/environments/production.rb

# 本番環境でもS3にて保存されるように設定
config.active_storage.service = :amazon

②ターミナルにてHerokuにログイン

ターミナル.
% heroku login --interactive

③本番環境でも環境変数を設定
環境変数を確認したい場合は「% heroku config」

ターミナル.
% heroku config:set AWS_ACCESS_KEY_ID="Access key IDの値"
% heroku config:set AWS_SECRET_ACCESS_KEY="Secret access keyの値"

④あとはコミットして完了

ターミナル.
% git add .
% git commit -m "ストレージの変更(S3)"
% git push heroku master

:sparkles::sparkles::sparkles::sparkles:お疲れ様でした。:sparkles::sparkles::sparkles::sparkles:

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0