列出具有特定存储类的S3存储桶对象

时间:2016-10-25 13:55:47

标签: amazon-web-services amazon-s3 aws-cli amazon-glacier

从Glacier获取对象非常耗时,所以我决定使用S3 IA存储类。 我需要列出我的存储桶中具有Glacier存储类的所有对象(我通过LifeCycle策略配置它)并将其更改为S3 IA。

是否有任何脚本或工具?

2 个答案:

答案 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 }