Mercek: Amazon ECS 桌面 IDE

Mercek 是一款专为简化 Amazon Elastic Container Service (ECS) 管理而设计的桌面 IDE。它为跨多个 AWS 账户和区域的监控、部署和检查 ECS 资源提供统一的界面,从而消除了为执行常见操作任务而频繁切换 AWS Management Console 的需求。

统一资源发现

Mercek 将 ECS 集群、服务和任务聚合到一个单一的资源树中。通过读取现有的 ~/.aws 配置(包括为 SSO、assume-role 和 MFA 配置的配置),该应用程序允许用户同时选择特定的账户和区域进行监控。为了在大型环境中保持响应速度,资源发现过程是并行执行的。

部署跟踪与回滚

Mercek 提供对服务发布(rollouts)状态和部署熔断器(circuit breakers)状态的实时可见性。用户可以识别在部署期间有多少个任务失败,并直接从界面执行回滚到先前任务定义的操作。该工具还支持跨不同环境或区域比较服务的配置,以确保一致性。

集成指标与成本分析

Mercek 将性能和成本数据直接集成到服务视图中:

  • 性能指标: 该应用从 Container Insights 获取 CPU 和内存数据,如果 Insights 被禁用,则回退到标准的 AWS/ECS 指标。对于负载均衡服务,它会显示请求数、延迟和 5xx 错误率。指标可以在一小时到七天的窗口期内查看,并且图表上会叠加部署标记,以便将性能波动与特定的发布过程关联起来。
  • 成本与容量规划: 该工具根据请求的 CPU、内存和任务数量来估算每月 Fargate 成本。它通过分析峰值使用情况来提供“容量规划(right-sizing)”结论,指示服务是配置过度还是配置不足,同时会考虑到 Spot 和 On-Demand 价格之间的差异。

检查与调试工具

Mercek 包含多个用于深入研究运行中容器的工具:

  • 日志查看 (Log Tailing): 用户可以对服务中的所有任务或特定任务的 CloudWatch 日志进行 tail 操作,并具备文本过滤和日志级别高亮功能。
  • 交互式 Shell: 该应用程序支持 ECS Exec 以在运行中的容器上打开一个交互式 shell。
  • 环境与网络: 用户可以检查任务的完整环境(敏感信息将以 ARN 形式掩码处理)并查看网络详情,包括 Elastic Network Interface (ENI)、IP 地址、安全组、子网和 VPC。

拓扑映射与后台监控

Mercek 会根据现有的 AWS 数据自动生成依赖图。该映射会追踪从互联网通过负载均衡器到服务的路径,并通过分析任务定义中的环境变量来推断服务之间的链接。

为了主动监控健康状况,"Sentinel" 功能在后台运行,用于检测如下问题:

  • 运行中的任务数量低于预期数量。
  • 发布过程停滞或失败。
  • 任务抖动(Flapping tasks,即重复重启)。
  • 内存溢出 (OOM) 导致的任务终止(退出码 137)。

通过 Agent Client Protocol 进行 AI 集成

Mercek 允许用户通过 Agent Client Protocol 连接他们自己的编码代理(如 Claude Code),。该代理对 AWS 状态具有只读权限;它可以描述当前状态、解释错误并引导用户进入特定屏幕。如果代理建议进行更改,Mercek 会以 diff 形式展示建议,并提供相应的 AWS CLI 命令,供用户手动批准并应用。

安全与架构

Mercek 是一款本地优先(local-first)的应用,没有后端服务器,也没有遥测数据收集。它直接使用用户的本地凭证与 AWS 通信。

  • 凭证处理: 它使用标准的 ~/.aws 配置链,并且不会将凭证或解析后的敏感信息写入磁盘。
  • 写入权限: 所有写入操作(如扩缩容、部署、停止任务)都需要通过 diff 对话框进行用户的显式确认。

社区反馈与路线图

Mercek 是目前仅在 macOS (Intel 和 Apple Silicon) 上可用,并计划推出 Linux 和 Windows 版本。该项目是开源的开源项目,并在 GitHub 上提供。

社区讨论中,关于使用 Electron 构建应用程序的观点存在分歧。一些用户对内存使用量和 Electron 应用的激增表示担忧,而其他用户则指出,对于像 Mercek 这样专门的工具,其内存占用相对于大型 IDE 或后台进程来说微不足道。

"在我的 M2 MacBook pro 64GB 上,它的内存占用仅为 30.5 Mb... 这款应用占用的内存仅相当于另一张壁纸的量级,完全可以忽略不不计。"

其他用户建议,如果该工具演进为具有插件系统的全面 AWS Console 替代品,那么使用原生框架会更为合适。

Sources