全部产品
阿里云办公

管理存储空间

更新时间:2018-08-15 23:26:09

存储空间(Bucket)是存储对象(Object)的容器。对象都隶属于存储空间。

创建存储空间

以下代码用于新建存储空间:

  1. # -*- coding: utf-8 -*-
  2. import oss2
  3. # 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。
  4. auth = oss2.Auth('<yourAccessKeyId>', '<yourAccessKeySecret>')
  5. # 通过指定Endpoint和存储空间名称,您可以在指定的地域创建新的存储空间。Endpoint以杭州为例,其它Region请按实际情况填写。
  6. bucket = oss2.Bucket(auth, 'http://oss-cn-hangzhou.aliyuncs.com', '<yourBucketName>')
  7. # 新建存储空间默认为标准存储类型,私有访问权限。
  8. bucket.create_bucket()

存储空间的命名规范,请参见基本概念中的命名规范。

您可以在创建存储空间时指定存储空间的权限存储类型。示例代码如下:

  1. # 设置存储空间的存储类型为低频访问类型,访问权限为公共读。
  2. bucket.create_bucket(oss2.BUCKET_ACL_PUBLIC_READ, oss2.models.BucketCreateConfig(oss2.BUCKET_STORAGE_CLASS_IA))

列举存储空间

以下代码用于列举存储空间:

  1. # -*- coding: utf-8 -*-
  2. import oss2
  3. # 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。
  4. auth = oss2.Auth('<yourAccessKeyId>', '<yourAccessKeySecret>')
  5. # Endpoint以杭州为例,其它Region请按实际情况填写。
  6. service = oss2.Service(auth, 'http://oss-cn-hangzhou.aliyuncs.com')
  7. print([b.name for b in oss2.BucketIterator(service)])

设置存储空间的访问权限

存储空间的访问权限(ACL)有以下三类:

访问权限 描述 访问权限值
私有 存储空间的拥有者和授权用户有该存储空间内的文件的读写权限,其他用户没有权限操作该存储空间内的文件。 oss2.BUCKET_ACL_PRIVATE
公共读 存储空间的拥有者和授权用户有该存储空间内的文件的读写权限,其他用户只有该存储空间内的文件的读权限。请谨慎使用该权限。 oss2.BUCKET_ACL_PUBLIC_READ
公共读写 所有用户都有该存储空间内的文件的读写权限。请谨慎使用该权限。 oss2.BUCKET_ACL_PUBLIC_READ_WRITE

以下代码用于设置存储空间的访问权限:

  1. # -*- coding: utf-8 -*-
  2. import oss2
  3. # 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。
  4. auth = oss2.Auth('<yourAccessKeyId>', '<yourAccessKeySecret>')
  5. # Endpoint以杭州为例,其它Region请按实际情况填写。
  6. bucket = oss2.Bucket(auth, 'http://oss-cn-hangzhou.aliyuncs.com', '<yourBucketName>')
  7. # 设置存储空间访问权限为私有。
  8. bucket.put_bucket_acl(oss2.BUCKET_ACL_PRIVATE)

获取存储空间的访问权限

以下代码用于获取存储空间的访问权限:

  1. # -*- coding: utf-8 -*-
  2. import oss2
  3. # 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。
  4. auth = oss2.Auth('<yourAccessKeyId>', '<yourAccessKeySecret>')
  5. # Endpoint以杭州为例,其它Region请按实际情况填写。
  6. bucket = oss2.Bucket(auth, 'http://oss-cn-hangzhou.aliyuncs.com', '<yourBucketName>')
  7. print(bucket.get_bucket_acl().acl)

获取存储空间的信息

以下代码用于获取存储空间的信息(Info):

  1. # -*- coding: utf-8 -*-
  2. import oss2
  3. # 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。
  4. auth = oss2.Auth('<yourAccessKeyId>', '<yourAccessKeySecret>')
  5. # Endpoint以杭州为例,其它Region请按实际情况填写。
  6. bucket = oss2.Bucket(auth, 'http://oss-cn-hangzhou.aliyuncs.com', '<yourBucketName>')
  7. # 获取存储空间相关信息
  8. bucket_info = bucket.get_bucket_info()
  9. print('name: ' + bucket_info.name)
  10. print('storage class: ' + bucket_info.storage_class)
  11. print('creation date: ' + bucket_info.creation_date)
  12. print('intranet_endpoint: ' + bucket_info.intranet_endpoint)
  13. print('extranet_endpoint ' + bucket_info.extranet_endpoint)
  14. print('owner: ' + bucket_info.owner.id)
  15. print('grant: ' + bucket_info.acl.grant)

删除存储空间

删删除存储空间之前,必须先删除存储空间下的所有文件、LiveChannel和分片上传产生的碎片。

说明:要删除分片上传产生的碎片,首先使用Bucket.ListMultipartUploads列举出所有碎片,然后使用Bucket.AbortMultipartUpload删除这些碎片。

以下代码用于删除存储空间:

  1. # -*- coding: utf-8 -*-
  2. import oss2
  3. # 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。
  4. auth = oss2.Auth('<yourAccessKeyId>', '<yourAccessKeySecret>')
  5. # Endpoint以杭州为例,其它Region请按实际情况填写。
  6. bucket = oss2.Bucket(auth, 'http://oss-cn-hangzhou.aliyuncs.com', '<yourBucketName>')
  7. try:
  8. # 删除存储空间。
  9. bucket.delete_bucket()
  10. except oss2.exceptions.BucketNotEmpty:
  11. print('bucket is not empty.')
  12. except oss2.exceptions.NoSuchBucket:
  13. print('bucket does not exist')

对于非空的存储空间,可以通过边列举边删除(对于分片上传则是终止上传)的方法清空存储空间,然后再删除。

本文导读目录