Several days ago I noticed one of my backup to Amazon S3 was failed because the file is larger than 5GB and I didn’t use multipart upload. Code snippet as below. Works on AWS SDK for Ruby v3.
#!/usr/bin/env ruby
# encoding: utf-8
require "aws-sdk-s3"
bucket_name = ARGV[0]
object_name = ARGV[1]
filename = ARGV[2]
if ARGV.size != 3
raise ArgumentError, "Missing argument"
end
Aws.config.update({ region: "ap-southeast-2"}) # Sydney
s3 = Aws::S3::Resource.new
bucket = s3.bucket(bucket_name)
object = bucket.object(object_name)
object.upload_file(filename) # Support file up to 5TB
# Not multipart upload - up to 5GB only
#File.open(filename, "rb"){|file|
# object.put({:body => file})
#}
Ruby gems version as below
$ gem list | grep aws aws-partitions (1.57.0) aws-sdk-core (3.14.0) aws-sdk-kms (1.4.0) aws-sdk-s3 (1.8.0) aws-sigv4 (1.0.2)