You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:用AWS CLI查询EC2实例根卷大小及剩余空间(表格形式)

解决方法

1. 先修正命令获取根卷与实例基础信息

你原来的命令存在语法错误,比如Attachments[0]."Name=instance-id"写法有误,VolumeType.多了个多余的点。先改用这个能直接输出表格的命令,拿到实例名称、根卷总大小等基础信息:

aws ec2 describe-instances --query 'Reservations[*].Instances[*].{实例名称:Tags[?Key==`Name`].Value|[0], 实例ID:InstanceId, 根卷ID:BlockDeviceMappings[?DeviceName==RootDeviceName].Ebs.VolumeId|[0], 根卷总大小(GB):BlockDeviceMappings[?DeviceName==RootDeviceName].Ebs.VolumeSize|[0]}' --output table

2. 获取根卷剩余空间

AWS CLI的describe-volumes拿不到剩余空间——这是实例操作系统层面的文件系统信息,得用AWS Systems Manager(SSM)远程执行命令来获取,前提是你的EC2实例已安装SSM Agent,且实例的IAM角色拥有AmazonSSMManagedInstanceCore权限。

Windows实例(C盘)

执行以下命令批量查询所有Windows实例的C盘剩余空间:

aws ssm send-command \
    --document-name "AWS-RunPowerShellScript" \
    --targets "Key=instanceids,Values=$(aws ec2 describe-instances --query 'Reservations[*].Instances[*].InstanceId' --output text | tr '\t' ',')" \
    --parameters commands="Get-Volume -DriveLetter C | Select-Object DriveLetter, @{Name='总大小(GB)';Expression={[math]::Round($_.Size/1GB,2)}}, @{Name='剩余空间(GB)';Expression={[math]::Round($_.SizeRemaining/1GB,2)}}" \
    --output text

Linux实例(根分区)

如果是Linux实例,把命令替换为:

aws ssm send-command \
    --document-name "AWS-RunShellScript" \
    --targets "Key=instanceids,Values=$(aws ec2 describe-instances --query 'Reservations[*].Instances[*].InstanceId' --output text | tr '\t' ',')" \
    --parameters commands="df -h / | awk 'NR==2 {print \"根分区:\" \$1, \"总大小:\" \$2, \"剩余空间:\" \$4}'" \
    --output text

3. 合并成一张表(可选)

如果需要把基础信息和剩余空间整合到同一张表格里,可以用脚本处理:比如用jq将两个命令的输出导出为JSON后合并,或者写个简单的Python脚本完成结果整合。

注意事项

  • 未安装SSM Agent的实例,要么手动登录查询剩余空间,要么先给实例安装SSM Agent。
  • 必须确保实例的IAM角色拥有SSM访问权限,否则无法发送远程命令。

内容的提问来源于stack exchange,提问作者JAD

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 16:35:13