华为云用户手册

  • 请求消息样式 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 POST / HTTP/1.1 Host: bucketname.obs.cn-north-4.myhuaweicloud.com User-Agent: browser_data Accept: file_types Accept-Language: Regions Accept-Encoding: encoding Accept-Charset: character_set Keep-Alive: 300 Connection: keep-alive Content-Type: multipart/form-data; boundary=9431149156168 Content-Length: length --9431149156168 Content-Disposition: form-data; name="key" acl --9431149156168 Content-Disposition: form-data; name="success_action_redirect" success_redirect --9431149156168 Content-Disposition: form-data; name="content-Type" content_type --9431149156168 Content-Disposition: form-data; name="x-obs-meta-uuid" uuid --9431149156168 Content-Disposition: form-data; name="x-obs-meta-tag" metadata --9431149156168 Content-Disposition: form-data; name="AccessKeyId" access-key-id --9431149156168 Content-Disposition: form-data; name="policy" encoded_policy --9431149156168 Content-Disposition: form-data; name="signature" signature= --9431149156168 Content-Disposition: form-data; name="file"; filename="MyFilename" Content-Type: image/jpeg file_content --9431149156168 Content-Disposition: form-data; name="submit" Upload to OBS --9431149156168--
  • WORM 如果桶的WORM开关是开启的,则可以为对象配置WORM。您可以通过携带元素x-obs-object-lock-mode和x-obs-object-lock-retain-until-date在上传对象的同时指定对象的保护策略,如果您不携带这些元素,但配置了桶级默认WORM策略,则新上传的对象会自动应用默认策略。您还可以在上传后配置或修改对象级WORM保护策略。 在桶的WORM开关开启时,系统会自动打开多版本功能。WORM保护是基于对象版本号的,配置WORM的版本受到WORM保护,没有配置WORM的版本可正常删除。例如,test.txt 001受到WORM保护。此时再次上传同名文件,产生新的对象版本test.txt 002,test.txt 002并未配置WORM,那么test.txt 002就不受保护可以正常删除。当您下载对象时,不指定版本号下载的是最新对象,也就是test.txt 002。
  • 请求示例:上传时配置website实现下载对象重定向 当桶设置了Website配置,您可以在上传对象时进行以下设置,设置后用户在下载对象时会重定向 1 2 3 4 5 6 7 8 9 10 11 PUT /object01 HTTP/1.1 User-Agent: curl/7.29.0 Host: examplebucket.obs.cn-north-4.myhuaweicloud.com Accept: */* Date: WED, 01 Jul 2015 04:17:12 GMT x-obs-website-redirect-location: http://www.example.com/ Authorization: OBS H4IPJX0TQTHTHEBQQCEC:uFVJhp/dJqj/CJIVLrSZ0gpw3ng= Content-Length: 10240 Expect: 100-continue [1024 Byte data content]
  • 响应示例:在URL中携带签名并上传对象 1 2 3 4 5 6 7 8 HTTP/1.1 200 OK Server: OBS x-obs-request-id: DCD2FC9CAB78000001439A51DB2B2577 x-obs-id-2: 32AAAUJAIAABAAAQAAEAABAAAQAAEAABCTmxB5ufMj/7/GzP8TFwTbp33u0xhn2Z ETag: "1072e1b96b47d7ec859710068aa70d57" Date: Fri, 27 Jul 2018 10:52:31 GMT x-obs-version-id: AAABQ4q2M9_c0vycq3gAAAAAVURTRkha Content-Length: 0
  • 响应示例:上传时配置website实现下载对象重定向 1 2 3 4 5 6 7 8 HTTP/1.1 200 OK Server: OBS x-obs-request-id: DCD2FC9CAB78000001439A51DB2B2577 x-obs-id-2: 32AAAUJAIAABAAAQAAEAABAAAQAAEAABCTmxB5ufMj/7/GzP8TFwTbp33u0xhn2Z ETag: "1072e1b96b47d7ec859710068aa70d57" Date: WED, 01 Jul 2015 04:17:12 GMT x-obs-version-id: AAABQ4q2M9_c0vycq3gAAAAAVURTRkha Content-Length: 0
  • 响应示例:桶开启多版本时上传对象 1 2 3 4 5 6 7 8 HTTP/1.1 200 OK Server: OBS x-obs-request-id: DCD2FC9CAB78000001439A51DB2B2577 ETag: "d41d8cd98f00b204e9800998ecf8427e" X-OBS-ID-2: GcVgfeOJHx8JZHTHrRqkPsbKdB583fYbr3RBbHT6mMrBstReVILBZbMAdLiBYy1l Date: WED, 01 Jul 2015 04:17:12 GMT x-obs-version-id: AAABQ4q2M9_c0vycq3gAAAAAVURTRkha Content-Length: 0
  • 请求示例:上传对象时携带MD5 1 2 3 4 5 6 7 8 9 10 11 PUT /object01 HTTP/1.1 User-Agent: curl/7.29.0 Host: examplebucket.obs.cn-north-4.myhuaweicloud.com Accept: */* Date: WED, 01 Jul 2015 04:17:50 GMT Authorization: OBS H4IPJX0TQTHTHEBQQCEC:uFVJhp/dJqj/CJIVLrSZ0gpw3ng= Content-Length: 10 Content-MD5: 6Afx/PgtEy+bsBjKZzihnw== Expect: 100-continue 1234567890
  • 响应示例:上传对象时携带MD5 1 2 3 4 5 6 7 HTTP/1.1 200 OK Server: OBS x-obs-request-id: BB7800000164B165971F91D82217D105 X-OBS-ID-2: 32AAAUJAIAABAAAQAAEAABAAAQAAEAA BCS EKhBpS4BB3d SMN qMtuNxQDD9XvOw5h ETag: "1072e1b96b47d7ec859710068aa70d57" Date: WED, 01 Jul 2015 04:17:50 GMT Content-Length: 0
  • 请求示例:在URL中携带签名并上传对象 PUT /object02?AccessKeyId=H4IPJX0TQTHTHEBQQCEC&Expires=1532688887&Signature=EQmDuOhaLUrzrzRNZxwS72CXeXM%3D HTTP/1.1 User-Agent: curl/7.29.0 Host: examplebucket.obs.cn-north-4.myhuaweicloud.com Accept: */* Content-Length: 1024 [1024 Byte data content]
  • 请求示例:上传指定存储类型的对象 1 2 3 4 5 6 7 8 9 10 11 PUT /object01 HTTP/1.1 User-Agent: curl/7.29.0 Host: examplebucket.obs.cn-north-4.myhuaweicloud.com Accept: */* Date: WED, 01 Jul 2015 04:15:07 GMT x-obs-storage-class: WARM Authorization: OBS H4IPJX0TQTHTHEBQQCEC:uFVJhp/dJqj/CJIVLrSZ0gpw3ng= Content-Length: 10240 Expect: 100-continue [1024 Byte data content]
  • 响应示例:上传指定存储类型的对象 1 2 3 4 5 6 7 HTTP/1.1 200 OK Server: OBS x-obs-request-id: BB7800000164846A2112F98BF970AA7E ETag: "d41d8cd98f00b204e9800998ecf8427e" x-obs-id-2: a39E0UgAIAABAAAQAAEAABAAAQAAEAABCTPOUJu5XlNyU32fvKjM/92MQZK2gtoB Date: WED, 01 Jul 2015 04:15:07 GMT Content-Length: 0
  • 响应示例 :上传时配置对象级WORM保护策略 1 2 3 4 5 6 7 HTTP/1.1 200 OK Server: OBS x-obs-request-id: BF2600000164364C10805D385E1E3C67 ETag: "d41d8cd98f00b204e9800998ecf8427e" x-obs-id-2: 32AAAWJAMAABAAAQAAEAABAAAQAAEAABCTzu4Jp2lquWuXsjnLyPPiT3cfGhqPoY Date: WED, 01 Jul 2015 04:11:15 GMT Content-Length: 0
  • 请求示例:上传时配置对象级WORM保护策略 PUT /object01 HTTP/1.1 User-Agent: curl/7.29.0 Host: examplebucket.obs.cn-north-4.myhuaweicloud.com Accept: */* Date: WED, 01 Jul 2015 04:11:15 GMT Authorization: OBS H4IPJX0TQTHTHEBQQCEC:gYqplLq30dEX7GMi2qFWyjdFsyw= Content-Length: 10240 x-obs-object-lock-mode:COMPLIANCE x-obs-object-lock-retain-until-date:2022-09-24T16:10:25Z Expect: 100-continue [1024 Byte data content]
  • 响应消息头 该请求的响应消息使用公共消息头,具体请参考表1。 除公共响应消息头之外,还可能使用如表2中的消息头。 表2 附加响应消息头 消息头名称 消息头类型 描述 x-obs-version-id String 参数解释: 对象的版本号。如果桶的多版本状态为开启,则会返回对象的版本号。 约束限制: 无 取值范围: 无 默认取值: 无 x-obs-server-side-encryption String 参数解释: 该头域表示服务端的加密方式。 示例:x-obs-server-side-encryption:kms 约束限制: 如果服务端加密是SSE-KMS方式,响应包含该头域。 取值范围: kms AES256 默认取值: 无 x-obs-server-side-data-encryption String 参数解释: 如果服务端加密是SSE-KMS方式,且 数据加密 算法为SM4,响应包含该头域。 示例:x-obs-server-side-data-encryption:SM4 约束限制: 仅在SSE-KMS加密方式下使用该头域。 取值范围: SM4:国密SM4算法 默认取值: 无 x-obs-server-side-encryption-kms-key-id String 参数描述: 当加密方式为SSE-KMS且使用指定密钥加密时,需输入密钥ID。密钥ID获取方法请参见查看密钥。 约束限制: 当您设置了x-obs-server-side-encryption头域且赋值为“kms”,即选择kms加密方式时,才能使用该头域指定加密密钥。 默认取值: 当您选择使用kms加密方式,但未设置此头域时,默认的主密钥将会被使用。如果默认主密钥不存在,系统将默认创建并使用。 x-obs-server-side-encryption-customer-algorithm String 参数解释: 该头域表示加密使用的算法。 示例:x-obs-server-side-encryption-customer-algorithm: AES256 约束限制: 如果服务端加密是SSE-C方式,响应包含该头域。 取值范围: AES256 默认取值: 无 x-obs-server-side-encryption-customer-key-MD5 String 参数解释: 该头域表示加密使用的密钥的MD5值。 示例:x-obs-server-side-encryption-customer-key-MD5:4XvB3tbNTN+tIEVa0/fGaQ== 约束限制: 如果服务端加密是SSE-C方式,响应包含该头域。 取值范围: 密钥的MD5值。 默认取值: 无 x-obs-storage-class String 参数解释: 对象的存储类别。 约束限制: 对象为非标准存储对象时,会返回此头域。 取值范围: WARM COLD DEEP_ARCHIVE 默认取值: 无
  • 请求示例:桶开启多版本时上传对象 1 2 3 4 5 6 7 8 9 10 11 PUT /object01 HTTP/1.1 User-Agent: curl/7.29.0 Host: examplebucket.obs.cn-north-4.myhuaweicloud.com Accept: */* Date: WED, 01 Jul 2015 04:17:12 GMT x-obs-storage-class: WARM Authorization: OBS H4IPJX0TQTHTHEBQQCEC:uFVJhp/dJqj/CJIVLrSZ0gpw3ng= Content-Length: 10240 Expect: 100-continue [1024 Byte data content]
  • 与POST上传的区别 PUT上传中参数通过请求头域传递;POST上传则作为消息体中的表单域传递。 PUT上传需在URL中指定对象名;POST上传提交的URL为桶 域名 ,无需指定对象名。两者的请求行分别为: PUT /ObjectName HTTP/1.1 POST / HTTP/1.1 使用PUT上传请求时,消息体中如果使用POST格式,则上传到OBS中的对象会以表单形式呈现。 关于POST上传的更多详细信息,请参考POST上传。
  • 请求示例:上传对象的同时设置ACL 1 2 3 4 5 6 7 8 9 10 11 PUT /object01 HTTP/1.1 User-Agent: curl/7.29.0 Host: examplebucket.obs.cn-north-4.myhuaweicloud.com Accept: */* Date: WED, 01 Jul 2015 04:13:55 GMT x-obs-grant-read:id=52f24s3593as5730ea4f722483579ai7,id=a93fcas852f24s3596ea8366794f7224 Authorization: OBS H4IPJX0TQTHTHEBQQCEC:gYqplLq30dEX7GMi2qFWyjdFsyw= Content-Length: 10240 Expect: 100-continue [1024 Byte data content]
  • WORM 如果桶的WORM开关是开启的,则可以为对象配置WORM。您可以通过携带头域x-obs-object-lock-mode和x-obs-object-lock-retain-until-date在上传对象的同时指定对象的保护策略,如果您不携带这些头域,但配置了桶级默认WORM策略,则新上传的对象会自动应用默认策略。您还可以在上传后配置或修改对象级WORM保护策略。 在桶的WORM开关开启时,系统会自动打开多版本功能。WORM保护是基于对象版本号的,配置WORM的版本受到WORM保护,没有配置WORM的版本可正常删除。例如,test.txt 001受到WORM保护。此时再次上传同名文件,产生新的对象版本test.txt 002,test.txt 002并未配置WORM,那么test.txt 002就不受保护可以正常删除。当您下载对象时,不指定版本号下载的是最新对象,也就是test.txt 002。
  • 请求示例:上传对象 1 2 3 4 5 6 7 8 9 10 PUT /object01 HTTP/1.1 User-Agent: curl/7.29.0 Host: examplebucket.obs.cn-north-4.myhuaweicloud.com Accept: */* Date: WED, 01 Jul 2015 04:11:15 GMT Authorization: OBS H4IPJX0TQTHTHEBQQCEC:gYqplLq30dEX7GMi2qFWyjdFsyw= Content-Length: 10240 Expect: 100-continue [1024 Byte data content]
  • 响应示例:上传对象 1 2 3 4 5 6 7 HTTP/1.1 200 OK Server: OBS x-obs-request-id: BF2600000164364C10805D385E1E3C67 ETag: "d41d8cd98f00b204e9800998ecf8427e" x-obs-id-2: 32AAAWJAMAABAAAQAAEAABAAAQAAEAABCTzu4Jp2lquWuXsjnLyPPiT3cfGhqPoY Date: WED, 01 Jul 2015 04:11:15 GMT Content-Length: 0
  • 响应示例:上传对象的同时设置ACL 1 2 3 4 5 6 7 HTTP/1.1 200 OK Server: OBS x-obs-request-id: BB7800000164845759E4F3B39ABEE55E ETag: "d41d8cd98f00b204e9800998ecf8427e" x-obs-id-2: 32AAAQAAEAABAAAQAAEAABAAAQAAEAAB CS ReVRNuas0knI+Y96iXrZA7BLUgj06Z Date: WED, 01 Jul 2015 04:13:55 GMT Content-Length: 0
  • 功能介绍 用户在OBS系统中创建了桶之后,可以采用PUT操作的方式将对象上传到桶中。上传对象操作是指在指定的桶内增加一个对象,执行该操作需要用户拥有桶的写权限。 同一个桶中存储的对象名是唯一的。 在桶未开启多版本的情况下,如果在指定的桶内已经有相同的对象键值的对象,用户上传的新对象会覆盖原来的对象;为了确保数据在传输过程中没有遭到破坏,用户可以在请求消息头中加入Content-MD5参数。在这种情况下,OBS收到上传的对象后,会对对象进行MD5校验,如果不一致则返回出错信息。 用户还可以在上传对象时指定x-obs-acl参数,设置对象的权限控制策略。如果匿名用户在上传对象时未指定x-obs-acl参数,则该对象默认可以被所有OBS用户访问。 该操作支持服务端加密功能。 单次上传对象大小范围是[0, 5GB],如果需要上传超过5GB的大文件,需要通过多段操作来分段上传。 OBS没有文件夹的概念。为了使用户更方便进行管理数据,OBS提供了一种方式模拟文件夹:通过在对象的名称中增加“/”,例如“test/123.jpg”。此时,“test”就被模拟成了一个文件夹,“123.jpg”则模拟成“test”文件夹下的文件名了,而实际上,对象名称(Key)仍然是“test/123.jpg”。此类命名方式的对象,在控制台上会以文件夹的形式展示。当您上传此类方式命名的对象时,如果其大小不为0,控制台上会展示为空文件夹,但是存储总用量为对象大小。 对象名中包含特殊字符时需要进行URL编码,例如:#obj需要编码为%23obj。
  • 响应示例 1 2 3 4 5 6 7 8 9 10 11 HTTP/1.1 200 OK Server: OBS x-obs-request-id: BF26000001643632D12EFCE1C1294555 Access-Control-Allow-Origin: www.example.com Access-Control-Allow-Methods: POST,GET,HEAD,PUT,DELETE Access-Control-Max-Age: 100 Access-Control-Expose-Headers: ExposeHeader_1,ExposeHeader_2 Access-Control-Allow-Credentials: true x-obs-id-2: 32AAAQAAEAABAAAQAAEAABAAAQAAEAABCS+DXV4zZetbTqFehhEcuXywTa/mi3T3 Date: WED, 01 Jul 2015 04:02:19 GMT Content-Length: 0
  • 请求示例 1 2 3 4 5 6 7 8 OPTIONS /object_1 HTTP/1.1 User-Agent: curl/7.29.0 Host: examplebucket.obs.cn-north-4.myhuaweicloud.com Accept: */* Date: WED, 01 Jul 2015 04:02:19 GMT Authorization: OBS H4IPJX0TQTHTHEBQQCEC:bQZG9c2aokAJsHOOkuVBK6cHZZQ= Origin: www.example.com Access-Control-Request-Method: PUT
  • 响应消息样式 1 2 3 4 5 6 7 8 9 HTTP/1.1 status_code Content-Type: type Access-Control-Allow-Origin: origin Access-Control-Allow-Methods: method Access-Control-Allow-Header: header Access-Control-Max-Age: time Access-Control-Expose-Headers: header Date: date Content-Length: length
  • 错误响应消息 此请求可能的特殊错误如下表3描述。 表3 特殊错误 错误码 描述 HTTP状态码 Bad Request Invalid Access-Control-Request-Method: null 桶配置了CORS,OPTIONS桶时,没有加入method头域。 400 BadRequest Bad Request Insufficient information. Origin request header needed. 桶配置了CORS,OPTIONS桶时,没有加入origin头域。 400 BadRequest AccessForbidden CORSResponse: This CORS request is not allowed. This is usually because the evalution of Origin, request method / Access-Control-Request-Method or Access-Control-Requet-Headers are not whitelisted by the resource's CORS spec. 桶配置了CORS,OPTIONS桶时,Origin、method、Headers与任一rule匹配不上。 403 Forbidden 其余错误已经包含在表2中。
  • 请求消息头 该请求使用的消息头如下表1所示。 表1 OPTIONS请求消息头 消息头名称 描述 是否必选 Origin 预请求指定的跨域请求Origin(通常为域名)。 类型:String 是 Access-Control-Request-Method 实际请求可以带的HTTP方法,可以带多个方法头域。 类型:String 有效值:GET、PUT、HEAD、POST 、DELETE 是 Access-Control-Request-Headers 实际请求可以带的HTTP头域,可以带多个头域。 类型:String 否
  • 响应消息头 该请求使用的消息头如下表2所示。 表2 CORS请求消息头 消息头名称 描述 Access-Control-Allow-Origin 如果请求的Origin满足服务端的CORS配置,则在响应中包含这个Origin。 类型:String Access-Control-Allow-Headers 如果请求的headers满足服务端的CORS配置,则在响应中包含这个headers。 类型:String Access-Control-Max-Age 服务端CORS配置中的MaxAgeSeconds。 类型:Integer Access-Control-Allow-Methods 如果请求的Access-Control-Request-Method满足服务端的CORS配置,则在响应中包含这条rule中的Methods。 类型:String 有效值:GET、PUT、HEAD、POST 、DELETE Access-Control-Expose-Headers 服务端CORS配置中的ExposeHeader。 类型:String
  • 响应消息样式 1 2 3 4 5 6 7 8 9 HTTP/1.1 status_code Content-Type: application/xml Access-Control-Allow-Origin: origin Access-Control-Allow-Methods: method Access-Control-Allow-Header: header Access-Control-Max-Age: time Access-Control-Expose-Headers: header Date: date Content-Length: length
  • 错误响应消息 此请求可能的特殊错误如下表3描述。 表3 特殊错误 错误码 描述 HTTP状态码 Bad Request Invalid Access-Control-Request-Method: null 桶配置了CORS,OPTIONS桶时,没有加入method头域。 400 BadRequest Bad Request Insufficient information. Origin request header needed. 桶配置了CORS,OPTIONS桶时,没有加入origin头域。 400 BadRequest AccessForbidden CORSResponse: This CORS request is not allowed. This is usually because the evalution of Origin, request method / Access-Control-Request-Method or Access-Control-Requet-Headers are not whitelisted by the resource's CORS spec. 桶配置了CORS,OPTIONS桶时,Origin、method、Headers与任一rule匹配不上。 403 Forbidden 其余错误已经包含在表2中。
共100000条