Skip to content

桶的操作

桶(Bucket)是对象的容器,所有的对象都必须位于桶里面,在整个系统里面桶名称唯一,在桶内部,对象key唯一。每个用户最多允许创建100个桶。

删除桶

功能介绍

删除桶操作用于删除用户指定的桶。

请求语法

http
DELETE /<bucket-name> HTTP/1.1
Host: fgws3-ocloud.ihep.ac.cn
Date: <date>
X-Amz-Content-sha256:<x-amz-content-sha256>
Authorization: <authorization-header>

请求消息示例

http
DELETE https://fgws3-ocloud.ihep.ac.cn/20001-cbq2 HTTP/1.1
Host: fgws3-ocloud.ihep.ac.cn
Authorization: AWS4-HMAC-SHA256 Credential=PIM9Z4LAahZtba1BeLW2/20231128/us-east-1/s3/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=6c9055b5d38fed51498b75eb838038919babd4f0989bb30d2c0132d4a443eb1a
User-Agent: aws-sdk-go/1.48.3 (go1.19.2; windows; amd64)
X-Amz-Date: 20231128T074744Z
X-Amz-Content-Sha256: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855

响应消息示例

http
HTTP/1.1 200 OK
Server: JWanFS FGW Server
Content-Length: 56
Content-Type: application/json
Date: Tue, 28 Nov 2023 07:47:45 GMT

列举桶内对象

功能介绍

对桶拥有读权限的用户可以执行获取桶内对象列表的操作。

如果用户在请求中只指定了桶名,则返回信息中会包含桶内部分或所有对象的描述信息(一次最多返回1000个对象信息);如果用户还指定了prefix、marker、max-keys、delimiter参数中的一个或多个,则返回的对象列表将按照如表1所示规定的语义返回指定的对象。

用户也可以请求参数中添加versions参数来执行列举桶内多版本对象的操作。

请求语法

http
GET /<bucket-name> HTTP/1.1
Host: fgws3-ocloud.ihep.ac.cn
Date: <date>
Authorization: <authorization-header>
X-Amz-Content-sha256:<x-amz-content-sha256>

请求参数

名称类型是否必选示例值描述
delimiter字符串/对Object名字进行分组的字符。所有Object名字包含指定的前缀,第一次出现delimiter字符之间的Object作为一组元素(即CommonPrefixes)。默认值:无
marker字符串test1.txt设定从marker之后按字母排序开始返回Object。marker用来实现分页显示效果,参数的长度必须小于1024字节。做条件查询时,即使marker在列表中不存在,也会从符合marker字母排序的下一个开始打印。默认值:无
max-keys字符串200指定返回Object的最大数。如果因为max-keys的设定无法一次完成列举,返回结果会附加NextMarker元素作为下一次列举的marker。取值:大于0小于等于1000 默认值:100
prefix字符串fun限定返回文件的Key必须以prefix作为前缀。prefix参数的长度必须小于1024字节。使用prefix查询时,返回的Key中仍会包含prefix。如果把prefix设为某个文件夹名,则列举以此prefix开头的文件,即该文件夹下递归的所有文件和子文件夹。在设置prefix的基础上,将delimiter设置为正斜线(/)时,返回值中只列举该文件夹下的文件,文件夹下的子文件夹名返回在CommonPrefixes中,子文件夹下递归的所有文件和文件夹不显示。例如,一个Bucket中有三个Object,分别为fun/test.jpg、 fun/movie/001.avi和fun/movie/007.avi。如果设定prefix为fun/,则返回三个Object;如果在prefix设置为fun/的基础上,将delimiter设置为正斜线(/),则返回fun/test.jpg和fun/movie/。默认值:无

响应元素

字段名类型示例值描述
Name字符串oss-exampleBucket名称
Prefix字符串fun/本次查询结果的前缀
Marker字符串test1.txt标识此次GetBucket(ListObjects)的起点
MaxKeys字符串100响应请求内返回结果的最大数目
Delimiter字符串/对Object名字进行分组的字符。所有名字包含指定的前缀且第一次出现Delimiter字符之间的Object作为一组元素CommonPrefixes
EncodingType字符串url指明了返回结果中编码使用的类型。如果请求的参数中指定了encoding-type,则会对返回结果中的Delimiter、Marker、Prefix等进行编码
IsTruncated枚举字符串false请求中返回的结果是否被截断。返回值:true、false。true表示本次没有返回全部结果,false表示本次已经返回了全部结果
NextMarker字符串test100.txt下一次列举文件的起点
Contents容器保存每个返回Object元信息的容器
Key字符串fun/test.jpgObject的Key
LastModified时间2012-02-24T08:42:32.000ZObject最后被修改的时间
ETag字符串5B3C1A2E053D763E1B002CC607C5A0FE1****ETag(Entity Tag)用于标识一个Object的内容
Type字符串NormalObject类型,分为Normal、Multipart、Appendable
Size字符串344606返回Object大小,单位为字节
StorageClass字符串StandardObject的存储类型
RestoreInfo字符串ongoing-request="true"Object的解冻状态。如果没有提交RestoreObject请求或者RestoreObject请求已过期,则不返回该字段。
Owner容器保存Bucket拥有者信息的容器
ID字符串0022012****Bucket拥有者的用户ID

请求消息示例

http
GET https://fgws3-ocloud.ihep.ac.cn/20001-cbq HTTP/1.1
Host: fgws3-ocloud.ihep.ac.cn
X-Amz-Content-Sha256: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
Authorization: AWS4-HMAC-SHA256 Credential=PIM9Z4LAahZtba1BeLW2/20231128/us-east-1/s3/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=0085f8cc5170d0e09aed8c375c08f9ccb3f9380d617d00a80d9d7c493a1d6703
User-Agent: aws-sdk-go/1.48.3 (go1.19.2; windows; amd64)
X-Amz-Date: 20231128T074915Z

响应消息示例

http
HTTP/1.1 200 OK
Content-Type: application/xml
Server: JWanFS FGW Server
X-Amz-Request-Id: 1701157756349303872
Date: Tue, 28 Nov 2023 07:49:16 GMT
Accept-Ranges: bytes
Content-Length: 1582

<?xml version="1.0" encoding="UTF-8"?>
<ListBucketResult
    xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
    <Name>20001-cbq</Name>
    <Prefix></Prefix>
    <Marker></Marker>
    <MaxKeys>10000</MaxKeys>
    <IsTruncated>false</IsTruncated>
    <Contents>
        <Key>COMPILING_CN.txt</Key>
        <ETag>&#34;f8c3bef258b5fe5aca42d0c023b25756&#34;</ETag>
        <Size>6104</Size>
        <Owner>
            <ID>0</ID>
        </Owner>
        <StorageClass>STANDARD</StorageClass>
        <LastModified>2023-10-30T07:35:56Z</LastModified>
    </Contents>
    <Contents>
        <Key>S3test.txt</Key>
        <ETag>&#34;c1b712b5927a315820b2fad439eb5f72&#34;</ETag>
        <Size>11</Size>
        <Owner>
            <ID>0</ID>
        </Owner>
        <StorageClass>STANDARD</StorageClass>
        <LastModified>2023-11-28T06:23:09Z</LastModified>
    </Contents>
    <Contents>
        <Key>s/</Key>
        <ETag>&#34;d41d8cd98f00b204e9800998ecf8427e-0&#34;</ETag>
        <Size>0</Size>
        <Owner>
            <ID>0</ID>
        </Owner>
        <StorageClass>STANDARD</StorageClass>
        <LastModified>2023-11-25T00:25:18Z</LastModified>
    </Contents>
    <Contents>
        <Key>s/S3test.txt</Key>
        <ETag>&#34;c1b712b5927a315820b2fad439eb5f72&#34;</ETag>
        <Size>11</Size>
        <Owner>
            <ID>0</ID>
        </Owner>
        <StorageClass>STANDARD</StorageClass>
        <LastModified>2023-11-27T02:21:10Z</LastModified>
    </Contents>
    <Contents>
        <Key>s3test.txt</Key>
        <ETag>&#34;d41d8cd98f00b204e9800998ecf8427e-0&#34;</ETag>
        <Size>0</Size>
        <Owner>
            <ID>0</ID>
        </Owner>
        <StorageClass>STANDARD</StorageClass>
        <LastModified>2023-11-27T09:58:56Z</LastModified>
    </Contents>
    <Contents>
        <Key>s3test222.txt</Key>
        <ETag>&#34;d41d8cd98f00b204e9800998ecf8427e-0&#34;</ETag>
        <Size>0</Size>
        <Owner>
            <ID>0</ID>
        </Owner>
        <StorageClass>STANDARD</StorageClass>
        <LastModified>2023-11-27T09:59:23Z</LastModified>
    </Contents>
</ListBucketResult>

获取桶的ACL

请求语法

http
GET /<bucket-name>?acl HTTP/1.1
Host: fgws3-ocloud.ihep.ac.cn
Date: <date>
X-Amz-Content-sha256:<x-amz-content-sha256>
Authorization: <authorization-header>

响应元素

名称类型描述父节点
AccessControlList容器存储ACL信息的容器类AccessControlPolicy
AccessControlPolicy容器保存GetBucketACL结果的容器None
DisplayName字符串Bucket拥有者的名称(目前和用户ID一致)AccessControlPolicy.Owner
Grant枚举字符串Bucket的ACL权限AccessControlPolicy.AccessControlList
ID字符串Bucket拥有者的用户IDAccessControlPolicy.Owner
Owner容器保存Bucket拥有者信息的容器AccessControlPolicy

请求消息示例

http
GET https://fgws3-ocloud.ihep.ac.cn/20001-cbq?acl= HTTP/1.1
Host: fgws3-ocloud.ihep.ac.cn
X-Amz-Content-Sha256: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
Authorization: AWS4-HMAC-SHA256 Credential=PIM9Z4LAahZtba1BeLW2/20231128/us-east-1/s3/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=e34802b8f6137ccf6d0cb204f325d50e042cf523df35154edb19f300fd668bf2
User-Agent: aws-sdk-go/1.48.3 (go1.19.2; windows; amd64)
X-Amz-Date: 20231128T075231Z

响应消息示例

http
HTTP/1.1 200 OK
Date: Tue, 28 Nov 2023 07:52:32 GMT
Accept-Ranges: bytes
Content-Length: 434
Content-Type: application/xml
Server: JWanFS FGW Server
X-Amz-Request-Id: 1701157952198625919

<?xml version="1.0" encoding="UTF-8"?>
<AccessControlPolicy>
    <Owner>
        <ID>PIM9Z4LAahZtba1BeLW2</ID>
        <DisplayName>20001</DisplayName>
    </Owner>
    <AccessControlList>
        <Grant>
            <Grantee
                xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="CanonicalUser">
                <Type>CanonicalUser</Type>
                <ID>PIM9Z4LAahZtba1BeLW2</ID>
                <DisplayName>20001</DisplayName>
            </Grantee>
            <Permission>FULL_CONTROL</Permission>
        </Grant>
    </AccessControlList>
</AccessControlPolicy>

获取桶元数据

功能介绍

这个接口主要用于判断桶是否存在,以及是否有权限访问。

请求语法

http
HEAD /<bucket-name> HTTP/1.1
Host: fgws3-ocloud.ihep.ac.cn
Date: <date>
X-Amz-Content-sha256:<x-amz-content-sha256>
Authorization: <authorization-header>

请求消息示例

http
HEAD https://fgws3-ocloud.ihep.ac.cn/20001-cbq HTTP/1.1
Host: fgws3-ocloud.ihep.ac.cn
Authorization: AWS4-HMAC-SHA256 Credential=PIM9Z4LAahZtba1BeLW2/20231128/us-east-1/s3/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=4a246a4f1467ffea4c13d3af98355653912235736a7db0232fe094e97804ea7e
User-Agent: aws-sdk-go/1.48.3 (go1.19.2; windows; amd64)
X-Amz-Date: 20231128T075336Z
X-Amz-Content-Sha256: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855

响应消息示例

http
HTTP/1.1 200 OK
Accept-Ranges: bytes
Content-Length: 0
Server: JWanFS FGW Server
X-Amz-Request-Id: 1701158017224971796
Date: Tue, 28 Nov 2023 07:53:37 GMT

细节描述

  1. 不论正常返回200 OK还是非正常返回,Head Bucket都不返回消息体。所有桶相关信息都 包含在HTTP返回头中。
  2. 如果Bucket不存在,返回404 no content错误。错误码:NoSuchBucket。
  3. 只有Bucket的拥有者才能执行 HEAD Bucket操作。如果试图对一个没有对应权限的Bucket 进行该操作,返回403 Forbidden错误。错误码:AccessDenied。

获取桶列表

功能介绍

列出用户创建的所有桶。

请求语法

http
GET / HTTP/1.1
Host: s3.amazonaws.com
Date: <date>
X-Amz-Content-sha256:<x-amz-content-sha256>
Authorization: <authorization-header>

响应元素

Element描述
CreationDate桶创建的日期 类型: 时间戳 格式: yyyy-MM-dd'T'HH:mm:ss.SSSZ (日期+T+时间+时区)(Z=Zulu Time Zone) 父节点: ListAllMyBucketsResult.Buckets.Bucket
DisplayName桶所有者的名称 类型: 字符串 父节点: ListAllMyBucketsResult.Owner
ID桶所有者的ID 类型: 字符串 父节点: ListAllMyBucketsResult.Owner
ListAllMyBucketsResult响应容器 类型: 容器 子节点: Owner,Buckets
Name桶名称 类型: 字符串 父节点: ListAllMyBucketsResult.Buckets.Bucket
Bucket代表一个桶的信息 类型: 容器 父节点: ListAllMyBucketsResult.Buckets 子节点: Bucket
Buckets多个桶信息的容器 类型: 容器 父节点: ListAllMyBucketsResult 子节点: Bucket

请求消息示例

http
GET https://fgws3-ocloud.ihep.ac.cn/ HTTP/1.1
Host: fgws3-ocloud.ihep.ac.cn
User-Agent: aws-sdk-go/1.48.3 (go1.19.2; windows; amd64)
X-Amz-Date: 20231128T075413Z
X-Amz-Content-Sha256: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
Authorization: AWS4-HMAC-SHA256 Credential=PIM9Z4LAahZtba1BeLW2/20231128/us-east-1/s3/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=201eacee2b232af1455cc4d87dfb3ad0281c514f9cee155d4af0777a17dc5bd6

响应消息示例

http
HTTP/1.1 200 OK
Accept-Ranges: bytes
Content-Length: 294
Content-Type: application/xml
Server: JWanFS FGW Server
X-Amz-Request-Id: 1701158054936323038
Date: Tue, 28 Nov 2023 07:54:14 GMT

<?xml version="1.0" encoding="UTF-8"?>
<ListAllMyBucketsResult
    xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
    <Owner>
        <DisplayName></DisplayName>
        <ID></ID>
    </Owner>
    <Buckets>
        <Bucket>
            <CreationDate>2023-10-25T09:35:19Z</CreationDate>
            <Name>20001-cbq</Name>
        </Bucket>
    </Buckets>
</ListAllMyBucketsResult>