リモート サーバーからファイルをダウンロードしてバケット内のオブジェクトに書き込むアプリケーションを Ruby on Elastic Beanstalk で作成しています。
require 'open-uri'
...
s3 = AWS::S3.new
bucket = s3.buckets['mybucket']
f = open(params[:url]) #using open-uri
obj = bucket.objects[params[:key]]
obj.write[f] #<< fails here
ただし、最後の行は失敗し、ログに次の例外が記録されます。
:data must be provided as a String, Pathname, File, or an object that responds to #read and #eof?
#open
ただし、自分のマシンで同じことを実行すると、それがとf
を持つStringIO
オブジェクトであることがわかります。#read
#eof?