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')

results matching ""

    No results matching ""