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

Ant*_*ine 2 amazon-s3 amazon-web-services amazon-glacier aws-cli

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

是否有任何脚本或工具?

Fré*_*nri 6

您可以使用列表对象

list-objects将返回StorageClass,如果您要在其中过滤值,GLACIER

aws s3api list-objects --bucket %bucket_name% --query 'Contents[?StorageClass==`GLACIER`]'
Run Code Online (Sandbox Code Playgroud)

然后,您想要的只是获取与之匹配的Key列表。

aws s3api list-objects --bucket %bucket_name% --query 'Contents[?StorageClass==`GLACIER`][Key]' --output text
Run Code Online (Sandbox Code Playgroud)

然后,您将需要更改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
Run Code Online (Sandbox Code Playgroud)