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

【AWS】S3を用いた画像のアップロード(Carrierwave)

Posted at

目的

AWSのS3を使用し、画像をアップロードする。

開発環境

macOS: Big Sur
Rubyバージョン: 2.6.5
Railsバージョン: 6.0.0

前提

手順

  1. はじめに
  2. Gemのインストール
  3. アップローダーの編集
  4. carrierwave.rbの編集
  5. 環境変数の設定

はじめに

今回はAWSのS3を用いた画像アップロードを実装していきます。

Gemのインストール

以降のコードを編集する際はmasterブランチで作業していきます。

それでは早速始めていきます!
S3を使用するために必要なfog-awsというGemをインストールします!

Gemfile
#省略
gem 'fog-aws'
ターミナル
% bundle install

これでインストールできました!

アップローダーの編集

続いて、画像の保存先をlocalからS3に保存されるように設定を変更します!
storage :filestorage :fogに変更することでS3へアップロードすることができます。

app/uploaders/avatar_uploader.rb
class AvatarUploader < CarrierWave::Uploader::Base
  # Include RMagick or MiniMagick support:
  # include CarrierWave::RMagick
  # include CarrierWave::MiniMagick

  # Choose what kind of storage to use for this uploader:
  # storage :file
  storage :fog
#省略

これで画像の保存先が変更できました。

carrierwave.rbの編集

次に、S3で使用するバケット名リージョン名環境変数を記述します。
carrierwave.rbを作成し、以下のコードを追記します。

config/initializers/carrierwave.rb
require 'carrierwave/storage/abstract'
require 'carrierwave/storage/file'
require 'carrierwave/storage/fog'

CarrierWave.configure do |config|
    config.storage :fog
    config.fog_provider = 'fog/aws'
    config.fog_directory  = 'バケット名' # バケット名
    config.fog_credentials = {
      provider: 'AWS',
      aws_access_key_id: ENV['AWS_ACCESS_KEY_ID'], # 環境変数
      aws_secret_access_key: ENV['AWS_SECRET_ACCESS_KEY'], # 環境変数
      region: 'ap-northeast-1', # リージョン
      path_style: true
    }
end 

「バケット名」の箇所には、自分のバケット名を入力します!

環境変数の設定

環境変数はこちらを参考に設定します。【AWS】S3を用いた画像のアップロード

設定後、正しくできているかを確認するために、下記のコマンドを入力してください。

% heroku config

確認できたら、コミットしてHerokuに反映させます。

ターミナル
% git push heroku master

その後、本番環境で挙動確認し問題がなければ完了です。

最後に

以上で、S3を用いた画像アップロード機能実装は完了です。
では。

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?