我有AWS账户。我正在使用S3存储来自不同服务器的备份。问题是,AWS控制台中是否有关于我的S3云中正在使用多少磁盘空间的信息?
我有AWS账户。我正在使用S3存储来自不同服务器的备份。问题是,AWS控制台中是否有关于我的S3云中正在使用多少磁盘空间的信息?
Answers:
Yippe-AWS CLI的更新使您可以通过存储桶递归ls ...
aws s3 ls s3://<bucketname> --recursive | grep -v -E "(Bucket: |Prefix: |LastWriteTime|^$|--)" | awk 'BEGIN {total=0}{total+=$3}END{print total/1024/1024" MB"}'
aws cloudwatch get-metric-statistics --namespace AWS/S3 --start-time 2015-07-15T10:00:00 --end-time 2015-07-31T01:00:00 --period 86400 --statistics Average --region eu-west-1 --metric-name BucketSizeBytes --dimensions Name=BucketName,Value=toukakoukan.com Name=StorageType,Value=StandardStorage
重要提示:必须在Dimensions参数中同时指定StorageType和BucketName,否则将不会获得任何结果。
考虑到最初的问题是3年前,我不确定何时将其添加到AWSCLI中,但是命令行工具通过运行给出了一个很好的总结:
aws s3 ls s3://mybucket --recursive --human-readable --summarize
for b in $(aws s3 ls | awk '{ print $NF }'); do printf "$b "; aws s3 ls s3://$b --recursive --human-readable --summarize | tail -1; done
要使用AWS控制台找出S3存储桶的大小,请执行以下操作:
希望这可以帮助。
ls
基于-的解决方案则不会。
s3cmd可以通过运行向您显示此信息s3cmd du
,可以选择将存储桶名称作为参数传递。
AWS CLI现在支持--query
采用JMESPath表达式的参数。
这意味着您可以对list-objects
使用sum(Contents[].Size)
和计数给定的大小值求和length(Contents[])
。
aws s3api list-objects --bucket BUCKETNAME --output json --query "[sum(Contents[].Size), length(Contents[])]"
In function sum(), invalid type for value: None, expected one of: ['array-number'], received: "null"
否则查询将非常有效!
在具有python
(和pip
安装程序)grep
和的Linux机器上awk
,安装AWS CLI(用于EC2,S3和许多其他服务的命令行工具)
sudo pip install awscli
然后.awssecret
在主文件夹中创建一个文件,其内容如下(根据需要调整密钥,机密和区域):
[default]
aws_access_key_id=<YOUR_KEY_HERE>
aws_secret_access_key=<YOUR_SECRET_KEY_HERE>
region=<AWS_REGION>
使此文件对用户仅读写:
sudo chmod 600 .awssecret
并将其导出到您的环境
export AWS_CONFIG_FILE=/home/<your_name>/.awssecret
然后在终端中运行(这是一条单行命令,\
在此处分开以方便阅读):
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"}'
aws
部分列出了存储桶(或可选的“子文件夹”)grep
部分删除(使用-v
)与正则表达式匹配的行(使用-E
)。^$
用于空白行,--
用于输出中的分隔线aws s3 ls
awk
简单地添加到total
结果输出的第三列(大小以KB为单位),然后在末尾显示注意此命令适用于当前存储桶或“文件夹”,而不是递归的
看到 /server/84815/how-can-i-get-the-size-of-an-amazon-s3-bucket
维克回答...
<?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';
?>
echo ($totalSize / 1024 / 1024 / 1024) . ' GB';
位于源代码底部。
通过API(aws cli或s4cmd)获得较大的存储桶大小非常缓慢。这是我的HowTo解释如何使用bash one衬里解析S3使用情况报告:
cat report.csv | awk -F, '{printf "%.2f GB %s %s \n", $7/(1024**3 )/24, $4, $2}' | sort -n
AWS控制台不会向您显示此信息,但是您可以使用Bucket Explorer或Cloudberry Explorer来获取存储桶的总大小。两者都有可用的免费版本。
注意:这些产品仍然必须获得每个单独对象的尺寸,因此对于带有很多对象的存储桶可能要花费很长时间。
基于@cudds的答案:
function s3size()
{
for path in $*; do
size=$(aws s3 ls "s3://$path" --recursive | grep -v -E "(Bucket: |Prefix: |LastWriteTime|^$|--)" | awk 'BEGIN {total=0}{total+=$3}END{printf "%.2fGb\n", (total/1024/1024/1024)}')
echo "[s3://$path]=[$size]"
done
}
...
$ s3size bucket-a bucket-b/dir
[s3://bucket-a]=[24.04Gb]
[s3://bucket-b/dir]=[26.69Gb]
此外,Cyberduck方便地允许计算存储桶或文件夹的大小。
这是一个古老的询问,但是由于我一直在寻找答案,因此遇到了这个问题。一些答案让我记得我使用S3浏览器来管理数据。您可以单击存储桶并点击属性,它会向您显示总数。很简单 我强烈推荐浏览器:https : //s3browser.com/default.aspx?v=6-1-1&fam=x64
我使用Cloud Turtle来获取各个存储桶的大小。如果存储桶的大小超过100 Gb,那么将需要一些时间来显示大小。云龟是免费软件。