从Glacier获取对象非常耗时,所以我决定使用S3 IA存储类。 我需要列出我的存储桶中具有Glacier存储类的所有对象(我通过LifeCycle策略配置它)并将其更改为S3 IA。
是否有任何脚本或工具?
答案 0 :(得分:3)
您可以使用list-objects
执行此操作 list-objects
将返回StorageClass
,在您的情况下,您希望过滤GLACIER
aws s3api list-objects --bucket %bucket_name% --query 'Contents[?StorageClass==`GLACIER`]'
你想要的只是获得匹配的密钥列表
aws s3api list-objects --bucket %bucket_name% --query 'Contents[?StorageClass==`GLACIER`][Key]' --output text
然后,您需要通过更改密钥的存储类
来复制对象aws s3api list-objects --bucket %bucket_name% --query 'Contents[?StorageClass==`GLACIER`][Key]' --output text
| xargs -I {} aws s3 cp s3://bucket_name/{} s3://bucket_name/{} --storage-class STANDARD_IA
答案 1 :(得分:1)
和...如果你需要在Windows中从Powershell运行它,我必须这样做:
aws s3api list-objects --bucket Your_Bucket --query 'Contents[?StorageClass==`STANDARD`][Key]' --output text | foreach { aws s3 cp s3://Your_Bucket/$_ s3://Your_Bucket/$_ --storage-class REDUCED_REDUNDANCY }