【发布时间】:2022-11-16 15:00:30
【问题描述】:
我仍在努力了解如何使用 JQ 来获得我想要的东西。我想获取我帐户中早于特定日期的所有快照的大小,然后将它们相加以便计算成本。我可以在没有日期过滤的情况下做到这一点。
aws ec2 describe-snapshots --profile my_profile_name | jq "[.Snapshots[].VolumeSize] | add"
这将返回一个数值。没有 JQ,我也可以使用“查询”获取快照列表,但我认为在使用 JQ 时不会应用,但我可能是错的。
aws ec2 describe-snapshots --profile my_profile_name --owner-ids self --query "Snapshots[?(StartTime<='2022-09-08')].[SnapshotId]"
我尝试了使用“select”的各种安排以及我的第一个例子。但是,我还没有得到任何回报。我感谢任何指示。
这是不太有效的“选择”。
aws ec2 describe-snapshots --profile my_profile_name | jq "[.Snapshots[]select(.StartTime < "2022-09-08")] | [.Snapshots[].VolumeSize] | add"
编辑 11/15/22
我能够取得进展,并且找到了一个允许您测试 JQ 的站点。该示例能够选择字符串和数字,但我在处理日期部分时遇到了问题。我不明白如何以 AWS 提供的格式中断日期。我可以做添加部分,我删除了它以简化示例。
这是字符串的工作“选择”。当我使用数字并从 JSON 部分中删除引号时,我只能做更多/更少的事情。
.Snapshots[] | select(.StartTime == "2022-11-14T23:28:39+00:00") | .VolumeSize
【问题讨论】:
-
您应该可以使用
--query来执行此操作。它使用 JMESPath 语法。查看sum()——您应该能够提取快照大小,然后使用sum()创建总值。
标签: amazon-web-services jq aws-cli