【Rails】 로컬 환경에서 S3의 이미지를 게시 할 수 있지만 Heroku에서 S3으로 전환되지 않는 문제

현상



로컬 환경에서 잘 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의 이미지 게시가 가능했습니다 !!!!!! 이후는, 프로덕션 환경(Heroku)에의 반영 순서가 됩니다.



프로덕션 환경(Heroku)에 반영



① 우선 잊지 않고 production.rb 업데이트
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

수고하셨습니다.

좋은 웹페이지 즐겨찾기