使用亚马逊AWS服务S3时,是否有一种简单的方法可以检查存储桶中的所有文件是否将其存储类设置为"标准"?
如果任何文件设置为"标准 - 不经常访问"或者"减少冗余"我想要一个包含所有这些文件的列表,所以我可以将他们的存储类改为"标准"。
-------- --------- EDIT
我创建了一个AWS CLI命令,可以执行上述操作。它如下:
aws s3api list-objects --bucket myBucketName --query' Contents [?StorageClass!= STANDARD
] []。{Key:Key}'
(标准应该被`包围但是由于某些原因它们不显示。)
但它让我思考,这种请求会在拥有数百万个文件的大型存储桶上花费多少。如果上面的行返回5个文件,那么我是否需要为5个请求付费,或者我是否会为搜索中访问的每个文件付费?
答案 0 :(得分:0)
最好的办法是在S3上使用新的"inventory" service。如果您转到AWS Web控制台并浏览到S3存储桶管理页面(如果要求,则需要使用新样式控制台)。在这里,您可以选择库存并配置您的导出。您可以在此轻松选择存储类。
注意:您要导出NEEDS的存储桶具有接收库存导出的正确权限。您可以在S3 documentation中找到存储桶策略的示例。
答案 1 :(得分:0)
但它让我思考,这种请求会在拥有数百万个文件的大型存储桶上花费多少。如果上面的行返回5个文件,那么我是否需要为5个请求付费,或者我是否会为搜索中访问的每个文件付费?
这是在客户端过滤的。每个ListObjects请求都将收取费用,默认情况下,每个调用返回1000个对象aws s3api list-objects
。最便宜的地区(例如us-east-1和us-east-2)的成本为每1,000 LIST请求0.005美元。 (不是每个对象,每个请求。)由于每个请求返回1,000个对象,迭代2,000,000个对象的成本约为0.01美元,这似乎很合理。其他一些地区则略高一些。
在与存储区相同的区域内运行EC2,您无法支付任何相关的数据传输费用,并且由于延迟非常低,您将获得最佳性能。我最近做过的Bemchmarks建议你可以在10分钟内扫描一百万个物体。它相对较快,因为您只需要迭代列表,因为存储类是对象列表中返回的属性之一。
如果从STANDARD_IA
切换对象,请务必谨慎,因为如果某个对象在该类中至少30天之前被移出STANDARD_IA
之后,您仍然需要付费对于适用于该类别中所有对象的30天mimumum存储费用。
答案 2 :(得分:0)
以下为我工作正常。
aws s3api list-objects --bucket XXXX --query 'Contents[?StorageClass
!= `STANDARD`].[Key,StorageClass]' --output text > XXXX.txt
答案 3 :(得分:-1)
我最终使用AWS CLI。谢谢你的帮助:)