taws:把 AWS 控制台搬进终端的 Rust TUI

AWS
Rust
TUI
DevOps
开源
2026/10/15
·

阅读时间: 大约 9 分钟

taws:把 AWS 控制台搬进终端的 Rust TUI

taws 的 EC2 实例视图:状态栏、快捷键提示与 Stop 确认弹窗

AWS 控制台功能全,但对工程师来说太重:要在浏览器里点来点去、跨区域切换、盯着网页加载。Kubernetes 生态早有 k9s 这种”终端即控制台”的工具,AWS 侧却长期缺少一个对等物。taws(作者 huseyinbabal)就是冲着这个空位来的——一个用 Rust 写的、类 k9s 交互方式的 AWS 终端 UI,让你在终端里浏览、观察并管理云资源。官方致谢里写明:灵感来自 k9s,TUI 框架用 Ratatui,请求签名用 aws-sdk-rust 的 aws-sigv4。

一、它解决什么

登录一堆 aws ec2 describe-instances 然后人肉翻 JSON,或者每次都打开浏览器控制台,都不是长久之计。taws 把”选资源类型 → 列表 → 看详情 → 必要时操作”这条链路做成键盘驱动的 TUI:Vim 风格导航(j/k、gg/G)、: 打开资源选择器、/ 过滤、Enter 看详情、R 手动刷新、0-5 快速切常见区域。

taws 的 Lambda 函数视图:运行时、内存、修改时间一目了然

二、覆盖范围:一个需要打问号的数字

README 的”特性”一节写的是 94+ 资源类型、覆盖 60+ 个 AWS 服务;但到了”Supported AWS Services”一节,口径变成 30 个 AWS 服务、51 种资源类型,覆盖 95%+ 的日常使用。这两个数字对不上——这是官方文档自身的不一致,读者应以”Supported AWS Services”那张分类表为准(Compute/Storage/Database/Networking/Security/Management/Messaging/Containers/DevOps/Analytics 十大类,含 EC2、Lambda、S3、RDS、DynamoDB、VPC、ELBv2、IAM、Secrets Manager、SQS、EventBridge、ECR 等)。它并不追求把 300+ AWS 服务全做一遍,而是赌”日常 95% 场景”集中在这三十个上。

三、安全模型:本地凭证、离线处理、只读模式

云资源管理工具最怕的就是”凭证被发走”。taws 这一点设计得比较克制:

  • 凭证链完全本地:按优先级依次尝试环境变量、AWS SSO、aws login 控制台会话、角色扮演(role_arn + source_profile/credential_source)、~/.aws/credentials、~/.aws/config、EC2 IMDSv2 元数据,全部走本地;临时凭证自动缓存并在过期前刷新;
  • --readonly 只读模式:一个开关屏蔽所有写操作,适合在生产环境里只看不碰;
  • 最小权限提示:文档明确要求至少有 Describe* / List* 权限;
  • 企业 SSL 拦截友好:支持 AWS_CA_BUNDLE / SSL_CERT_FILE 注入企业 CA 证书,与 AWS CLI 同一套环境变量;
  • 可对接 LocalStack:--endpoint-url http://localhost:4566 就能把整个 TUI 指向本地仿真环境。

需要注意:taws 并非只能”看”——在 EC2 上按 s/S/Ctrl+d 可以启动、停止、终止实例,按 c 还能通过 SSM 直接开 shell(要求装了 session-manager-plugin、实例在运行、且仅 Linux 实例)。所以 --readonly 在共享账号里不是可有可无的选项。

四、关键能力一览

维度官方描述
实现语言Rust(要求 1.70+)
TUI 框架Ratatui
资源覆盖30 服务 / 51 类型(特性节自称 94+,口径不一)
多 Profile / 多区域支持,--profile / --region
过滤本地模糊匹配 + 服务端 AWS API Filters
写操作EC2 start/stop/terminate、SSM 连接
只读模式taws --readonly
分发brew / scoop / cargo / Docker(ghcr) / 预编译二进制
LicenseMIT

过滤是个有细节的设计:除了本地模糊匹配,对支持的资源还能按 AWS API 原生 filter 服务端过滤(如 Filters: instance-state-name=running, tag:Environment=prod),大列表时不用把全量拉到本地再筛。

整套键盘映射也是按”工程师手熟”来设计的:j/k 移动、gg/G 跳首尾、]/[ 翻页、: 唤起资源选择器、/ 过滤、R 刷新、? 呼出帮助、0-5 直达常用区域。进入资源后 Enter 展开成 JSON/YAML 详情,Esc 返回。这种”列表—详情—返回”的三层结构和 k9s 一脉相承,对已经习惯 vim/k9s 的人几乎零学习成本;但如果你平时只点控制台、不熟 vim 键位,前半小时会有明显的肌肉记忆摩擦。

五、官方自曝的局限

README 的 Known Issues 写得很诚实,值得直接引用:

  1. 不显示资源总数——因为大多数 AWS API 本身不返回总数,这不是 taws 偷懒,是上游 API 限制;
  2. 全局服务永远走 us-east-1——IAM、Route53、CloudFront 这类全局资源强制区域,切区域无效;
  3. 部分资源需要更细的 IAM 权限,基础只读策略不一定够;
  4. SSM shell 仅支持 Linux 实例,Windows 实例走不了 shell 连接。

六、客观分析:优势与局限

优势:

  1. 安全姿态正确:凭证全本地、有只读开关、可对接 LocalStack,符合”工具能碰生产钥匙”的最低信任要求;
  2. 工程完整度高:从 SSO、角色扮演、外部 ID、chained role 到企业 CA,企业账号常见的坑它都覆盖了;
  3. 跨平台:macOS(Apple Silicon/Intel)、Linux(musl)、Windows 都有预编译产物,Docker 镜像也挂在 ghcr。

局限:

  1. 覆盖是”日常 95%“而非全量:想找一个边角 AWS 服务大概率要提 issue;
  2. 写操作面仍然窄:目前实质性写操作主要集中在 EC2 生命周期,远不是 AWS CLI 的等价物;
  3. 文档数字自相矛盾(94+ vs 51),反映项目仍在快速迭代、文档没跟上。

七、适合谁

  • 天天在终端里、烦透了开浏览器点 AWS 控制台的工程师;
  • 需要在多 Profile / 多账号间穿梭、并希望有只读护栏的人;
  • 用 LocalStack 做本地云仿真、想把 TUI 一起指过去调试的团队。如果你主要做基础设施即代码(Terraform/Pulumi)、很少手工单点操作资源,那控制台或 IaC 就够了。

参考来源