2015年5月18日

aws-sdk v2を使って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

参考リンク

Share on Twitter Share the post
Qihuan Piao

朴 起煥

東京で働いている「外人歴」9年のソフトウェア「ライター」。いつの間にか納豆が食えるようになり、これで日本に慣れきったと思いきやまだまだ驚きが続いてる。読んだり書いたりするのが好きで、自身の経験や本から得た「何か」をここに書き出してる。最近古本屋にハマってる。

他にも英語中国語で書いてます、よろしければチェックしてみてください。