Mercek: Amazon ECS 的桌面 IDE
Mercek 是一款專為簡化 Amazon Elastic Container Service (ECS) 管理而設計的桌面 IDE。它提供了一個統一的介面,用於監控、部署和檢查跨多個 AWS 帳戶與區域的 ECS 資源,從而無需為了常見的操作任務而頻繁切換 AWS Management Console。
統一資源發現
Mercek 將 ECS 集群 (clusters)、服務 (services) 與任務 (tasks) 整合到單一的資源樹中。透過讀取現有的 ~/.aws 設定檔(包括為 SSO、assume-role 與 MFA 配置的設定檔),該應用程式允許使用者同時選擇特定的帳戶與區域進行監控。為了在大型環境中保持回應速度,資源發現過程是並行執行的。
部署追蹤與回滾
Mercek 提供服務發布 (rollouts) 狀態與部署斷路器 (deployment circuit breakers) 狀態的即時可視化。使用者可以識別在部署期間有多少個任務失敗,並直接從介面執行回滾至先前的任務定義 (task definitions)。該工具也支援比較不同環境或區域間的服務配置,以確保一致性。
整合式指標與成本分析
Mercek 將效能與成本數據直接整合到服務檢視畫面中:
- 效能指標: 應用程式從 Container Insights 獲取 CPU 與記憶體數據,若 Insights 被停用,則會回退至標準的 AWS/ECS 指標。對於負載平衡服務,它會顯示請求數、延遲與 5xx 錯誤率。指標可在一個小時到七天的時間範圍內查看,且圖表上會疊加部署標記,以便將效能變化與特定的發布流程關聯起來。
- 成本與容量規劃: 該工具根據請求的 CPU、記憶體與任務數量來估算每月 Fargate 成本。它會分析峰值使用量以提供「容量規劃 (right-sizing)」建議,指出服務是否配置過多或不足,並同時考量 Spot 與 On-Demand 定價的差異。
檢查與除錯工具
Mercek 包含多個用於深入研究運行中容器的工具:
- 日誌串流 (Log Tailing): 使用者可以針對服務中的所有任務或特定任務串流 CloudWatch 日誌,並具備文字過濾與日誌層級高亮功能。
- 互動式 Shell: 應用程式支援 ECS Exec 以在運行中的容器上開啟互動式 Shell。
- 環境與網路: 使用者可以檢查任務的完整環境變數(秘密資訊會以 ARN 遮蔽),以及網路細節,包括 Elastic Network Interface (ENI)、IP 地址、安全群組 (security groups)、子網 (subnet) 與 VPC。
拓撲圖繪製與背景監控
Mercek 會根據現有的 AWS 數據自動生成依賴圖 (dependency graph)。此圖表追蹤了從網際網路經由負載平衡器到服務的路徑,並透過分析任務定義中的環境變數來推斷服務之間的關聯。
為了主動監控健康狀態,"Sentinel" 功能會在背景執行,以偵測如下問題:
- 運行中的任務數量低於預期數量。
- 部署發布 (rollouts) 停滯或失敗。
- 任務抖動 (flapping tasks)(重複重啟)。
- 記憶體溢出 (OOM) 導致的終止(exit code 137)。
透過 Agent Client Protocol 進行 AI 整合
Mercek 允許使用者透過 Agent Client Protocol 連接自有的編碼代理 (coding agents),例如 Claude Code。該代理對 AWS 狀態僅具備唯讀權限;它可以描述當前狀態、解釋錯誤,並引導使用者前往特定畫面。如果代理建議進行變更,Mercek 會將建議以 diff 形式呈現,並提供對應的 AWS CLI 指令,供使用者手動核准並套用。
安全性與架構
Mercek 是一款「本地優先 (local-first)」的應用程式,沒有後端伺服器,也沒有遙測數據 (telemetry)。它直接使用使用者的本地憑證與 AWS 通訊。
- 憑證處理: 它使用標準的
~/.aws設定檔鏈,且不會將憑證或解析後的秘密資訊寫入磁碟。 - 寫入權限: 所有寫入操作(如擴展規模、部署、停止任務)都需要透過 diff 對話框進行使用者的顯式式核准。
社群回應與開發路線圖
Mercek 目前已在 macOS (Intel 與 Apple Silicon) 上提供,並計畫推出 Linux 與 Windows 版本。該專案是開源專案,可在 GitHub 上取得。
社群討論中,對於使用 Electron 進行構建的爭議點在於應用程式的開發框架。雖然部分使用者對記憶體使用量與 Electron 應用程式的激增感到擔憂,,但其他人則指出,對於像 Mercek 這樣專門的工具,其記憶體佔用與大型 IDE 或背景程序相比而言微不足道。
"在我的 M2 MacBook pro 64GB 上,它的記憶體使用量僅為 30.5 Mb... 這款應用程式佔用的記憶體僅相當於一張桌布的量,完全不算什麼。"
其他使用者建議,如果該工具未來演進為具備插件系統的全面性 AWS Console 替代方案,則使用原生框架會更為合適。