使用Python boto3恢复GLACIER存储的Amazon S3对象异常问题咨询
S3 Glacier恢复后存储类未变更说明
该现象属于Amazon S3的正常设计,并非存储类上报逻辑异常,相关规则如下:
- 调用
restore_object接口执行的是临时恢复操作,仅会生成一份可直接访问的对象临时副本,不会修改对象的原始存储类,因此对象的storage_class属性会始终显示为GLACIER。 - 临时副本的保留时长由恢复请求中的
Days参数指定,你设置的保留时长为1天,副本到期后会自动删除,对象将回归不可直接访问的归档状态。 - 可通过
restore字段的返回值判断恢复进度:- 返回
ongoing-request="true":恢复任务仍在处理中 - 返回
ongoing-request="false"且附带expiry-date参数:恢复已完成,可正常下载对象,expiry-date为临时副本的过期时间
- 返回
如果需要将对象永久从Glacier归档中取出、变更为其他存储类,可在恢复完成后调用copy_object接口覆盖原对象并指定目标存储类,示例代码如下:
import boto3 s3 = boto3.resource('s3', verify=False) bucket_name = "my-source-bucket" key = "glacier_file2.txt" s3.meta.client.copy_object( Bucket=bucket_name, Key=key, CopySource={'Bucket': bucket_name, 'Key': key}, StorageClass='STANDARD' # 可替换为STANDARD_IA、INTELLIGENT_TIERING等需要的存储类 )
内容的提问来源于stack exchange,提问作者franchyze923
相关产品推荐
相关产品推荐

