开发者社区> 问答> 正文

python删除存储空间调用代码片段

已解决

展开
收起
2018-06-20 20:28:59 978 0
1 条回答
写回答
取消 提交回答
  • 采纳回答

    详细解答可以参考官方帮助文档

    存储空间(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和分片上传产生的碎片。

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

    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')

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

    2018-06-25 08:21:17
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
From Python Scikit-Learn to Sc 立即下载
Data Pre-Processing in Python: 立即下载
双剑合璧-Python和大数据计算平台的结合 立即下载