[Rails] carrierwave と fog で Amazon S3 をストレージとして使う
Rails のプラグイン carrierwave と fog を使って、Amazon S3 をストレージとして使う方法のメモです。
使用環境
- Rails 3.2.1
- carrierwave 0.6.0.beta
- fog 1.1.2
carrierwave のインストール
gem install carrierwave
config の書き方
initializers に carrierwave.rb というファイルを作成し、以下のような設定を書きます。
#-*- encoding: utf-8 -*- unless Rails.env.test? CarrierWave.configure do |config| config.storage = :fog config.fog_credentials = { :provider => 'AWS', :aws_access_key_id => ENV["AWS_S3_KEY_ID"], :aws_secret_access_key => ENV["AWS_S3_SECRET_KEY"] } config.fog_directory = ENV["AWS_S3_BUCKET"] config.fog_public = false config.fog_authenticated_url_expiration = 60 end else CarrierWave.configure do |config| config.storage = :file end end
ENV["AWS_S3_KEY_ID"] にはユーザアクセスID、ENV["AWS_S3_SECRET_KEY"] にはシークレットアクセスキー、ENV["AWS_S3_BUCKET"] にはバケット名をそれぞれ設定する。
各値は、Amazon S3 の設定画面で確認できる。
この設定を行い、carrierwave で Uploader を作成して、ファイルをアップロードすると、S3 にファイルを置くことができる。また、S3 上のファイルの URL には、60秒のタイムアウト設定を掛けており、アプリからのアクセスでのみ参照可能なURLが表示されるようになる。(config.fog_public = false、config.fog_authenticated_url_expiration = 60 の設定)
- Comments: 0
- TrackBacks: 0

