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