Merge pull request #2 from juneboy86/feature/chenjun-add-msfetch-url-api Feature/chenjun add msfetch url api
Merge pull request #2 from juneboy86/feature/chenjun-add-msfetch-url-api
Feature/chenjun add msfetch url api
This is MSS SDK for Ruby.
美团云存储服务(Meituan Storage Service, 简称MSS),是美团云对外提供的云存储服务,其具备高可靠,安全,低成本等特性,并且其API兼容S3。MSS适合存放非结构化的数据,比如图片,视频,文档,备份等。
MSS的API兼容S3, 其基本概念也和S3相同,主要包括Object, Bucket, Access Key, Secret Key等。
Object对应一个文件,包括数据和元数据两部分。元数据以key-value的形式构成,它包含一些默认的元数据信息,比如Content-Type, Etag等,用户也可以自定义元数据。
Bucket是object的容器,每个object都必须包含在一个bucket中。用户可以创建任意多个bucket。
Access Key和Secret Key: 用户注册MSS时,系统会给用户分配一对Access Key和Secret Key, 用于标识用户,用户在使用API使用MSS服务时,需要使用这两个Key。请在美团云管理控制台查询AccessKey和SecretKey。
mtmss.com
安装MSS SDK for Ruby,需要ruby与gem,并且ruby版本在1.9.3以上。
# Build MSS SDK for Ruby Gem gem build mss-sdk.gemspec # Install MSS SDK for Ruby Gem gem install -l mss-sdk-1.0.0.gem
require 'mss-sdk' s3 = MSS::S3.new({ :s3_endpoint => 'mtmss.com', :use_ssl => false, :s3_force_path_style => true, :access_key_id => '****Access Key****', :secret_access_key => '****Access Secret****'})
bucket = s3.buckets.create('bucket_name')
s3.buckets.each do |bucket| puts bucket.name end
bucket.set_acl_public_read
bucket.set_acl_private
bucket.exists?
object_name_one = 'object1' object_content = 'test' obj = bucket.objects[object_name_one].write(object_content)
obj.delete
object_name_for_test_upload = 'object2' upload_file_path = 'filepath' obj_upload = bucket.objects[object_name_for_test_upload] obj_upload.write(:file => upload_file_path)
File.open('output', 'wb') do |file| obj_upload.read do |chunk| file.write(chunk) end end
temp_url_for_read = obj_upload.url_for(:read, {:expire => 600}) puts temp_url_for_read
bucket.clear!
bucket.delete
upload = bucket.objects["Hello美团云!"].multipart_upload upload.add_part("a" * 5242880) upload.add_part("b" * 2097152) upload.complete() puts "Multipart upload succ, upload id:" + upload.id
请参考samples/s3/presinged_post.rb
post_info_str = s3.presigned_post_info( "share", # bucket名字 { :expires => 300, # 签名有效期,单位秒 :metadata => {"x-amz-meta-server" => "Hello Server!"}, # 服务器端自定义的变量,必须以"x-amz-meta-"为前缀 :callback_url => "http://mtmsscb.mtmss.cn", # 上传成功后的回调url :callback_body => "name=${fname}&bucket=${bucket}&key=${key}&hash=${etag}&size=${fsize}&server=${x-amz-meta-server}&client=${x-amz-meta-client}", # 上传成功后回调的内容,可以引用魔法变量和自定义变量 :callback_body_type => "application/x-www-form-urlencoded", # 上传成功后回调的Content-Type :callback_host => "mtmsscb.mtmss.com" # 上传成功后回调http header中的host }).to_json
# 这里使用ruby的rest-client做为示例 client_info = { "x-amz-meta-client" => "Hello Client!", # 客户端自定义变量,mss遵守标准S3协议,post表单最后一项必须是对象内容,因此客户端自定义的变量要写在value之前 :key => "Key is lena.jpg", # 对象名字 :value => File.new("./lena.jpg", 'rb'), # 待上传的对象内容 } post_info_obj = JSON.parse(post_info_str) # post_info_str为服务器端生成的签名表单对象,包括url和form,其中form为表单内容,url为上传要用到的url RestClient.post post_info_obj["url"], post_info_obj["form"].merge(client_info) # 与客户端自定义的表单内容合并后使用rest-client上传
name=lena.jpg&bucket=share&key=Key is lena.jpg&hash="76d710edc4cf48d84e3cfc7e24234a09"&size=68261&server=Hello Server!&client=Hello Client!
版权所有:中国计算机学会技术支持:开源发展技术委员会 京ICP备13000930号-9 京公网安备 11010802032778号
MSS(Meituan Storage Service) SDK for Ruby
This is MSS SDK for Ruby.
Introduction
MSS服务介绍
美团云存储服务(Meituan Storage Service, 简称MSS),是美团云对外提供的云存储服务,其具备高可靠,安全,低成本等特性,并且其API兼容S3。MSS适合存放非结构化的数据,比如图片,视频,文档,备份等。
MSS基本概念介绍
MSS的API兼容S3, 其基本概念也和S3相同,主要包括Object, Bucket, Access Key, Secret Key等。
Object对应一个文件,包括数据和元数据两部分。元数据以key-value的形式构成,它包含一些默认的元数据信息,比如Content-Type, Etag等,用户也可以自定义元数据。
Bucket是object的容器,每个object都必须包含在一个bucket中。用户可以创建任意多个bucket。
Access Key和Secret Key: 用户注册MSS时,系统会给用户分配一对Access Key和Secret Key, 用于标识用户,用户在使用API使用MSS服务时,需要使用这两个Key。请在美团云管理控制台查询AccessKey和SecretKey。
MSS访问域名
Installation
安装MSS SDK for Ruby,需要ruby与gem,并且ruby版本在1.9.3以上。
Quick Start
初始化
新建bucket
列出所有bucket
设置bucket属性为公共可读
设置bucket属性为私有
判断bucket是否存在
从字符串或缓冲区上传对象
删除对象
从文件上传对象
下载对象到本地文件
生成预签名的对象地址
删除bucket内所有对象
删除bucket
大文件分片上传
预签名Post上传对象
服务器端生成签名表单,用于发给客户端
目前支持的魔法变量
客户端使用Post上传对象
回调服务器收到的消息体