2017-01-16 62 views
0

使用Amazon AWS服务S3时,是否有一种简单的方法可以检查存储桶中的所有文件是否将其存储类设置为“标准” ?如何检查哪些文件未设置为亚马逊S3存储桶上的“标准”存储类

如果任何文件设置为“标准 - 不经常访问”或“减少冗余”,我希望列出所有这些文件,因此我可以将其存储类别更改为“标准”。

-------- --------- EDIT

我已经创建了一个AWS CLI命令,即能做到上述情况。这是因为如下:

AWS s3api列表对象--bucket myBucketName --query '目录[] [StorageClass = STANDARD?!] {Key:密钥}'

(STANDARD应该用`包围但他们不出于某种原因。)

但它让我想到,这种请求会花费在一个有数百万个文件的非常大的桶上。如果上面的行返回5个文件,那么我是否会收取5个请求的费用,或者我将针对在搜索中访问的每个单个文件收费?

回答

0

最好的办法是在S3上使用新的"inventory" service。如果您转到AWS Web控制台并浏览到S3存储段管理页面(如果需要,您需要使用新的样式控制台)。在这里你可以选择库存并配置你的出口。您可以轻松地在这里选择存储类。

注意:您要导出的存储桶需要具有正确的权限才能接收库存导出。您可以在S3 documentation中找到存储桶策略的示例。

+0

Iam能够更改我的所有文件的存储类,但我想要做的是制作一个脚本,可以向我显示未设置为“标准”的所有文件的列表。 Fx检查是否有人添加了一个存储类设置为例如。 “减少冗余”是错误的。 Perhabs通过AWS CLI? – Michael

+0

您可以使用AWS CLI,但根据存储桶中对象的数量,这将非常昂贵。如果您可以等待24-48小时,则使用存货清单检索清单便宜得多(因子1000)。 – Exelian

0

但它让我想到了,这种请求将花费在具有数百万个文件的非常大的桶上。如果上面的行返回5个文件,那么我是否会收取5个请求的费用,或者我将针对在搜索中访问的每个单个文件收费?

这在客户端被过滤。您将收取每个ListObjects请求的费用,该请求会在aws s3api list-objects之下默认返回1000个对象,默认情况下每个呼叫都会被调用。最便宜的地区(例如us-east-1和us-east-2)的成本为每1,000个LIST请求0.005美元。 (不是每个对象,每个请求。)由于每个请求返回1,000个对象,迭代2,000,000个对象的成本约为0.01美元,这看起来很合理。其他一些地区比较高。

在EC2内与桶相同的区域内运行,您不会支付任何关联的数据传输费用,并且由于延迟非常低,您将获得最佳性能。我最近做的Bemchmarks建议你应该能够在10分钟内扫描一百万个对象。这是相对较快的,因为您只需迭代列表,因为存储类是对象列表中返回的属性之一。

需谨慎小心,如果从STANDARD_IA交换对象,因为如果一个对象被移出STANDARD_IA它一直在类至少30天,你仍然会被收取适用30天mimumum存储充电前到该类中的所有对象。

+0

好的,这是有道理的。 Ty澄清。 – Michael

0

我最终使用AWS CLI。感谢您的帮助:)