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

问题描述 投票:2回答:2

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

是否有任何脚本或工具?

amazon-web-services amazon-s3 aws-cli amazon-glacier
2个回答
3
投票

你可以使用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

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 }
© www.soinside.com 2019 - 2024. All rights reserved.