如何通过命令行查看AWS EC2实例的创建日期?
通过AWS CLI实现EC2实例创建日期查询与过期销毁
1. 为什么ec2metadata无法满足需求?
ec2metadata(或通过curl http://169.254.169.254/latest/meta-data/获取元数据)仅能返回实例运行时的基础信息,不包含创建/启动时间(LaunchTime),必须通过AWS CLI调用官方接口获取该字段。
2. 查询所有实例的创建日期与运行状态
执行以下命令,可直观输出实例ID、启动时间(即创建日期)和当前状态:
aws ec2 describe-instances --query 'Reservations[*].Instances[*].[InstanceId, LaunchTime, State.Name]' --output table
LaunchTime为UTC时区的实例启动时间,可直接用于计算运行时长。
3. 筛选运行超过90天的实例
第一步:计算90天前的UTC时间阈值
Linux/macOS环境:
THRESHOLD=$(date -d "-90 days" --utc +"%Y-%m-%dT%H:%M:%SZ")
Windows PowerShell环境:
$THRESHOLD = (Get-Date).AddDays(-90).ToUniversalTime().ToString("yyyy-MM-ddTHH:mm:ssZ")
第二步:查询符合条件的实例ID
仅筛选运行中且启动时间早于阈值的实例:
aws ec2 describe-instances --query 'Reservations[*].Instances[?LaunchTime <= `'"$THRESHOLD"'` && State.Name == `running`].InstanceId' --output text
- 建议先执行此命令确认结果,避免误删目标外的实例。
4. 批量销毁过期实例
将查询到的实例ID直接传入终止命令:
aws ec2 terminate-instances --instance-ids $(aws ec2 describe-instances --query 'Reservations[*].Instances[?LaunchTime <= `'"$THRESHOLD"'` && State.Name == `running`].InstanceId' --output text)
注意事项
- 确保AWS CLI已配置具备
ec2:DescribeInstances和ec2:TerminateInstances权限的凭证。 - 终止实例时,默认会删除关联的根EBS卷(可根据卷的保留配置调整)。
- 生产环境建议先在测试实例上验证命令逻辑,再批量执行。
内容的提问来源于stack exchange,提问作者Deepak Tatyaji Ahire
相关产品推荐
相关产品推荐

