如何使用 aws CLI 进行过滤以匹配在日期范围内开始的 ec2s,以获得包含 StateTransitionReason 之类日期的字符串值?
How to filter using aws CLI to match ec2s started in a range of dates for a string value which contains a date like StateTransitionReason?
我正在尝试制作一个监控脚本,该脚本将查找已启动、未启动、超过 7 天且仍处于停止状态的旧 ec2 机器,然后将其删除。为此,我需要识别那些未使用的盒子。 LaunchTime 值是一个日期参数,但我尝试使用的参数是 StateTransitionReason,它包含一个日期。
这行得通并给我看一个完整的列表:
aws ec2 describe-instances --filters 'Name=instance-state-name,Values=stopped' 'Name=tag:App_Name,Values=MYAPPS' 'Name=tag:Name,Values=development-*' --query 'Reservations[*].Instances[*].{Instance:InstanceId,StateTransitionReason:StateTransitionReason,Name:Tags[?Key==`Owner`]|[0].Value}'
但是如果我尝试这个,它什么也没有显示:
aws ec2 describe-instances --filters 'Name=instance-state-name,Values=stopped' 'Name=tag:App_Name,Values=MYAPPS' 'Name=tag:Name,Values=development-*' --query 'Reservations[*].Instances[?StateTransitionReason<="User initiated (2019-10-10 05:00:00 GMT)"].{Instance:InstanceId,StateTransitionReason:StateTransitionReason,Name:Tags[?Key==`Owner`]|[0].Value}'
StateTransitionReason 是一个字符串参数,但它包含一个日期,有没有办法过滤比特定日期更早的日期?
我尝试查看 AWS 文档,但它没有解释。
这看起来很愚蠢,但原因是您在查询中使用了 " 而不是 `。
尝试做:
aws ec2 describe-instances --filters 'Name=instance-state-name,Values=stopped' 'Name=tag:App_Name,Values=MYAPPS' 'Name=tag:Name,Values=development-*' --query 'Reservations[*].Instances[?StateTransitionReason<=`User initiated (2019-10-10 05:00:00 GMT)`].{Instance:InstanceId,StateTransitionReason:StateTransitionReason,Name:Tags[?Key==`Owner`]|[0].Value}'
当我检查它时它起作用了。
我正在尝试制作一个监控脚本,该脚本将查找已启动、未启动、超过 7 天且仍处于停止状态的旧 ec2 机器,然后将其删除。为此,我需要识别那些未使用的盒子。 LaunchTime 值是一个日期参数,但我尝试使用的参数是 StateTransitionReason,它包含一个日期。
这行得通并给我看一个完整的列表:
aws ec2 describe-instances --filters 'Name=instance-state-name,Values=stopped' 'Name=tag:App_Name,Values=MYAPPS' 'Name=tag:Name,Values=development-*' --query 'Reservations[*].Instances[*].{Instance:InstanceId,StateTransitionReason:StateTransitionReason,Name:Tags[?Key==`Owner`]|[0].Value}'
但是如果我尝试这个,它什么也没有显示:
aws ec2 describe-instances --filters 'Name=instance-state-name,Values=stopped' 'Name=tag:App_Name,Values=MYAPPS' 'Name=tag:Name,Values=development-*' --query 'Reservations[*].Instances[?StateTransitionReason<="User initiated (2019-10-10 05:00:00 GMT)"].{Instance:InstanceId,StateTransitionReason:StateTransitionReason,Name:Tags[?Key==`Owner`]|[0].Value}'
StateTransitionReason 是一个字符串参数,但它包含一个日期,有没有办法过滤比特定日期更早的日期?
我尝试查看 AWS 文档,但它没有解释。
这看起来很愚蠢,但原因是您在查询中使用了 " 而不是 `。 尝试做:
aws ec2 describe-instances --filters 'Name=instance-state-name,Values=stopped' 'Name=tag:App_Name,Values=MYAPPS' 'Name=tag:Name,Values=development-*' --query 'Reservations[*].Instances[?StateTransitionReason<=`User initiated (2019-10-10 05:00:00 GMT)`].{Instance:InstanceId,StateTransitionReason:StateTransitionReason,Name:Tags[?Key==`Owner`]|[0].Value}'
当我检查它时它起作用了。