amazon-web-services - 如何使用 aws CLI 过滤以匹配在一系列日期中开始的 ec2s 以获取包含像 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}'
当我检查它时它起作用了。
推荐阅读
- html - 使用 Angular 动态地使用 XY 坐标将图像放在另一个图像上
- php - 循环内的帖子(构造)中的变量+文本
- c# - '字段列表' MySQL 异常中的未知列
- mpxj - ProjectFile.getDefaultCalendar 与 ProjectProperties.getDefaultCalendarName 不匹配
- ruby-on-rails - Docker容器中的Rails加密凭据
- java - 使用类中介在 WSO2 ESB 中创建自定义代理时发生错误
- android - 尝试上传图像文件时连接失败
- c# - Xamarin ListView ItemsSource 无法在 PopupPage 内绑定数据
- linux - 如何一次性取消保护跨越多个页面的内存区域?
- ios - 使 TextView 的一半文本颜色与其他 50% 的文本 SWIFT 不同