2015年5月18日 #aws #s3

Amazon S3にaws-sdk v2を使って画像ファイル(ActionDispatch::Http::UploadedFile)をアップロードするコードです。aws-sdk v2とv1のコードは違うのでぜひぜひご注意してください。(v2の場合は全てのモジュールがAwsでv1はAWSにあります)

# Gemfile
gem 'aws-sdk', '~> 2'

# config/initializers/aws.rb
Aws.config.update(
  region: 'us-east-1',
  credentials: Aws::Credentials.new('key', 'secret'),
)

# fileはformからサブミットした`ActionDispatch::Http::UploadedFile`を想定
def upload(file)
  s3 = Aws::S3::Resource.new.bucket('bucket-name')
  s3.object('foo/bar/file.jpg').upload_file(file.tempfile)
end

テストをstub

一々AWSへのリクエストをstubしたくない場合は下記のコードを入れれば大丈夫です。

RSpec.configure do |config|
  Aws.config.update(stub_responses: true)
end

参考リンク