SDKを使うと簡単にPOSTできる
s3upload_presigned_post.rb
require "aws-sdk-resources"
require "net/http"
target_file = "test.txt"
s3 = Aws::S3::Resource.new(region: "ap-northeast-1")
obj = s3.bucket("mybucket").object(target_file)
presigned = obj.presigned_post(server_side_encryption: "AES256")
cmd = "curl -v -X POST"
presigned.fields.each do |k, v|
cmd << " -F \"#{k}=#{v}\""
end
cmd << " -F file=@#{target_file}"
cmd << " "
cmd << presigned.url
puts cmd
puts `#{cmd}`