我正在尝试创建一个监视脚本,该脚本将查找已启动但未启动的旧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文档,但没有解释。
这似乎很愚蠢,但是原因是您在查询中使用了“而不是`。尝试做:
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}'
我检查时有效。