列出具有特定存储类的S3存储桶对象
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了列出具有特定存储类的S3存储桶对象相关的知识,希望对你有一定的参考价值。
从Glacier获取对象非常耗时,所以我决定使用S3 IA存储类。我需要列出我的存储桶中具有Glacier存储类的所有对象(我通过LifeCycle策略配置它)并将其更改为S3 IA。
是否有任何脚本或工具?
答案
你可以使用list-objects做到这一点
list-objects
将返回StorageClass
,在您的情况下,您想要过滤GLACIER
的值
aws s3api list-objects --bucket %bucket_name% --query 'Contents[?StorageClass==`GLACIER`]'
那么你想要的只是获得匹配的Key列表
aws s3api list-objects --bucket %bucket_name% --query 'Contents[?StorageClass==`GLACIER`][Key]' --output text
然后,您需要通过更改Key的存储类来复制对象
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
另一答案
并且...如果你需要在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 }
以上是关于列出具有特定存储类的S3存储桶对象的主要内容,如果未能解决你的问题,请参考以下文章