PR

【Ruby on Rails】Active Storageの保存先をlocalからS3に移行した防備録

RAILS ITツール

conohaのVPSからAWS環境に移行した際に、画像データがVPSのWebサーバーのlocalに保存されていました。

このままではWebサーバーの負荷が上がってしまうため、AWSへの移行の際にS3に保存するようにしました。

今回はその設定の防備録です。

config/storage.ymlの編集

amazon:
  service: S3
  region: ap-northeast-1
  bucket: <S3のバケット名>

上記を追記します。

※VPCの設定でEC2とS3の道は作成済であったため、認証アカウントなどは不要でした。

config/environments/production.rbの編集

config.active_storage.service = :local
 ↓下記に変更
config.active_storage.service = :amazon

該当の箇所を探して「local」から「amazon」に変更します。

S3へstorageの中身を保存

localに保存の設定をされている場合は、Railsの「storage」に画像などのデータが保存されています。

その中身をS3へアップロードします。

いざAWSの環境へ!と見たものの表示されない…

公式のドキュメントやネット検索ではここまでしか見つけられませんでした…

ここからは独力で見つけた設定方法でです。

DBのテーブル:active_storage_blobsの確認

今回使用するDBを確認します。

active storageを使用しているとactive_storage_blobsというテーブルがあると思いますので、内容を確認します。

active_storage_blobs
service_name

ここがlocalのままだ!ということに気づいたので、変更します。

update active_storage_blobs set service_name = 'amazon' where service_name = 'local';

このクエリでlocalからamazonに変更します。

※一度に全て変更せず、もう少し条件を絞ってテストをしてからの変更をお勧めします

これで表示できました!

コメント

タイトルとURLをコピーしました