AWS S3:如何查看正在使用的磁盘空间量

Ken*_*ers 100 amazon-s3 amazon-web-services

我有AWS账号.我正在使用S3来存储来自不同服务器的备份.问题是AWS控制台中有关于我的S3云上使用了多少磁盘空间的信息?

cud*_*dds 103

Yippe - AWS CLI的更新允许您以递归方式通过存储桶...

aws s3 ls s3://<bucketname> --recursive  | grep -v -E "(Bucket: |Prefix: |LastWriteTime|^$|--)" | awk 'BEGIN {total=0}{total+=$3}END{print total/1024/1024" MB"}'
Run Code Online (Sandbox Code Playgroud)

  • AWS Cloudwatch现在具有针对存储桶大小和每日更新的对象数量的度量标准.关于时间!https://aws.amazon.com/blogs/aws/amazon-s3-update-delete-notifications-better-filters-bucket-metrics/ (7认同)
  • 如果你只有一个桶,你不需要grep部分. (3认同)
  • **示例**`aws cloudwatch get-metric-statistics --namespace AWS/S3 --start-time 2015-07-15T10:00:00 --end-time 2015-07-31T01:00:00 - 期间86400 - 统计平均--region eu-west-1 --metric-name BucketSizeBytes --dimensions Name = BucketName,Value = toukakoukan.com Name = StorageType,Value = StandardStorage`**重要:**您必须同时指定StorageType维度参数中的BucketName和BucketName,否则您将得不到任何结果. (3认同)

tha*_*vik 85

鉴于原始问题是3年前,我不确定这是何时添加到AWSCLI,但命令行工具通过运行提供了一个很好的摘要:

aws s3 ls s3://mybucket --recursive --human-readable --summarize
Run Code Online (Sandbox Code Playgroud)

  • 这并不显示版本的真实尺寸。有没有办法检查所有版本的 s3 存储桶的总大小? (3认同)
  • 你和[Christopher's](http://stackoverflow.com/a/26963108/700420)是迄今为止最好的答案. (2认同)
  • 比公认的答案更简单的解决方案。谢谢! (2认同)
  • 打印每个存储桶的总大小: `for b in $(aws s3 ls | awk '{ print $NF }'); 执行 printf "$b "; aws s3 ls s3://$b --recursive --人类可读 --summarize | 尾巴-1;完成` (2认同)

end*_*iju 45

要使用AWS控制台查找S3存储桶的大小:

  1. 单击S3存储桶名称
  2. 选择"管理"选项卡
  3. 单击"度量标准"导航按钮
  4. 默认情况下,您应该看到存储桶的存储指标

希望这可以帮助.

  • 如果您的存储桶具有TB数据,则此工作更快.接受的答案需要花费大量时间来计算该比例中的所有对象. (2认同)

mar*_*usk 36

s3cmd可以通过运行向您显示s3cmd du,可选择将桶名称作为参数传递.


Chr*_*ett 26

AWS CLI现在支持--query采用JMESPath表达式的参数.

这意味着您可以将list-objects使用sum(Contents[].Size)和计数给出的大小值相加length(Contents[]).

这可以使用如下的官方AWS CLI运行,并于20142月推出

 aws s3api list-objects --bucket BUCKETNAME --output json --query "[sum(Contents[].Size), length(Contents[])]"
Run Code Online (Sandbox Code Playgroud)


JSc*_*Ced 7

在Linux系统中有python(带pip安装程序),grep并且awk,安装AWS CLI(命令行工具EC2,S3等多项服务)

sudo pip install awscli
Run Code Online (Sandbox Code Playgroud)

然后.awssecret在您的主文件夹中创建一个文件,其内容如下(根据需要调整密钥,密钥和区域):

[default]
aws_access_key_id=<YOUR_KEY_HERE>
aws_secret_access_key=<YOUR_SECRET_KEY_HERE>
region=<AWS_REGION>
Run Code Online (Sandbox Code Playgroud)

使此文件只读写给您的用户:

sudo chmod 600 .awssecret
Run Code Online (Sandbox Code Playgroud)

并将其导出到您的环境

 export AWS_CONFIG_FILE=/home/<your_name>/.awssecret
Run Code Online (Sandbox Code Playgroud)

然后在终端中运行(这是一个单行命令,\在这里分开以便于阅读):

aws s3 ls s3://<bucket_name>/foo/bar | \
grep -v -E "(Bucket: |Prefix: |LastWriteTime|^$|--)" | \
awk 'BEGIN {total=0}{total+=$3}END{print total/1024/1024" MB"}'
Run Code Online (Sandbox Code Playgroud)
  • aws部分列出了桶(或者可选的'子文件夹')
  • grep部分删除(使用-v)与正则表达式匹配的行(使用-E).^$用于空白行,--用于输出中的分隔符行aws s3 ls
  • 最后一个awk只是添加到total结果输出的第三列(大小以KB为单位),然后在结尾显示它

注意此命令适用于当前存储桶或"文件夹",而不是递归


Jon*_*ett 6

请参阅https://serverfault.com/questions/84815/how-can-i-get-the-size-of-an-amazon-s3-bucket

由Vic回答...

<?php
if (!class_exists('S3')) require_once 'S3.php';

// Instantiate the class
$s3 = new S3('accessKeyId', 'secretAccessKey');
S3::$useSSL = false;

// List your buckets:
echo "S3::listBuckets(): ";
echo '<pre>' . print_r($s3->listBuckets(), 1). '</pre>';

$totalSize = 0;
$objects = $s3->getBucket('name-of-your-bucket');
foreach ($objects as $name => $val) {
    // If you want to get the size of a particular directory, you can do
    // only that.
    // if (strpos($name, 'directory/sub-directory') !== false)
    $totalSize += $val['size'];
}

echo ($totalSize / 1024 / 1024 / 1024) . ' GB';
?>
Run Code Online (Sandbox Code Playgroud)


小智 6

Cloud watch还允许您为S3存储桶创建指标.它按大小和对象计数显示指标.服务>管理工具> Cloud watch.选择S3存储桶所在的区域,大小和对象计数指标将包含在这些可用指标中.


小智 5

除了克里斯托弗的答案。

如果您需要计算版本化存储桶的总大小,请使用:

aws s3api list-object-versions --bucket BUCKETNAME --output json --query "[sum(Versions[].Size)]"
Run Code Online (Sandbox Code Playgroud)

它同时统计最新版本和存档版本。


Jak*_*zik 5

获得大水桶通过API大小(或AWS CLI或s4cmd)是相当缓慢.这是我的HowTo解释如何使用bash one liner 解析S3 Usage Report:

cat report.csv | awk -F, '{printf "%.2f GB %s %s \n", $7/(1024**3 )/24, $4, $2}' | sort -n
Run Code Online (Sandbox Code Playgroud)