如何解决JMES路径:从AWS CLI结果中排除前5条记录
我想使用AWS CLI获取RDS实例的可用快照列表。
我可以在使用此查询创建快照时按降序获得所有快照:
aws rds describe-db-snapshots --db-instance-identifier sample-db \
--query="(reverse(sort_by(DBSnapshots[?Snapshottype=='manual'],&SnapshotCreateTime)))[*].{DBSnapshotIdentifier: DBSnapshotIdentifier,DBSnapshotARN: DBSnapshotArn,SnapshotCreateTime: SnapshotCreateTime}" \
--no-paginate --output json
通过将[*]
替换为[:5]
,我还可以从该查询中获取前5条记录:
aws rds describe-db-snapshots --db-instance-identifier sample-db \
--query="(reverse(sort_by(DBSnapshots[?Snapshottype=='manual'],&SnapshotCreateTime)))[:5].{DBSnapshotIdentifier: DBSnapshotIdentifier,SnapshotCreateTime: SnapshotCreateTime}" \
--no-paginate --output json
但是,我想获取所有记录(,但前5名除外)。我将不胜感激JMES Path上关于如何实现此目标的任何投入。
解决方法
您要实现的目标称为slicing,实际上您与试用版非常接近解决方案。
JMESPath的切片语法是从Python世界借来的,如下所示:
此语法引入了允许开始的Python样式数组切片 位置,停止位置和步骤。该语法还建议如下 语义与python slices相同。
[start:stop:step]
表达式的每个部分都是可选的。您可以省略开始 位置,停止位置或步骤。不能超过三个值 在切片表达式中提供。
step值确定在每个元素之后我的索引如何跳过 从阵列中拔出。步骤1(默认步骤)不会跳过 任何索引。步进值为2将跳过其他所有索引,而 从数组中获取值。值为-1的步长将提取值 从数组中以相反的顺序。步进值-2将提取 值从数组中以相反的顺序排列,同时互相跳过 索引。
来源:https://jmespath.org/proposals/array-slices.html#syntax
因此,您的查询应为[5:]
,以指示您希望切片在第五个元素之后开始,并以:
aws rds describe-db-snapshots --db-instance-identifier sample-db \
--query="(reverse(sort_by(DBSnapshots[?SnapshotType=='manual'],&SnapshotCreateTime)))[5:].{DBSnapshotIdentifier: DBSnapshotIdentifier,DBSnapshotARN: DBSnapshotArn,SnapshotCreateTime: SnapshotCreateTime}" \
--no-paginate --output json
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。