查看所有AWS S3存储桶并列出每个存储桶的使用情况

115次阅读
没有评论

问题描述

需要在多个AWS帐户中列出每个帐户的所有S3存储桶,并查看每个存储桶的总大小。目前,用户只能使用以下命令查看单个S3存储桶的存储大小:

aws s3 ls s3://mybucket --recursive --human-readable --summarize

解决方案

请注意以下操作可能涉及版本差异及风险,操作前请备份数据。

方案1:使用脚本批量获取S3存储桶大小

通过编写脚本,您可以批量获取各个AWS帐户中所有S3存储桶的大小信息。以下是一个示例脚本,该脚本可以列出每个帐户的所有S3存储桶并显示其总大小:

#!/bin/bash

aws_profile=('profile1' 'profile2' 'profile3')

# 遍历AWS帐户
for i in "${aws_profile[@]}"; do
  echo "AWS帐户: ${i}"
  # 获取S3存储桶列表
  buckets=($(aws s3 ls s3:// --recursive --profile "${i}" --region your_region | awk '{print $3}'))

  # 遍历S3存储桶
  for j in "${buckets[@]}"; do
    echo "S3存储桶: ${j}"
    # 获取存储桶大小信息
    aws s3 ls s3://"${j}" --recursive --human-readable --summarize --profile "${i}" --region your_region | awk END'{print}'
  done
done

方案2:使用CloudWatch的Storage Lens

您可以在AWS控制台中使用S3 Storage Lens功能来查看存储桶的信息。以下是一些步骤:

  1. 登录到AWS控制台。
  2. 打开S3服务,选择“S3 Storage Lens”(位于左侧导航栏)。
  3. 在默认的帐户仪表板中,选择“Buckets”选项卡。
  4. 您可以在“Buckets”部分查看各个存储桶的信息,并按总存储量排序。

需要注意的是,使用Storage Lens可以更高效地获取存储桶的信息,并避免了大量的API调用。然而,该功能可能会产生一些额外的成本,因为仪表板每个月有一定的费用。

方案3:使用AWS CLI手动获取存储桶大小

如果您希望手动获取存储桶大小,可以使用AWS CLI的以下命令。请注意,这可能会产生较多的API调用,特别是对于包含大量对象的存储桶:

aws s3api list-buckets --query "Buckets[].Name" --profile your_profile --region your_region | tr -d '[],"' | while read -r bucket; do
    echo "S3存储桶: $bucket"
    aws cloudwatch get-metric-statistics --namespace AWS/S3 --start-time 2023-01-01T00:00:00Z --end-time 2023-08-01T00:00:00Z --period 86400 --statistics Average --region your_region --metric-name BucketSizeBytes --dimensions Name=BucketName,Value=$bucket Name=StorageType,Value=StandardStorage --profile your_profile | awk '/"Average":/ {getline; getline; getline; print}'
done

方案4:使用S3 Storage Lens进行可视化

如果您更倾向于通过可视化方式查看存储桶大小,您可以使用S3 Storage Lens的仪表板功能。以下是一些步骤:

  1. 登录到AWS控制台。
  2. 打开S3服务,选择“S3 Storage Lens”。
  3. 在左侧导航栏中选择“仪表板”。
  4. 创建一个新的仪表板,然后添加相应的存储桶以显示其大小信息。
  5. 在仪表板上,您可以使用图表和图形来直观地查看存储桶的大小和其他统计信息。

这种方法可以帮助您更好地理解存储桶的使用情况,同时提供了更直观的视觉效果。

请注意,不同的方法适用于不同的需求和偏好。您可以根据实际情况选择最适合您的方法来查看S3存储桶的大小信息。

正文完