この記事を読んでできるようになること
RailsアプリのActive Storage(画像)の保存先を local から Amazon S3 へ変更できるようになる。
前提条件
・Active Storageを導入済みであること
・AWSに登録済みであること
・S3へのアクセス権限を持ったIAMユーザーを作成済みであること
・Macでの操作手順であること
Amazon S3とは
Amazon Simple Storage Serviceの略称で、インターネット用のストレージサービスのこと。AWSの一つ。
Active Storageの保存先をlocalからAmazon S3へ変更する手順
①バケットの作成
バケットとは、オブジェクトのコンテナのこと。画像などを保存するための箱のようなイメージ。
-1. AWSマネジメントコンソールよりAmazon S3へ移動する。
-2. ダッシュボードでバケットを選択し、バケットの作成
(オレンジのボタン)をクリック
-3. 画像のように入力し、バケット作成
をクリック(チェックは1番上を外した後、画像の3箇所をチェックする)
-4. 作成したバケットをクリックする
-5. アクセス許可のタブを選択し、バケットポリシーの編集する
をクリック
-6. バケットARNをコピーし、ポリシージェネレータ
をクリック
-7. 画像のように入力し、Generate Policy
をクリック(ユーザーのARNは、作成済みのIAMユーザーのものをコピーする:3枚目を参照してください)
-8. 画像のようにポリシーを入力したら、変更の保存
をクリック
これでバケットの作成は完了です。
②Railsアプリの画像の保存先の変更
-1. Gemを導入する
<Gemfile>
gem "aws-sdk-s3", require: false
-2. バンドルインストールする
% bundle install
-3. 画像の保存先を変更したい環境の設定ファイルの保存先を :amazon に変更する
<config/environment/development.rb> または <config/environment/production.rb>
config.active_storage.service = :amazon
-4. ストレージの設定を追加する
<config/storage.yml>
local:
service: Disk
root: <%= Rails.root.join("storage") %>
↓↓これを追加
amazon:
service: S3
access_key_id: <%= ENV['AWS_ACCESS_KEY_ID'] %>
secret_access_key: <%= ENV['AWS_SECRET_ACCESS_KEY'] %>
region: ap-northeast-1 (リージョンに合わせて変更)
bucket: 作成したバケット名
-5. 環境変数にAWS_ACCESS_KEY_ID
とAWS_SECRET_ACCESS_KEY
を追加する(本番環境でS3を使用する場合は、本番環境の環境変数に追加する)
<ターミナル>
% vim ~/.zshrc
i を押して入力モードにし、以下を追加
export AWS_ACCESS_KEY_ID="*****************"
export AWS_SECRET_ACCESS_KEY="*****************"
esc を押して、:wq を入力し保存して終了する
これで、S3に画像を保存できるようになりました。本番環境で環境変数を設定するのを忘れることがあるので注意しましょう。