获得亚马逊s3铲斗尺寸的最快方法

时间:2014-05-11 13:06:12

标签: amazon-web-services amazon-s3

截至目前,我正在通过迭代所有对象并累加单个对象的大小来计算亚马逊s3桶的大小。 这非常耗时。 我试着将操作并行化并节省了一些时间,但即使这样也需要花费很多时间。

我正在使用的系统:EC2 m1.large

是否有任何变通方法或更好的方法来确定铲斗尺寸?

注意:我没有访问aws控制台,只有访问密钥

1 个答案:

答案 0 :(得分:6)

可能有点晚了,但我也在寻找这个,并发现你可以从CloudWatch获得这些信息。在命令行中,您可以调用它来列出您拥有BucketSizeBytes stat的S3存储桶:

aws cloudwatch list-metrics --metric-name BucketSizeBytes

这给出了这样的事情列表:

    {
        "Namespace": "AWS/S3", 
        "Dimensions": [
            {
                "Name": "BucketName", 
                "Value": "myReallyGreatBucket"
            }, 
            {
                "Name": "StorageType", 
                "Value": "StandardStorage"
            }
        ], 
        "MetricName": "BucketSizeBytes"
    }

基本上,桶大小被划分为标准存储大小和Redced冗余存储大小字节计数。你想要这些是独立的,这样你就可以知道你正在使用多少全价存储以及多少便宜的存储空间。如果您希望将总字节用于其他目的,只需添加两个。要获得它们,您可以调用它来获得各种计算时间计数AWS CloudWatch get-metric-statistics CLI options。我通过指定获得一天的时间来实现它:

aws cloudwatch get-metric-statistics --namespace AWS/S3 --dimensions Name=BucketName,Value=myReallyGreatBucket Name=StorageType,Value=StandardStorage --metric-name BucketSizeBytes --start-time 2015-08-23T00:00:00 --end-time 2015-08-24T00:00:00 --period 86400 --statistics Average --unit Bytes
{
    "Datapoints": [
        {
            "Timestamp": "2015-08-23T00:00:00Z", 
            "Average": 436306296.0, 
            "Unit": "Bytes"
        }
    ], 
    "Label": "BucketSizeBytes"
}

当我试图获得一分钟或一小时的平均值时,它无效 - 刚刚返回一个空列表。整整一天,它如图所示。

您可以通过REST API调用相同的内容,但我还没有尝试过。据推测,相同的值可以起作用。