本文档将介绍 SequoiaS3 支持的 Rest 接口。
GET Service
查询用户创建的所有存储桶
请求语法
GET / HTTP/1.1
Host: ip:port
Date: date
Authorization: authorization string
结果解析
查询结果以 XML 形式在响应消息体中显示。
元素 | 说明 |
---|---|
ListAllMyBucketsResult | 包含 Owner 和 Buckets |
Owner | 存储桶所有者,包含 ID 和 DisplayName,属于 ListAllMyBucketsResult |
ID | 存储桶所有者的 ID,属于 ListAllMyBucketsResult.Owner |
DisplayName | 存储桶所有者的名称,属于 ListAllMyBucketsResult.Owner |
Buckets | 桶列表,包含若干 Bucket,属于 ListAllMyBucketsResult |
Bucket | 存储桶,包含 Name 和 CreationDate,属于 ListAllMyBucketsResult.Buckets |
Name | 存储桶名称,属于 ListAllMyBucketsResult.Buckets.Bucket |
CreationDate | 存储桶创建时间,属于 ListAllMyBucketsResult.Buckets.Bucket |
###示例###
响应结果如下:
<ListAllMyBucketsResult>
<Owner>
<DisplayName>username</DisplayName>
<ID>34455</ID>
</Owner>
<Buckets>
<Bucket>
<Name>mybucket</Name>
<CreationDate>2019-02-03T16:45:09.000Z</CreationDate>
</Bucket>
<Bucket>
<Name>samples</Name>
<CreationDate>2019-02-03T16:41:58.000Z</CreationDate>
</Bucket>
</Buckets>
</ListAllMyBucketsResult>
PUT Bucket
创建存储桶
Note:
存储桶名需在整个系统内唯一,长度在 3~63 之间。
请求语法
PUT /bucketname HTTP/1.1
Host: ip:port
Content-Length: length
Date: date
Authorization: authorization string
<CreateBucketConfiguration>
<LocationConstraint>Region</LocationConstraint>
</CreateBucketConfiguration>
请求元素
用户需要在请求消息体中使用 XML 形式指定存储桶创建的区域,如果不指定则存储桶创建在默认的区域上。
元素 | 说明 |
---|---|
CreateBucketConfiguration | 包含 LocationConstraint |
LocationConstraint | 指定创建存储桶的区域,类型为 String |
示例
响应结果如下:
HTTP/1.1 200 OK
Location: /bucketName
Content-Length: 0
Date: Fri, 16 Aug 2019 11:11:53 GMT
DELETE Bucket
删除存储桶
请求语法
DELETE /bucketname HTTP/1.1
Host: ip:port
Date: date
Authorization: authorization string
示例
响应结果如下:
HTTP/1.1 204 No Content
Date: Fri, 16 Aug 2019 10:11:53 GMT
HEAD Bucket
检查一个存储桶是否存在
请求语法
HEAD /bucketname HTTP/1.1
Date: date
Authorization: authorization string
Host: ip:port
示例
响应结果如下:
HTTP/1.1 200 OK
Date: Fri, 16 Aug 2019 10:10:53 GMT
PUT Bucket versioning
修改存储桶的版本控制状态
请求语法
PUT /bucketname?versioning HTTP/1.1
Host: ip:port
Content-Length: length
Date: date
Authorization: authorization string
<VersioningConfiguration>
<Status>VersioningState</Status>
</VersioningConfiguration>
参数说明
参数名 | 说明 |
---|---|
versioning | 表示该请求为修改存储桶的版本控制状态 |
请求元素
在请求消息体中使用 XML 形式指定存储桶的版本控制状态。
元素 | 说明 |
---|---|
VersioningConfiguration | 包含 Status |
Status | 版本控制状态,有效值为 Suspended |
示例
响应结果如下:
HTTP/1.1 200 OK
Date: Wed, 01 Mar 2006 12:00:00 GMT
GET Bucket versioning
查询桶的版本控制状态
请求语法
GET /bucketname?versioning HTTP/1.1
Host: ip:port
Content-Length: length
Date: date
Authorization: authorization string
结果解析
查询结果以 XML 形式在响应消息头中显示。
元素 | 说明 |
---|---|
VersioningConfiguration | 包含 Status |
Status | 版本控制状态,有效值为 Suspended |
示例
-
打开版本控制开关,查询结果如下:
<VersioningConfiguration> <Status>Enabled</Status> </VersioningConfiguration>
-
禁用版本控制,查询结果如下:
<VersioningConfiguration> <Status>Suspended</Status> </VersioningConfiguration>
-
从未开启或禁用过版本控制,查询结果如下:
<VersioningConfiguration/>
GET Bucket location
查询桶所在的区域
请求语法
GET /bucketname?location HTTP/1.1
Host: ip:port
Date: date
Authorization: authorization string
结果解析
查询结果以 XML 格式在响应消息体中显示。
元素 | 说明 |
---|---|
LocationConstraint | 桶所在的区域 |
示例
-
已经配置了区域的存储桶,查询结果如下:
<LocationConstraint>region</LocationConstraint>
-
未配置区域的存储桶,查询结果如下:
<LocationConstraint/>
GET Bucket (List Objects) Version 1
查询存储桶内对象列表
请求语法
GET /bucketname HTTP/1.1
Host: ip:port
Date: date
Authorization: authorization string
请求参数
参数名 | 说明 |
---|---|
prefix | 前缀,返回具有前缀的对象列表,类型为 String |
delimiter | 分隔符,如果指定 prefix,则 prefix 后第一次出现的分隔符之间包含相同字符串的所有键都被分组在一个 CommonPrefixes;如果未指定 prefix 参数,则子字符串从对象名称的开头开始;该参数类型为 String |
marker | 指定在存储桶中列出对象要开始的键,返回对象键按照 UTF-8 二进制顺序从该标记后的键开始按顺序排列,类型为 String |
max-keys | 设置响应中返回的最大键数,默认值为 1000,如果要查询返回数量少于 1000,可以填写其他值,填写超过 1000 的值,仍然按照 1000 条返回,该参数类型为 String |
encoding-type | 响应结果编码类型,只支持 url,由于对象名称可以包含任意字符,但是XML对某些特别的字符无法解析,所以需要对响应中的对象名称进行编码 |
结果解析
查询结果以 XML 形式在响应消息体中显示。
元素 | 说明 |
---|---|
ListBucketResult | 包含存储桶信息、查询条件和查询的对象信息 |
Name | 存储桶名称 |
Prefix | 查询的 prefix 条件 |
Delimiter | 查询的 delimiter 条件 |
Marker | 查询的 marker 条件 |
MaxKeys | 查询的 maxKeys 条件 |
Encoding-Type | 查询的 encoding-type 条件 |
IsTruncated | 如果该字段为 true,说明由于条数限制,本次没有查询完所有符合条件的结果,可以使用 NextMarker 作为下一次查询的 Marker 条件继续查询剩余内容 |
NextMarker | 当 IsTruncated 为 true 时,该字段返回的是本次查询的最后一条的记录 |
CommonPrefixes | 当查询条件指定了 Delimter 时,Prefix 后面第一次出现 Delimiter 的位置(包括 Delimiter)之前的内容作为 CommonPrefix,当有多个对象具有相同的 CommonPrefix 时,只返回一条 CommonPrefix,计数一次,对象信息不返回 |
Prefix | CommonPrefix 包含的前缀,属于 ListBucketResult.CommonPrefixes |
Contents | 包含对象的元数据 |
Key | 对象的名称,属于 ListBucketResult.Contents |
LastModified | 创建对象的时间,属于 ListBucketResult.Contents |
ETag | 对象的MD5值,属于 ListBucketResult.Contents |
Size | 对象的大小,单位为字节,属于 ListBucketResult.Contents |
Owner | 存储桶的所有者,属于 ListBucketResult.Contents |
ID | 存储桶所有者的ID,属于 ListBucketResult.Contents.Owner |
DisplayName | 桶所有者的名字,属于 ListBucketResult.Contents.Owner |
示例
-
不携带查询条件,查询存储桶内所有记录
GET /bucketname HTTP/1.1 Host: ip:port Date: date Authorization: authorization string
查询结果如下:
<ListBucketResult> <Name>bucketname</Name> <Prefix/> <Marker/> <MaxKeys>1000</MaxKeys> <IsTruncated>false</IsTruncated> <Contents> <Key>my-image.jpg</Key> <LastModified>2019-08-12T17:50:30.000Z</LastModified> <ETag>"fba9dede5f27731c9771645a39863328"</ETag> <Size>434234</Size> <Owner> <ID>125664</ID> <DisplayName>username</DisplayName> </Owner> </Contents> <Contents> <Key>my-third-image.jpg</Key> <LastModified>2019-08-12T17:51:30.000Z</LastModified> <ETag>"1b2cf535f27731c974343645a3985328"</ETag> <Size>64994</Size> <Owner> <ID>125664</ID> <DisplayName>username</DisplayName> </Owner> </Contents> </ListBucketResult>
-
本次请求指定 prefix 为 N,起始位置为 Ned,并只返回 100 条记录
GET /mybucket?prefix=N&marker=Ned&max-keys=100 HTTP/1.1 Host: iP:port Date: date Authorization: authorization string
查询结果如下:
<ListBucketResult> <Name>mybucket</Name> <Prefix>N</Prefix> <Marker>Ned</Marker> <MaxKeys>100</MaxKeys> <IsTruncated>false</IsTruncated> <Contents> <Key>Nelson</Key> <LastModified>2019-08-12T12:00:00.000Z</LastModified> <ETag>"828ef3fdfa96f00ad9f27c383fc9ac7f"</ETag> <Size>5</Size> <Owner> <ID>125664</ID> <DisplayName>username</DisplayName> </Owner> </Contents> <Contents> <Key>Neo</Key> <LastModified>2019-08-12T12:01:00.000Z</LastModified> <ETag>"828ef3fdfa96f00ad9f27c383fc9ac7f"</ETag> <Size>4</Size> <Owner> <ID>125664</ID> <DisplayName>username</DisplayName> </Owner> </Contents> </ListBucketResult>
-
桶内已经有如下对象
sample.jpg photos/2006/January/sample.jpg photos/2006/February/sample2.jpg photos/2006/February/sample3.jpg photos/2006/February/sample4.jpg
本次请求携带分隔符/
GET /mybucket-2?delimiter=/ HTTP/1.1 Host: ip:port Date: date Authorization: authorization string
查询结果如下:
<ListBucketResult> <Name>mybucket-2</Name> <Prefix/> <Marker/> <MaxKeys>1000</MaxKeys> <Delimiter>/</Delimiter> <IsTruncated>false</IsTruncated> <Contents> <Key>sample.jpg</Key> <LastModified>2019-08-12T12:01:00.000Z</LastModified> <ETag>"bf1d737a4d46a19f3bced6905cc8b902"</ETag> <Size>142863</Size> <Owner> <ID>canonical-user-id</ID> <DisplayName>display-name</DisplayName> </Owner> </Contents> <CommonPrefixes> <Prefix>photos/</Prefix> </CommonPrefixes> </ListBucketResult>
GET Bucket (List Objects) Version 2
查询桶内对象列表
请求语法
GET /bucketname?list-type=2 HTTP/1.1
Host: ip:port
Date: date
Authorization: authorization string
请求参数
参数名 | 说明 |
---|---|
list-type | 固定设置为 2,List Objects 的第二个版本 |
prefix | 前缀,返回具有前缀的对象列表,类型为 String |
delimiter | 分隔符,如果指定 prefix,则 prefix 后第一次出现的分隔符之间包含相同字符串的所有键都被分组在一个 CommonPrefixes;如果未指定 prefix 参数,则子字符串从对象名称的开头开始,类型为 String |
start-after | 指定在存储桶中列出对象要开始的键,返回对象键按照 UTF-8 二进制顺序从该标记后的键开始按顺序排列,类型为 String |
max-keys | 设置响应中返回的最大键数,默认值 1000,如果要查询返回数量少于 1000,可以填写其他值,填写超过 1000 的值,仍然按照 1000 条返回,类型为 String |
encoding-type | 响应结果编码类型,只支持 url。由于对象名称可以包含任意字符,但是 XML 对某些特别的字符无法解析,所以需要对响应中的对象名称进行编码 |
continuation-token | 当响应结果被截断,还有部分未返回时,响应结果中会包含 NextContinuationToken,要列出下一组对象,可以使用 NextContinuationToken 下一个请求中的元素作为 continuation-token |
fetch-owner | 默认情况下,结果中不会返回 Owner 信息,如果要在响应中包含 Owner 信息,将该参数置为 true |
结果解析
查询结果以 XML 形式在响应消息体中显示。
元素 | 说明 |
---|---|
ListBucketResult | 包含存储桶信息、查询条件和查询的对象信息 |
Name | 存储桶名称 |
Prefix | 查询的 prefix 条件 |
Delimiter | 查询的 delimiter 条件 |
StartAfter | 查询的 start-after 条件 |
ContinuationToken | 查询的 continuation-token 条件 |
MaxKeys | 查询的 maxKeys 条件 |
Encoding-Type | 查询的 encoding-type 条件 |
KeyCount | 本次查询返回的记录数 |
IsTruncated | 如果该字段为 true,说明由于条数限制,本次没有查询完所有符合条件的结果,可以使用 NextMarker 作为下一次查询的 Marker 条件继续查询剩余内容 |
NextContinuationToken | 当 IsTruncated 为 true 时,NextContinuationToken 记录位置,下一次请求在 continuation-token 携带该令牌继续查询下一组记录 |
CommonPrefixes | 当查询条件指定了 Delimter 时,Prefix 后面第一次出现 Delimiter 的位置(包括 Delimiter)之前的内容作为 CommonPrefix,当有多个对象具有相同的 CommonPrefix 时,只返回一条 CommonPrefix,计数一次,对象信息不返回 |
Prefix | CommonPrefix 包含的前缀,属于 ListBucketResult.CommonPrefixes |
Contents | 包含对象的元数据 |
Key | 对象的名称,属于 ListBucketResult.Contents |
LastModified | 创建对象的时间,属于 ListBucketResult.Contents |
ETag | 对象的 MD5 值,属于 ListBucketResult.Contents |
Size | 对象的大小,单位为字节,属于 ListBucketResult.Contents |
Owner | 存储桶的所有者,属于 ListBucketResult.Contents |
ID | 存储桶所有者的 ID,属于 ListBucketResult.Contents.Owner |
DisplayName | 桶所有者的名字,属于 ListBucketResult.Contents.Owner |
示例
-
不携带查询条件,查询存储桶内所有记录
GET /bucketname?list-type=2 HTTP/1.1 Host: ip:port Date: Sat, 17 Aug 2019 17:51:00 GMT Authorization: authorization string
查询结果如下:
<ListBucketResult> <Name>bucketname</Name> <Prefix/> <Marker/> <KeyCount>205</KeyCount> <MaxKeys>1000</MaxKeys> <IsTruncated>false</IsTruncated> <Contents> <Key>my-image.jpg</Key> <LastModified>2019-08-12T17:50:30.000Z</LastModified> <ETag>"fba9dede5f27731c9771645a39863328"</ETag> <Size>434234</Size> <Owner> <ID>125664</ID> <DisplayName>username</DisplayName> </Owner> </Contents> <Contents> ... </Contents> ... </ListBucketResult>
-
指定 prefix 为 N,起始位置为 Ned,并只返回 100 条记录
GET /mybucket?list-type=2&prefix=N&start-after=Ned&max-keys=100 HTTP/1.1 Host: iP:port Date: Sat, 17 Aug 2019 17:45:00 GMT Authorization: authorization string
查询结果如下,实际查询到两条符合条件的记录:
<ListBucketResult> <Name>mybucket</Name> <Prefix>N</Prefix> <Marker>Ned</Marker> <KeyCount>2</KeyCount> <MaxKeys>100</MaxKeys> <IsTruncated>false</IsTruncated> <Contents> <Key>Nelson</Key> <LastModified>2019-08-12T12:00:00.000Z</LastModified> <ETag>"828ef3fdfa96f00ad9f27c383fc9ac7f"</ETag> <Size>5</Size> <Owner> <ID>125664</ID> <DisplayName>username</DisplayName> </Owner> </Contents> <Contents> <Key>Neo</Key> <LastModified>2019-08-12T12:01:00.000Z</LastModified> <ETag>"828ef3fdfa96f00ad9f27c383fc9ac7f"</ETag> <Size>4</Size> <Owner> <ID>125664</ID> <DisplayName>username</DisplayName> </Owner> </Contents> </ListBucketResult>
-
桶内已经有如下对象
sample.jpg photos/2006/January/sample.jpg photos/2006/February/sample2.jpg photos/2006/February/sample3.jpg photos/2006/February/sample4.jpg
本次请求携带分隔符/
GET /mybucket-2?list-type=2&delimiter=/ HTTP/1.1 Host: ip:port Date: date Authorization: authorization string
查询结果如下:
<ListBucketResult> <Name>mybucket-2</Name> <Prefix/> <Marker/> <KeyCount>2</KeyCount> <MaxKeys>1000</MaxKeys> <Delimiter>/</Delimiter> <IsTruncated>false</IsTruncated> <Contents> <Key>sample.jpg</Key> <LastModified>2019-08-12T12:01:00.000Z</LastModified> <ETag>"bf1d737a4d46a19f3bced6905cc8b902"</ETag> <Size>142863</Size> <Owner> <ID>canonical-user-id</ID> <DisplayName>display-name</DisplayName> </Owner> </Contents> <CommonPrefixes> <Prefix>photos/</Prefix> </CommonPrefixes> </ListBucketResult>
GET Bucket Object versions
查询桶内对象的所有版本
请求语法
GET /bucketname?versions HTTP/1.1
Host: ip:port
Date: date
Authorization: authorization string
请求参数
参数名 | 说明 |
---|---|
prefix | 前缀,返回具有前缀的对象列表,类型为 String |
delimiter | 分隔符,如果指定 prefix,则 prefix 后第一次出现的分隔符之间包含相同字符串的所有键都被分组在一个 CommonPrefixes;如果未指定 prefix 参数,则子字符串从对象名称的开头开始,类型为 String |
key-marker | 指定在存储桶中列出对象要开始的键,返回对象键按照 UTF-8 二进制顺序从该标记后的键开始按顺序排列,类型为 String |
version-id-marker | 指定起始位置的 version,仅在指定了 key-marker 的情况下有效 |
max-keys | 设置响应中返回的最大键数,默认值 1000,如果要查询返回数量少于 1000,可以填写其他值,填写超过 1000 的值,仍然按照 1000 条返回,类型为 String |
encoding-type | 响应结果编码类型,只支持 url,由于对象名称可以包含任意字符,但是 XML 对某些特别的字符无法解析,所以需要对响应中的对象名称进行编码 |
结果解析
查询结果以 XML 形式在响应消息体中显示。
元素 | 说明 |
---|---|
ListVersionsResult | 包含存储桶信息、查询条件和查询的对象版本信息 |
Name | 存储桶名称 |
Prefix | 查询的 prefix 条件 |
Delimiter | 查询的 delimiter 条件 |
KeyMarker | 查询的 key-marker 条件 |
VersionIDMarker | 查询的 version-id-marker 条件 |
MaxKeys | 查询的 maxKeys 条件 |
Encoding-Type | 查询的 encoding-type 条件 |
IsTruncated | 如果该字段为 true,说明由于条数限制,本次没有查询完所有符合条件的结果,可以使用 NextMarker 作为下一次查询的 Marker 条件继续查询剩余内容 |
NextKeyMarker | 当 IsTruncated 为 true 时,NextKeyMarker 记录本次返回的最后一个对象或者 CommonPrefix |
NextVersionIdMarker | 当 IsTruncated 为 true 时,NextVersionIdMarker 记录本次返回的最后一条记录的 version |
CommonPrefixes | 当查询条件指定了 Delimter 时,Prefix 后面第一次出现 Delimiter 的位置(包括 Delimiter)之前的内容作为 CommonPrefix,当有多个对象具有相同的 CommonPrefix 时,只返回一条 CommonPrefix,计数一次,对象信息不返回 |
Prefix | CommonPrefix 包含的前缀,属于 ListVersionsResult.CommonPrefixes |
Version | 包含对象版本的元数据 |
DeleteMarker | 包含删除标记 |
Key | 对象的名称,属于 ListVersionsResult.Version |
VersionId | 对象的版本号,属于 ListVersionsResult.Version |
IsLatest | 是否是最新版本,属于 ListVersionsResult.Version |
LastModified | 创建对象的时间,属于 ListVersionsResult.Version |
ETag | 对象的 MD5 值,属于 ListVersionsResult.Version |
Size | 对象的大小,单位为字节,属于 ListVersionsResult.Version |
Owner | 存储桶的所有者,属于 ListVersionsResult.Version |
ID | 存储桶所有者的 ID,属于 ListVersionsResult.Version.Owner |
DisplayName | 桶所有者的名字,属于 ListVersionsResult.Version.Owner |
示例
-
查询存储桶内所有版本
GET /bucketname?versions HTTP/1.1 Host: ip:port Date: date Authorization: authorization string
查询结果如下:
<ListVersionsResult> <Name>bucket</Name> <Prefix>my</Prefix> <KeyMarker/> <VersionIdMarker/> <MaxKeys>1000</MaxKeys> <IsTruncated>false</IsTruncated> <Version> <Key>my-image.jpg</Key> <VersionId>234</VersionId> <IsLatest>true</IsLatest> <LastModified>2019-08-16T17:50:32.000Z</LastModified> <ETag>"fba9dede5f27731c9771645a39863328"</ETag> <Size>434234</Size> <Owner> <ID>125664</ID> <DisplayName>username</DisplayName> </Owner> </Version> <DeleteMarker> <Key>my-second-image.jpg</Key> <VersionId>55566666</VersionId> <IsLatest>true</IsLatest> <LastModified>2019-08-16T17:50:31.000Z</LastModified> <Owner> <ID>125664</ID> <DisplayName>username</DisplayName> </Owner> </DeleteMarker> <Version> <Key>my-second-image.jpg</Key> <VersionId>45667</VersionId> <IsLatest>false</IsLatest> <LastModified>2019-08-16T17:50:30.000Z</LastModified> <ETag>"9b2cf535f27731c974343645a3985328"</ETag> <Size>166434</Size> <Owner> <ID>125664</ID> <DisplayName>username</DisplayName> </Owner> </Version> </ListVersionsResult>
-
携带分隔符/进行查询
GET /mybucket-2?versions&delimiter=/ HTTP/1.1 Host: ip:port Date: date Authorization: authorization string
响应结果如下:
<ListVersionsResult> <Name>mvbucketwithversionon1</Name> <Prefix/> <KeyMarker/> <VersionIdMarker/> <MaxKeys>1000</MaxKeys> <Delimiter>/</Delimiter> <IsTruncated>false</IsTruncated> <Version> <Key>Sample.jpg</Key> <VersionId>toxMzQlBsGyGCz1YuMWMp90cdXLzqOCH</VersionId> <IsLatest>true</IsLatest> <LastModified>2019-02-02T18:46:20.000Z</LastModified> <ETag>"3305f2cfc46c0f04559748bb039d69ae"</ETag> <Size>3191</Size> <Owner> <ID>125664</ID> <DisplayName>username</DisplayName> </Owner> </Version> <CommonPrefixes> <Prefix>photos/</Prefix> </CommonPrefixes> <CommonPrefixes> <Prefix>videos/</Prefix> </CommonPrefixes> </ListVersionsResult>
List Multipart Uploads
查询桶内所有已初始化未完成的分段上传请求
请求语法
GET /bucketname?uploads HTTP/1.1
Host: ip:port
Date: Date
Authorization: authorization string
请求参数
参数 | 说明 |
---|---|
prefix | 前缀,返回具有前缀的对象列表,类型为 String |
delimiter | 分隔符,如果指定 prefix,则 prefix 后第一次出现的分隔符之间包含相同字符串的所有键都被分组在一个 CommonPrefixes;如果未指定 prefix 参数,则子字符串从对象名称的开头开始,类型为 String |
key-marker | 指定在存储桶中列出对象要开始的键,返回对象键按照 UTF-8 二进制顺序从该标记后的键开始按顺序排列,类型为 String |
upload-id-marker | 指定起始位置的 uploadId,仅在指定了 key-marker 的情况下有效 |
max-uploads | 设置响应中返回的最大键数,默认值 1000,如果要查询返回数量少于 1000,可以填写其他值,填写超过 1000 的值,仍然按照 1000 条返回,类型为 String |
encoding-type | 对响应内容进行的编码方法,只支持 url,由于对象名称可以包含任意字符,但是 XML 对某些特别的字符无法解析,所以需要对响应中的对象名称进行编码 |
结果解析
查询结果在响应消息体中以 XML 形式体现。
元素 | 说明 |
---|---|
ListMultipartUploadsResult | 包含桶信息、查询条件和未完成的分段上传信息 |
Bucket | 存储桶名称 |
Prefix | 查询的 prefix 条件 |
Delimiter | 查询的 delimiter 条件 |
KeyMarker | 查询的 key-marker 条件 |
UploadIdMarker | 查询的 upload-id-marker 条件 |
MaxUploads | 查询的 maxUploads 条件 |
Encoding-Type | 查询的 encoding-type 条件 |
IsTruncated | 如果该字段为 true,说明由于条数限制,本次没有查询完所有符合条件的结果,可以使用 NextMarker 作为下一次查询的 Marker 条件继续查询剩余内容 |
NextKeyMarker | 当 IsTruncated 为 true 时,NextKeyMarker 记录本次返回的最后一个对象或者 CommonPrefix |
NextUploadIdMarker | 当 IsTruncated 为 true 时,NextUploadIdMarker 记录本次返回的最后一条记录的 uploadId |
CommonPrefixes | 当查询条件指定了 Delimter 时,Prefix 后面第一次出现 Delimiter 的位置(包括 Delimiter)之前的内容作为 CommonPrefix,当有多个对象具有相同的 CommonPrefix 时,只返回一条 CommonPrefix,计数一次,对象信息不返回 |
Prefix | CommonPrefix 包含的前缀,属于 ListMultipartUploadsResult.CommonPrefixes |
Upload | 包含分段上传信息 |
Key | 对象的名称,属于 ListMultipartUploadsResult.Upload |
UploadId | 分段上传的 uploadId,属于 ListMultipartUploadsResult.Upload |
Initiated | 分段上传的的初始化时间,属于 ListMultipartUploadsResult.Upload |
Owner | 存储桶的所有者,属于 ListMultipartUploadsResult.Upload |
ID | 存储桶所有者的 ID,属于 ListMultipartUploadsResult.Upload.Owner |
DisplayName | 桶所有者的名字,属于 ListMultipartUploadsResult.Upload.Owner |
示例
查询 uploads,携带分隔符/
GET /example-bucket?uploads&delimiter=/ HTTP/1.1
Host: ip:port
Date: Sat, 17 Aug 2019 20:34:56 GMT
Authorization: authorization string
查询结果如下:
<ListMultipartUploadsResult>
<Bucket>example-bucket</Bucket>
<KeyMarker/>
<UploadIdMarker/>
<NextKeyMarker>sample.jpg</NextKeyMarker>
<NextUploadIdMarker>4444</NextUploadIdMarker>
<Delimiter>/</Delimiter>
<Prefix/>
<MaxUploads>1000</MaxUploads>
<IsTruncated>false</IsTruncated>
<Upload>
<Key>sample.jpg</Key>
<UploadId>4444</UploadId>
<Initiator>
<ID>2234</ID>
<DisplayName>s3-nickname</DisplayName>
</Initiator>
<Owner>
<ID>2234</ID>
<DisplayName>s3-nickname</DisplayName>
</Owner>
<Initiated>2019-08-16T19:24:17.000Z</Initiated>
</Upload>
<CommonPrefixes>
<Prefix>photos/</Prefix>
</CommonPrefixes>
<CommonPrefixes>
<Prefix>videos/</Prefix>
</CommonPrefixes>
</ListMultipartUploadsResult>
Create Region
增加一个区域或更新区域配置
Note:
用户创建区域时可对区域内数据存储位置进行配置,即指定集合空间的生成方式,生成方式分为指定模式和自动创建模式。不能够同时指定两种模式,更新区域配置是也不能修改模式,更新区域配置只能够修改自动创建模式下的集合空间生成规则。
请求语法
POST /region/?Action=CreateRegion&RegionName={regionname} HTTP/1.1
Host: ip:port
Content-Length: length
Date: date
Authorization: authorization string
<RegionConfiguration>
<DataCSShardingType>year</DataCSShardingType>
<DataCLShardingType>month</DataCLShardingType>
<DataDomain>domain1</DataDomain>
<MetaDomain>domain2</MetaDomain>
</RegionConfiguration>
参数说明
参数名 | 说明 |
---|---|
Action | 固定为 CreateRegion,表示该操作为创建一个区域 |
RegionName | 指定区域名称 |
请求元素
用户可以在请求消息体中使用 XML 形式指定区域的配置。
元素 | 说明 |
---|---|
RegionConfiguration | 包含区域配置内容 |
DataCSShardingType | 对象数据集合空间的生成规则,按照设定的时间生成指定的集合空间,类型为 String,默认值为 year,有效值为 year |
DataCLShardingType | 对象数据集合的生成规则,按照设定的时间生成指定的集合,类型为 String,默认值为 quarter,有效值为 year/quarter/month |
DataCSRange | 对象数据集合的生成规则,在设定时间段内能够生成的集合空间数量,类型为 Int |
DataDomain | 对象数据集合空间所属域,域必须已在 SequoiaDB 中定义,如果不填写域名称,则对象数据集合空间建立在系统域上,类型为 String |
DataLobPageSize | 对象数据集合空间的 LobPageSize,默认值为 262144,有效值为 0,4096,8192,16384,32768,65536,131072,262144,524288 之一,0 表示选择默认值 |
DataReplSize | 对象集合的ReplSize,写操作同步的副本数,默认值为 -1,有效值为 -1, 0, 1-7 |
MetaDomain | 元数据集合空间所属域,域必须已在 SequoiaDB 中定义,若不填写则元数据集合空间建在系统域上,类型为 String |
DataLocation | 指定模式为对象数据的集合空间.集合名称,如 CS.CL,类型为 String |
MetaLocation | 指定模式为元数据的集合空间.集合名称,如 CS.CL,类型为 String |
MetaHisLocation | 指定模式为历史元数据的集合空间.集合名称,如 CS.CL,类型 String |
示例
创建区域的请求,指定对象数据集合空间和元数据集合空间的域,指定对象数据集合空间和对象数据集合的生成规则
POST /region/?Action=CreateRegion&RegionName=region1 HTTP/1.1
Host: ip:port
Content-Length: length
Date: date
Authorization: authorization string
<RegionConfiguration>
<DataCSShardingType>year</DataCSShardingType>
<DataCLShardingType>month</DataCLShardingType>
<DataDomain>domain1</DataDomain>
<MetaDomain>domain2</MetaDomain>
</RegionConfiguration>
响应结果如下:
HTTP/1.1 200 OK
Date: date
Content-Length: 0
GetRegion
获取一个区域的配置
请求语法
POST /region/?Action=GetRegion&RegionName={regionname} HTTP/1.1
Host: ip:port
Date: date
Authorization: authorization string
参数说明
参数名 | 说明 |
---|---|
Action | 固定为 GetRegion,表示该操作为删除一个区域 |
RegionName | 指定区域名称 |
示例
查询一个区域的配置信息
POST /region/?Action=GetRegion&RegionName=region1 HTTP/1.1
Host: ip:port
Date: Wed, 12 Oct 2009 17:50:00 GMT
Authorization: authorization string
响应结果如下:
<RegionConfiguration>
<Name>region1</Name>
<DataCSShardingType>year</DataCSShardingType>
<DataCLShardingType>month</DataCLShardingType>
<DataCSRange>1</DataCSRange>
<DataDomain>domain1</DataDomain>
<MetaDomain>domain2</MetaDomain>
<DataLobPageSize>262144</DataLobPageSize>
<DataReplSize>-1</DataReplSize>
<DataLocation/>
<MetaLocation/>
<MetaHisLocation/>
<Buckets>
<Bucket>bucketname1</Bucket>
<Bucket>bucketname2</Bucket>
</Buckets>
</RegionConfiguration>
DeleteRegion
删除一个区域
请求语法
POST /region/?Action=DeleteRegion&RegionName={regionname} HTTP/1.1
Host: ip:port
Date: date
Authorization: authorization string
参数说明
参数名 | 说明 |
---|---|
Action | 固定为 DeleteRegion,表示该操作为删除一个区域 |
RegionName | 指定区域名称 |
示例
删除一个区域的请求
POST /region/?Action=DeleteRegion&RegionName=region1 HTTP/1.1
Host: ip:port
Date: date
Authorization: authorization string
响应结果如下:
HTTP/1.1 204 No Content
Date: date
ListRegions
查询区域列表,可以查询当前系统中所有区域名称
请求语法
POST /region/?Action=ListRegions HTTP/1.1
Host: ip:port
Date: date
Authorization: authorization string
参数说明
参数名 | 说明 |
---|---|
Action | 固定为 ListRegions,表示该操作为查询区域列表 |
结果解析
查询结果以 XML 形式在响应消息头中显示。
元素 | 说明 |
---|---|
ListAllRegionsResult | 包含一个到多个 Region |
Region | 区域名称 |
示例
查询区域列表的响应结果如下:
<ListAllRegionsResult>
<Region>region1</Region>
<Region>region1</Region>
<Region>region1</Region>
</ListAllRegionsResult>
HeadRegion
查询区域是否存在
请求语法
POST /region/?Action=HeadRegion&RegionName={regionname} HTTP/1.1
Host: ip:port
Date: date
Authorization: authorization string
示例
响应结果如下:
HTTP/1.1 200 OK
Date: date
Create User
创建用户
Note:
该操作需管理员用户权限,系统默认生成一个管理员用户,可用该用户创建其他用户。
请求语法
POST /users/?Action=CreateUser&UserName=username&role=admin HTTP/1.1
Host: ip:port
Date: date
Authorization: authorization string
参数说明
参数名 | 说明 |
---|---|
Action | 固定为 CreateUser,表示该操作为创建一个用户 |
UserName | 指定用户名称 |
Role | 指定用户的角色,可选管理员 admin 用户或普通 normal 用户,管理员用户可以管理用户也可以使用 S3 业务,普通用户可以使用 S3 业务但不能管理用户 |
结果解析
创建用户成功后,会收到 AccessKeys,AccessKeys 用于访问 SequoiaS3 系统的用户验证。
元素 | 说明 |
---|---|
AccessKeys | 包含用户 Key 值 |
AccessKeyID | 用户的 Access Key ID,代表用户身份 |
SecretAccessKey | 新用户的 Secret Access Key 类似密码,用于计算签名,和 Access Key ID 一起在请求消息中携带,用来验证用户身份 |
示例
创建用户后,响应结果如下:
HTTP/1.1 200 OK
Date: Wed, 01 Mar 2006 12:00:00 GMT
<AccessKeys>
<AccessKeyID>AKIAIC6UQBTBIW7THT5A</AccessKeyID>
<SecretAccessKey>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</SecretAccessKey>
</AccessKeys>
Create AccessKey
更新用户的访问密钥
Note:
该操作需要管理员用户权限。生成新的密钥之后,旧密钥失效。
请求语法
POST /users/?Action=CreateAccessKey&UserName=username HTTP/1.1
Host: ip:port
Date: date
Authorization: authorization string
参数说明
参数名 | 说明 |
---|---|
Action | 固定为 CreateAccessKey,表示该操作为更新 AccessKeys |
UserName | 指定用户名称 |
示例
更新密钥后,响应结果如下:
HTTP/1.1 200 OK
Date: Wed, 01 Mar 2006 12:00:00 GMT
<AccessKeys>
<AccessKeyID>AKIAIC6UQBCDGW7TH35T</AccessKeyID>
<SecretAccessKey>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</SecretAccessKey>
</AccessKeys>
Delete User
删除一个用户
Note:
- 该操作需要管理员用户权限。
- 当该用户还有桶未清理时,不允许删除用户。
- 当请求携带了 Force 标识时,可以强制删除未清理桶的用户,并将该用户拥有的桶以及桶内对象全部清理。
请求语法
POST /users/?Action=DeleteUser&UserName=username HTTP/1.1
Host: ip:port
Date: date
Authorization: authorization string
参数说明
参数名 | 说明 |
---|---|
Action | 固定为 DeleteUser,表示该操作为删除用户 |
UserName | 指定用户名称 |
Force | 强制删除标记,当请求携带 Force 参数且值为 true 时删除用户,并清理该用户拥有的桶及桶内对象 |
示例
-
删除用户
POST /users/?Action=DeleteUser&UserName=user1 HTTP/1.1 Host: ip:port Date: date Authorization: authorization string
响应结果如下:
HTTP/1.1 200 OK Date: date
-
强制删除用户
POST/users/?Action=DeleteUser&UserName=username&Force=true HTTP/1.1 Host: ip:port Date: date Authorization: authorization string
响应结果如下:
HTTP/1.1 200 OK Date: date
Get AccessKey
获取用户的访问密钥
Note:
该操作需要管理员用户权限。
请求语法
POST /users/?Action=GetAccessKey&UserName=username HTTP/1.1
Host: ip:port
Date: date
Authorization: authorization string
参数说明
参数名 | 说明 |
---|---|
Action | 固定为 GetAccessKey,表示该操作为获取用户的访问密钥 |
UserName | 指定用户名称 |
示例
获取 user1 的访问密钥请求
POST /users/?Action=GetAccessKey&UserName=user1 HTTP/1.1
Host: ip:port
Date: date
Authorization: authorization string
响应结果如下:
HTTP/1.1 200 OK
Date: date
<AccessKeys>
<AccessKeyID>AKIAIC6UQBTBIW7THT5A</AccessKeyID>
<SecretAccessKey>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</SecretAccessKey>
</AccessKeys>
点击巨杉数据库官网文档中心了解更多。