按时间创建过滤 aws ebs 卷

问题描述

我正在尝试编写一个脚本,该脚本将删除所有运行超过 1 小时的可用卷。

所以我选择了按状态过滤卷的行

aws ec2 describe-volumes --filters Name=status,Values=available | jq '.Volumes[]'

我尝试将它与另一个查询结合起来,用于按时间创建过滤快照

aws ec2 describe-snapshots --owner self --output json | jq '.Snapshots[] | select(.StartTime < "'$(date --date='-1 month' '+%Y-%m-%d')'") | [.Description,.StartTime,.SnapshotId]'

所以我合并了这个查询,但它没有返回任何音量

 aws ec2 describe-volumes --filters Name=status,Values=available | jq '.Volumes[] | select(.CreateTime < "'$(date --date='-1 hour' '+%Y-%m-%d')'") | [.VolumeId]'

还有一件奇怪的事情,如果我用 blabla 替换 CreateTime,查询不会失败,但会返回音量

~ $ aws ec2 describe-volumes --filters Name=status,Values=available | jq '.Volumes[] | select(.blabla < "'$(date --date='-1 hour' '+%Y-%m-%d')'") | [.VolumeId]'

解决方法

找到另一种方法来做到这一点

aws ec2 describe-volumes --filters Name=status,Values=available --query "Volumes[?(CreateTime<'$(date --date='-1 day' '+%Y-%m-%d')')].[VolumeId]" --output text