AWS:使用powershell快速获取S3存储桶大小



我需要一种使用powershell快速获得S3存储桶大小的方法。

实际上,我使用这个命令来计算S3存储桶的实际大小:

$size = (Get-S3Object -ProfileName $myacc -BucketName $myBucket |Measure-Object -Sum -Property Size).Sum

直到我碰到一个装着超过50M文件的桶。几乎花了很长时间才计算出来。难道没有一种方法可以快速获得铲斗尺寸吗?好吧,我注意到在Metrics部分已经有了bucket大小和文件数量。我尝试了Get-CWMetricsStatistic,但没有结果。所以我非常感谢你的帮助。

谢谢。

以下是如何获得S3存储桶大小:

$MyProfile = "myprofile"
$EndDate = Get-Date
$StartDate = $EndDate.AddDays(-7)
$bucketName = "mybucket"
$dim = [Amazon.CloudWatch.Model.Dimension]::new()
$dim.Name = "BucketName"
$dim.Value = $bucketName
$dim2 = [Amazon.CloudWatch.Model.Dimension]::new()
$dim2.Name = "StorageType"
$dim2.Value = "StandardStorage"
$size = (Get-CWMetricStatistic -ProfileName  $MyProfile -Statistic Average -Period 86400 -Namespace AWS/S3 -UtcEndTime $EndDate.ToString("yyyy-MM-dd") -UtcStartTime $StartDate.ToString("yyyy-MM-dd") -MetricName BucketSizeBytes -Dimension $dim, $dim2 -Unit "Bytes" | Select-Object -ExpandProperty Datapoints | select-object -First 1 | Select-Object -ExpandProperty Average)
$TotalSizeGB = 0
foreach ($item in (Get-S3Object -BucketName $BucketName | Select-Object Size)) { $TotalSizeGB += $item.Size/1GB }
$TotalSizeGB

最新更新