1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

RailsアプリのActive Storageの保存先をlocalからAmazon S3へ変更する

Last updated at Posted at 2020-11-20

この記事を読んでできるようになること

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. ダッシュボードでバケットを選択し、バケットの作成(オレンジのボタン)をクリック
スクリーンショット 2020-11-06 13.44.24.png
-3. 画像のように入力し、バケット作成をクリック(チェックは1番上を外した後、画像の3箇所をチェックする)
スクリーンショット 2020-11-06 13.49.14.png
スクリーンショット 2020-11-20 22.04.04.png
スクリーンショット 2020-11-06 13.49.24.png
-4. 作成したバケットをクリックする
-5. アクセス許可のタブを選択し、バケットポリシーの編集するをクリック
スクリーンショット 2020-11-20 22.04.53.png
-6. バケットARNをコピーし、ポリシージェネレータをクリック
スクリーンショット 2020-11-20 22.04.39.png
-7. 画像のように入力し、Generate Policyをクリック(ユーザーのARNは、作成済みのIAMユーザーのものをコピーする:3枚目を参照してください)
スクリーンショット 2020-11-06 23.15.57.png
スクリーンショット 2020-11-06 23.16.19.png
スクリーンショット 2020-11-20 22.35.30.png
-8. 画像のようにポリシーを入力したら、変更の保存をクリック
スクリーンショット 2020-11-06 23.17.17.png
これでバケットの作成は完了です。

②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_IDAWS_SECRET_ACCESS_KEYを追加する(本番環境でS3を使用する場合は、本番環境の環境変数に追加する)

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

i を押して入力モードにし、以下を追加
export AWS_ACCESS_KEY_ID="*****************"
export AWS_SECRET_ACCESS_KEY="*****************"

esc を押して、:wq を入力し保存して終了する

これで、S3に画像を保存できるようになりました。本番環境で環境変数を設定するのを忘れることがあるので注意しましょう。

1
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
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?