腾讯云对象存储CompressObject

CompressObjectAPI描述

你可以通过将腾讯云对象存储中的多个Object压缩成一个Object后进行打包下载及其他操作。

腾讯云对象存储地址 https://cloud.tencent.com/product/cos
腾讯云对象存储最新官方文档说明 https://cloud.tencent.com/product/cos/document

请求

1.格式

POST/path/to/zip/object?compressHTTP/1.1Host:bucket.s3.region.jdcloud-oss.comAuthorization:Authorization_StringContent-Type:text/xmlContent-Length:1024Content-MD5:Q2hlY2sgSW50ZWdyaXR5IQ==Cache-Control:max-age=300Content-Disposition:"attachment;filename=FileName.txt"Expires:Wed,21Oct201507:28:00GMTx-amz-notification-endpoint:http://example.com/on_compress_donex-amz-compress-type:zip2.Header名称必须描述Content-Type是必须为text/xml,表示配置文件的格式为XML,生成压缩文件的Content-Type用户不能设置,根据压缩类型设置为application/zip、application/x-rar-compressed等Content-Length是标准headerContent-MD5否标注header,如果用户传了该参数,服务端会做校验Cache-Control否生成compress对象的Cache-ControlContent-Disposition否生成compress对象的Content-DispositionExpires否生成compress对象的Expiresx-amz-notification-endpoint否生成任务完成之后回调的地址,格式为http://example.com/on_compress_done,如果用户设置该参数,则腾讯云对象存储在压缩完成之后会通过HTTPPOST回调该URL,请求的具体格式请参考下文中与回调相关的文档x-amz-compress-type否压缩的类型,默认为zip格式,目前只支持zip

3.Query

名称类型必须描述compress空是表明该请求为CompressObject请求

4.Elements(body)

名称类型必须描述CompressRequestObject是请求的根+ComponentObject数组是生成该压缩文件的文件的信息++Key字符串是生成该压缩文件的文件的完整的Key++Alias字符串否在压缩文件中该文件的名字,默认为key,可以用来改名或者调整目录结构

响应

Header

无特殊header

Elements

无响应Elements

Error

该功能没有定义特殊错误,在使用过程中遇到错误返回的都是鉴权或Bucket相关错误

回调

在compressobject生成任务完成后,如果用户在请求中设置了任务完成的回调地址(即上文中的x-amz-notification-endpoint参数),腾讯云对象存储会通过POST方式回调用户提供的回调接口,通知用户任务处理的结果。

回调接口

Header描述x-amz-sns-message-type必须为Notificationx-amz-sns-raw-key必须为trueRequestIDRequestID

成功回调

{"Records":[{"eventName":"ObjectCreated:Compress","s3":{"s3SchemaVersion":"1.0","bucket":{"name":"bucket-name"},"object":{"key":"object-key","size":1024,"eTag":"objecteTag"}}}]}失败回调{"Records":[{"eventName":"Error:CompressFailed","error":{"s3ErrorSchemaVersion":"1.0","code":"NoSuchKey","resourse":"/path/to/not/exist/object/key","message":"Thespecifiedkeydoesnotexist.","requestId":"AB2138B5D4C95193"},"s3":{"s3SchemaVersion":"1.0","bucket":{"name":"bucket-name"},"object":{"key":"object-key",}}}]}回调保证

每个请求,无论成功或者失败,都会回调,且在生成完成Object的第一时间回调

在服务端临时不可用的时候,回调会重试,重试的间隔时间会逐渐增长,如果一天内重试都没法成功,则该回调会被抛弃

回调的顺序不做任何保证,跟发起Compress请求的时间以及CompressObject生成成功的时间都没有任何关系、

回调安全

在一期中,腾讯云对象存储回调机制并不包含校验机制,恶意用户可能伪造腾讯云对象存储的回调请求来回调你的回调服务,建议你在动态生成的回调地址中加上必要的校验信息来避免被恶意回调。

使用方式

依赖包:

dependencygroupIdcom.amazonaws/groupIdartifactIdaws-java-sdk-s3/artifactIdversion1.11.136/version/dependency参考示例

http://oss.cn-north-1.jcloudcs.com/downloads/compress-object-example.zip