开发者社区> 问答> 正文

Python-SDK之如何实现管理存储空间?

存储空间(Bucket)是OSS上的命名空间,也是计费、权限控制、日志记录等高级功能的管理实体。

查看所有Bucket


通过oss2.BucketIterator可以遍历所有的Bucket:

  1. # -*- coding: utf-8 -*-
  2. import oss2
  3. auth = oss2.Auth('您的AccessKeyId', '您的AccessKeySecret')
  4. service = oss2.Service(auth, '您的Endpoint')
  5. print([b.name for b in oss2.BucketIterator(service)])

其中,oss2.Service是用来访问“OSS服务”相关的类,目前只是用来列举用户的Bucket。

创建Bucket


通过指定Endpoint和Bucket名,用户可以在指定的区域创建新的Bucket:
  1. bucket = oss2.Bucket(auth, '您的Endpoint', '您的Bucket名')
  2. bucket.create_bucket()

比如,把Endpoint设为 http://oss-cn-beijing.aliyuncs.com `,就可以在北京区域创建一个Bucket。关于Endpoint、区域及其对应关系,以及Bucket的命名规范,请参考 OSS 基本概念
创建时还可以指定Bucket的权限,如下面的代码创建一个公共可读的Bucket:
  1. bucket.create_bucket(oss2.BUCKET_ACL_PUBLIC_READ)


删除Bucket


用下面的方法删除一个空的Bucket:
  1. try:
  2.     bucket.delete_bucket()
  3. except oss2.exceptions.BucketNotEmpty:
  4.     print('bucket is not empty.')
  5. except oss2.exceptions.NoSuchBucket:
  6.     print('bucket does not exist')

如果Bucket非空,即还有文件或进行中的分片上传,那么就无法删除,SDK会抛出BucketNotEmpty异常。如果,Bucket不存在,则抛出NoSuchBucket异常。

注意
  • 一旦Bucket被删除,Bucket名可能会被其他用户申请。
  • 对于非空Bucket,可以通过边列举边删除(对于分片上传则是终止上传)的方法清空Bucket后,再删除。


查看Bucket访问权限

  1. print(bucket.get_bucket_acl().acl)


设置Bucket访问权限


把Bucket的访问权限设为私有:
  1. bucket.put_bucket_acl(oss2.BUCKET_ACL_PRIVATE)

提示:
  • Bucket的访问权限私有读写、公共读私有写、公共读写,分别对应 oss2.BUCKET_ACL_PRIVATE、oss2.BUCKET_ACL_PUBLIC_READ、oss2.BUCKET_ACL_PUBLIC_READ_WRITE。

展开
收起
青衫无名 2017-10-18 11:28:11 1887 0
0 条回答
写回答
取消 提交回答
问答排行榜
最热
最新

相关电子书

更多
Python系列直播第一讲——Python中的一切皆对象 立即下载
OpenStack Swift 海量小文件优化之路 立即下载
使用TensorFlow搭建智能开发系统 自动生成App U 立即下载