目的
AWSのS3を使用し、画像をアップロードする。
開発環境
macOS: Big Sur
Rubyバージョン: 2.6.5
Railsバージョン: 6.0.0
前提
- S3のバケットが作成されている。
【AWS】S3バケット作成 - 環境変数が設定されている。
【AWS】S3を用いた画像のアップロード - アプリが作成されている。
【Rails】簡単な投稿アプリの作成 - 画像アップロード機能が実装されている。
【Rails】ユーザープロフィール画像機能の実装(Carrierwave)
手順
はじめに
今回はAWSのS3
を用いた画像アップロードを実装していきます。
Gemのインストール
以降のコードを編集する際はmasterブランチで作業していきます。
それでは早速始めていきます!
S3を使用するために必要なfog-aws
というGemをインストールします!
#省略
gem 'fog-aws'
% bundle install
これでインストールできました!
アップローダーの編集
続いて、画像の保存先をlocal
からS3
に保存されるように設定を変更します!
storage :file
をstorage :fog
に変更することでS3
へアップロードすることができます。
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
を作成し、以下のコードを追記します。
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
を用いた画像アップロード機能実装は完了です。
では。