如何使用aws CLI进行过滤以匹配在日期范围内开始的包含日期之类的字符串值的ec2,如StateTransitionReason?

问题描述 投票:1回答:1

我正在尝试创建一个监视脚本,该脚本将查找已启动但未启动的旧ec2盒,它们早于7天,并且它们处于停止状态,然后将其删除。为此,我需要确定那些未使用的盒子。 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文档,但没有解释。

amazon-web-services amazon-ec2 automation aws-sdk aws-cli
1个回答
0
投票

这似乎很愚蠢,但是原因是您在查询中使用了“而不是`。尝试做:

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}'

我检查时有效。

© www.soinside.com 2019 - 2024. All rights reserved.