微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

JMES路径:从AWS CLI结果中排除前5条记录

如何解决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 举报,一经查实,本站将立刻删除。