OSS提供标准、低频访问、归档和冷归档四种存储类型,全面覆盖从热到冷的各种数据存储场景。本文主要介绍如何转换文件(Object)的存储类型。

有关存储类型的更多信息,请参见开发指南的存储类型介绍存储类型转换

以下提供了详细的示例代码用于Object存储类型的相互转换。
  • 以下代码用于将Object的存储类型从标准或低频访问转换为归档类型:
    # -*- coding: utf-8 -*-
    import oss2
    import os
    
    # 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录RAM控制台创建RAM账号。
    auth = oss2.Auth('<yourAccessKeyId>', '<yourAccessKeySecret>')
    
    # Endpoint以杭州为例,其它Region请按实际情况填写。本示例中的Bucket与Object需提前创建好, 且Object类型为标准或低频访问存储类型。
    bucket = oss2.Bucket(auth, 'http://oss-cn-hangzhou.aliyuncs.com', '<yourBucketName>')
    object_name = '<yourObjectName>'
    
    # 添加存储类型header,此处以更改文件存储类型为归档类型为例。
    headers = {'x-oss-storage-class': oss2.BUCKET_STORAGE_CLASS_ARCHIVE}
    
    # 更改文件存储类型。
    bucket.copy_object(bucket.bucket_name, object_name, object_name, headers)
                        
  • 以下代码用于将Object的存储类型从归档转换为低频访问类型:
    # -*- coding: utf-8 -*-
    import oss2
    import os
    import time
    
    # 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录RAM控制台创建RAM账号。
    auth = oss2.Auth('<yourAccessKeyId>', '<yourAccessKeySecret>')
    
    # Endpoint以杭州为例,其它Region请按实际情况填写。本示例中的Bucket与Object需提前创建好, 且Object类型为归档存储类型。
    bucket = oss2.Bucket(auth, 'http://oss-cn-hangzhou.aliyuncs.com', '<yourBucketName>')
    object_name = '<yourObjectName>'
    
    # 获取文件元信息。
    meta = bucket.head_object(object_name)
    
    # 查看文件存储类型是否为归档类型。如果是,则需要先解冻才能修改文件存储类型。解冻时间预计1分钟。
    if meta.resp.headers['x-oss-storage-class'] == oss2.BUCKET_STORAGE_CLASS_ARCHIVE:
        bucket.restore_object(object_name)
        while True:
            meta = bucket.head_object(object_name)
            if meta.resp.headers['x-oss-restore'] == 'ongoing-request="true"':
                time.sleep(5)
            else:
                break
    
    # 添加存储类型header,此处以更改文件存储类型为低频访问类型为例。
    headers = {'x-oss-storage-class': oss2.BUCKET_STORAGE_CLASS_IA}
    
    # 更改文件存储类型。
    bucket.copy_object(bucket.bucket_name, object_name, object_name, headers)

各种存储类型的存储费用介绍,请参见计量项和计费项的概述一节。