列出具有特定存储类的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存储桶对象的主要内容,如果未能解决你的问题,请参考以下文章

AWS S3策略限制用户仅列出存储桶中的某些文件夹

AWS S3:更改策略后无法列出存储桶

为啥我可以在未经许可的情况下删除/列出 S3 存储桶中的对象

列出 AWS S3 存储桶的特定“文件夹”中的文件

创建单个 IAM 用户以仅访问特定的 S3 存储桶

用于为用户列出 S3 存储桶内的特定文件夹的 IAM 策略