amazon-web-services - 使用 AWS CLI 查询语言进行分组和排序
问题描述
我正在尝试列出我的所有 ec2 实例和用于旋转该实例的图像。
aws ec2 describe-instances \
--query 'Reservations[*].Instances[*].[InstanceId,ImageId]' \
--output=table
这给了我很好的细节。但我有很多实例和图像。想根据 ImageId 对我的实例进行分组,并针对它计算实例数。有什么建议么?
解决方案
据我所知,没有一种简单的方法可以直接通过 AWS 的 CLI 执行此操作。但是,AWS 会导出 JSON(除非您更改输出,就像您在上面的命令中所做的那样),并且 JSON 在大多数语言中都非常容易操作。例如,下面是一个使用 bash 的“jq”实用程序来做你想做的事情的例子:
aws ec2 describe-instances \
--region=us-east-1 \
| jq -s 'map(.Reservations[].Instances[].ImageId) \
| group_by(.) \
| map({Image: .[0], Count: length})'
这是使用最新版本的 jq,您可以使用apt-get install jq
或yum install jq
根据您的 linux 操作系统获得它。
它正在做的是:
通过命令行检索所有实例信息,以完整的 JSON 格式(根本不使用他们的 CLI 进行过滤,但如果你愿意,你可以这样做)
使用 JQ 从本质上解析出所有 ImageID(您将识别出过滤器的那一部分,因为亚马逊的 CLI 本质上使用 JQ 的过滤器语法)
将所有图像按图像 ID 分组到数组中
创建一个图像 ID 到数组长度的映射(然后将返回一个 JSON 对象映射 ImageID 到它的计数。
推荐阅读
- javascript - “未捕获的 ReferenceError:未定义 getEventListeners”
- c++ - 如何修复“未知类型名称'变量'”?
- docker - Docker Desktop kubernates 上用于 Ingress 的空地址
- c# - 在 C# 中按搜索文本相关性排序列表
- python-3.x - 如何在 Juypter 笔记本中使用/安装 python 代码/文件
- php - PHP正则表达式,删除特定属性
- text - 在 SwiftUI 中,Picker 扩展为占据 HStack 内的整个空间
- tabulator - 制表符:使用键盘访问列
- javascript - 您知道连接多方、强大和文件上传之间的区别吗?它们是如何工作的?
- php - USB网络服务器的自动运行