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

如何使用AWS CLI查询ID不在指定列表中的所有EC2实例?

用AWS CLI筛选闲置EC2实例ID

完全可以实现,以下是具体操作步骤:

1. 准备在用实例ID列表

把已知的500个在用实例ID保存到文本文件(比如active-instances.txt),每行一个ID,格式示例:

i-0abc123def456ghi7
i-0jkl890mno123pqr4
...

2. 获取所有EC2实例ID并筛选闲置实例

单区域场景

如果所有实例都在同一个AWS区域,直接用以下命令完成筛选:

# 获取当前区域所有EC2实例ID并排序
aws ec2 describe-instances --query 'Reservations[*].Instances[*].InstanceId' --output text | tr '\t' '\n' | sort > all-instances.txt

# 对比筛选出不在在用列表中的闲置实例ID
comm -23 <(sort all-instances.txt) <(sort active-instances.txt) > idle-instances.txt

也可以合并成一条命令,无需生成中间文件:

comm -23 <(aws ec2 describe-instances --query 'Reservations[*].Instances[*].InstanceId' --output text | tr '\t' '\n' | sort) <(sort active-instances.txt)

多区域场景

如果实例分布在多个AWS区域,用脚本遍历所有区域并收集闲置实例:

#!/bin/bash
# 定义在用实例文件路径
ACTIVE_FILE="active-instances.txt"
# 定义闲置实例输出文件路径
IDLE_FILE="idle-instances-all-regions.txt"

# 清空输出文件
> $IDLE_FILE

# 遍历所有AWS区域
for region in $(aws ec2 describe-regions --query 'Regions[*].RegionName' --output text | tr '\t' '\n')
do
  echo "正在处理区域: $region"
  # 获取当前区域所有实例ID,对比后追加到输出文件
  comm -23 <(aws ec2 describe-instances --region $region --query 'Reservations[*].Instances[*].InstanceId' --output text | tr '\t' '\n' | sort) <(sort $ACTIVE_FILE) >> $IDLE_FILE
done

echo "闲置实例ID已保存到 $IDLE_FILE"

注意事项

  • 确保你的AWS CLI已配置拥有ec2:DescribeInstances权限的凭证
  • 若需指定特定区域,在aws ec2 describe-instances命令后添加--region <区域名>参数(例如--region us-east-1)
  • comm命令依赖排序后的文件,因此必须对两个列表执行sort操作

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 19:00:00