SequoiaDB巨杉数据库Rest接口

本文档将介绍 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,计数一次,对象信息不返回
PrefixCommonPrefix 包含的前缀,属于 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>&quot;fba9dede5f27731c9771645a39863328&quot;</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>&quot;1b2cf535f27731c974343645a3985328&quot;</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>&quot;828ef3fdfa96f00ad9f27c383fc9ac7f&quot;</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>&quot;828ef3fdfa96f00ad9f27c383fc9ac7f&quot;</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>&quot;bf1d737a4d46a19f3bced6905cc8b902&quot;</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,计数一次,对象信息不返回
PrefixCommonPrefix 包含的前缀,属于 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>&quot;fba9dede5f27731c9771645a39863328&quot;</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>&quot;828ef3fdfa96f00ad9f27c383fc9ac7f&quot;</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>&quot;828ef3fdfa96f00ad9f27c383fc9ac7f&quot;</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>&quot;bf1d737a4d46a19f3bced6905cc8b902&quot;</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,计数一次,对象信息不返回
PrefixCommonPrefix 包含的前缀,属于 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>&quot;fba9dede5f27731c9771645a39863328&quot;</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>&quot;9b2cf535f27731c974343645a3985328&quot;</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>&quot;3305f2cfc46c0f04559748bb039d69ae&quot;</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,计数一次,对象信息不返回
PrefixCommonPrefix 包含的前缀,属于 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>

点击巨杉数据库官网文档中心了解更多。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值