AWS CLI describe-snapshots to print SnapshotId
我正在尝试使用 bash 打印最新快照的 SnapshotId。这是我的命令:
1
| aws ec2 describe-snapshots | grep TestVolume1 |head -n 1| > Output.txt |
以上结果与 TestVolume1 匹配以将最新快照写入 Output.txt。我还想打印 SnapshotID 并且正在努力将其输出到 Output.txt.
我已经尝试过 awk 和 --filter 但这没有帮助。将不胜感激任何有关输出 SnapshotId 语法的帮助。我还能用什么?
- 您只是想获取最近创建的快照的 SnapshotId 吗? TestVolume1 的目的是什么?
您可以使用 --filter 参数仅检索匹配的快照,并使用 --query 参数从响应中解析所需的字段,
更新(根据快照开始时间添加反向排序快照):
1
| aws ec2 describe-snapshots --filters Name=description,Values="*TestVolume1*" --query"reverse(sort_by(Snapshots, &StartTime))[0].SnapshotId" |
过滤器应用于快照的描述,期望它包含所需的文本 (TestVolume1)。
- 如果这并不总是提供"最新"快照,您可以在 --query 中使用 sort_by() 并返回第一个/最后一个元素。请参阅:JMESPath 示例 — JMESPath
-
感谢回复。显然我的 --query 不起作用并且没有任何标签。这是错误:zsh:找不到命令:--query
-
TestVolume1 是什么部分?快照描述?
-
Hi - 是卷名之一。我们有全天每个 EBS 卷的快照(即 TestVolume1、TestVolume2 等)。我的目标是提取卷的最新快照并根据 SnapshotId 恢复该快照,因此需要打印 SnapshotId。
-
我假设您已经在快照的描述中添加了 VolumeName 信息!检查更新的答案
-
谢谢!更新后的命令有效。感谢您的洞察力和指导。
-
好的,虽然我可以解决这个问题,但是我将如何为多个卷运行此命令?我想为我拥有的许多卷找到最新的快照。 (测试卷 1 - 测试卷 10)
-
@NetSystemAdmin 这将需要多次运行此命令。你可以试试 for 循环,for i in {1..10}; do aws ec2 describe-snapshots --filters Name=description,Values="*TestVolume$i*" --query"reverse(sort_by(Snapshots, &StartTime))[0].SnapshotId" >> snapshots.txt; done
-
嗨 - 非常感谢你!!你非常乐于助人。我还将 for 循环增加到 {1..20},因为我需要打印所有的快照 ID。我有很多卷,现在可以看到很多快照 ID。如果我想输出的不仅仅是 SnapshotId,比如说 VolumeSize 或 State,我会添加到过滤器部分吗?我打算试试看。
-
不,添加到 --query 部分。