AWS SDK Ruby
使用 AWS 官方 SDK aws-sdk-ruby
- 普通接口
require 'aws-sdk'
s3host = 'https://api-s3.qiniu.com'
s3region = 'cn-east-1'
s3bucket = '<your-qiniu-bucket>'
s3access_key_id = '<your-qiniu-access-key-id>'
s3access_key_secret = '<your-qiniu-access-key-secret>'
s3 = Aws::S3::Resource.new({
endpoint: s3host,
region: s3region,
access_key_id: s3access_key_id,
secret_access_key: s3access_key_secret
})
# list buckets
s3.buckets.each{ |bucket| puts bucket.name }
# list objects
bucket = s3.bucket(s3bucket)
s3.objects.each{ |obj| puts "#{obj.name} => #{obj.etag}" }
# create object
newObj = bucket.object("ruby.txt")
res = newObj.put(body: 'Hello,ruby!')
puts res.etag
# download object
oldObj = bucket.object('ruby.txt')
res = oldObj.get
puts res.body.read
- 分块上传接口
#!/use/bin/env ruby
require 'aws-sdk'
# overwrite part size of multipart upload
# it's limitation of qiniu s3 service for now.
module Aws
module S3
class MultipartFileUploader
# It MUST be a size of N * 4M which N >= 1
def compute_default_part_size(source_size)
default = 4<<20 # 4M
part_size = (source_size.to_f / MAX_PARTS).ceil
default = part_size + default - part_size % default if part_size > default
default
end
end
end
end
s3host = 'https://api-s3.qiniu.com'
s3region = 'cn-east-1'
s3bucket = '<your-qiniu-bucket>'
s3access_key_id = '<your-qiniu-access-key-id>'
s3access_key_secret = '<your-qiniu-access-key-secret>'
s3 = Aws::S3::Resource.new({
endpoint: s3host,
region: s3region,
access_key_id: s3access_key_id,
secret_access_key: s3access_key_secret
})
obj = s3.bucket(s3bucket).object("ruby-test.mp4")
obj.upload_file('/path/to/file')