开发者社区 问答 正文

关于Bucket的操作 之如何实现GetBucketInfo?

Get Bucket Info操作用于查看bucket的相关信息。 包括如下内容:

  • 创建时间
  • 外网访问Endpoint
  • 内网访问Endpoint
  • bucket的拥有者信息
  • bucket的ACL(AccessControlList)


请求语法GET /?bucketInfo HTTP/1.1
Host: BucketName.oss.aliyuncs.com
Date: GMT Date
Authorization: SignatureValue





响应元素(Response Elements)

名称描述
BucketInfo保存Bucket信息内容的容器 类型:容器 子节点:Bucket节点 父节点:无
Bucket保存Bucket具体信息的容器 类型:容器 父节点:BucketInfo节点
CreationDateBucket创建时间。时间格式 2013-07-31T10:56:21.000Z 类型:时间父节点:BucketInfo.Bucket
ExtranetEndpointBucket访问的外网域名 类型:字符串父节点:BucketInfo.Bucket
IntranetEndpoint同区域ECS访问Bucket的内网域名类型:字符串父节点:BucketInfo.Bucket
LocationBucket所在数据中心的区域 类型:字符串父节点:BucketInfo.Bucket
NameBucket名字类型:字符串父节点:BucketInfo.Bucket
Owner用于存放Bucket拥有者信息的容器。类型:容器父节点:BucketInfo.Bucket
IDBucket拥有者的用户ID。类型:字符串父节点:BucketInfo.Bucket.Owner
DisplayNameBucket拥有者的名称 (目前和ID一致)。类型:字符串父节点:BucketInfo.Bucket.Owner
AccessControlList存储ACL信息的容器类型:容器父节点:BucketInfo.Bucket
GrantBucket的ACL权限。类型:枚举字符串有效值:private、public-read、public-read-write父节点:BucketInfo.Bucket.AccessControlList


细节分析

  1. 如果Bucket不存在,返回404错误。错误码:NoSuchBucket。
  2. 只有Bucket的拥有者才能查看Bucket的信息,否则返回403 Forbidden错误,错误码:AccessDenied。
  3. 请求可以从任何一个OSS的Endpoint发起。


示例


[backcolor=transparent]请求示例: Get /?bucketInfo HTTP/1.1
Host: oss-example.oss.aliyuncs.com  
Date: Sat, 12 Sep 2015 07:51:28 GMT
Authorization: OSS qn6qrrqxo2oawuk53otfj byc: BuG4rRK+zNhH1AcF51NNHD39zXw=


[backcolor=transparent]成功获取Bucket信息的返回示例: HTTP/1.1 200
x-oss-request-id: 534B371674E88A4D8906008B
Date: Sat, 12 Sep 2015 07:51:28 GMT
Connection: keep-alive
Content-Length: 531  
Server: AliyunOSS

<?xml version="1.0" encoding="UTF-8"?>
<BucketInfo>
  <Bucket>
    <CreationDate>2013-07-31T10:56:21.000Z</CreationDate>
    <ExtranetEndpoint>oss-cn-hangzhou.aliyuncs.com</ExtranetEndpoint>
    <IntranetEndpoint>oss-cn-hangzhou-internal.aliyuncs.com</IntranetEndpoint>
    <Location>oss-cn-hangzhou</Location>
    <Name>oss-example</Name>
    <Owner>
      <DisplayName>username</DisplayName>
      <ID>271834739143143</ID>
    </Owner>
    <AccessControlList>
      <Grant>private</Grant>
    </AccessControlList>
  </Bucket>
</BucketInfo>


[backcolor=transparent]获取不存在的Bucket信息的返回示例: HTTP/1.1 404
x-oss-request-id: 534B371674E88A4D8906009B
Date: Sat, 12 Sep 2015 07:51:28 GMT
Connection: keep-alive
Content-Length: 308  
Server: AliyunOSS

<?xml version="1.0" encoding="UTF-8"?>
<Error>
  <Code>NoSuchBucket</Code>
  <Message>The specified bucket does not exist.</Message>
  <RequestId>568D547F31243C673BA14274</RequestId>
  <HostId>nosuchbucket.oss.aliyuncs.com</HostId>
  <BucketName>nosuchbucket</BucketName>
</Error>


[backcolor=transparent]获取没有权限访问的Bucket信息的返回示例: HTTP/1.1 403
x-oss-request-id: 534B371674E88A4D8906008C
Date: Sat, 12 Sep 2015 07:51:28 GMT
Connection: keep-alive
Content-Length: 209  
Server: AliyunOSS

<?xml version="1.0" encoding="UTF-8"?>
<Error>
  <Code>AccessDenied</Code>
  <Message>AccessDenied</Message>
  <RequestId>568D5566F2D0F89F5C0EB66E</RequestId>
  <HostId>test.oss.aliyuncs.com</HostId>
</Error>

展开
收起
青衫无名 2017-10-20 10:55:29 5286 分享 版权
阿里云 AI 助理回答

您提到的Get Bucket Info操作是阿里云对象存储OSS(Object Storage Service)中用于查询Bucket详细信息的API调用。通过这个请求,您可以获取到Bucket的创建时间、内外网访问Endpoint、拥有者信息以及ACL(Access Control List,访问控制列表)等重要属性。下面是对您描述内容的一个总结和补充说明:

请求语法

GET /?bucketInfo HTTP/1.1
Host: BucketName.oss.aliyuncs.com
Date: GMT Date
Authorization: SignatureValue

响应元素详解

  • BucketInfo: 包含Bucket所有信息的容器。
    • CreationDate: Bucket的创建时间,格式为ISO 8601标准日期时间格式。
    • ExtranetEndpoint: 外网访问Bucket的Endpoint。
    • IntranetEndpoint: 同一地域内ECS访问Bucket的内网Endpoint。
    • Location: Bucket所在数据中心区域。
    • BucketName: Bucket的名称。
    • BucketOwner: 包含Bucket拥有者信息的容器。
    • ID: 拥有者的用户ID。
    • DisplayName: 拥有者的显示名称(通常与ID相同)。
    • AccessControlList: 存储ACL信息的容器。
    • Grant: Bucket的访问权限类型,如private, public-read, public-read-write

注意事项

  • 如果尝试查询的Bucket不存在,OSS将返回404错误,错误码为NoSuchBucket
  • 只有Bucket的拥有者才能执行此操作,否则会收到403 Forbidden错误,错误码为AccessDenied
  • 此请求可以向OSS服务的任意Endpoint发起。

示例响应

  • 成功示例展示了如何获取到Bucket的完整信息,包括时间戳、内外网Endpoint、位置、名称、拥有者详情及ACL设置。
  • 错误示例分别展示了查询不存在的Bucket和无权访问的Bucket时的响应情况,帮助理解错误处理逻辑。

使用建议

在实际应用中,确保使用正确的AccessKey ID和AccessKey Secret生成签名(SignatureValue),以验证请求发送者的身份,并且根据业务需求正确配置Bucket的访问权限,以便于管理和安全地访问您的数据。此外,利用阿里云提供的SDK或CLI工具可以更便捷地执行此类操作,减少手动构造HTTP请求的复杂度。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答