2024 年 12 月 20 日,我開發並發布了一個名為 ecstop 的 CLI 工具,它「快速批量停止 ECS 資源」。
https://github.com/t-kikuc/ecstop
名稱 ecstop 是 ECS Stop 的組合。我將其發音為“ee-c-stop”。
在這篇文章中,我將介紹 ecstop 的概述、理念和未來前景。
我經常在測試 ECS 本身或開發/測試 PipeCD 時建立 ECS 資源。
由於 ECS 對運行任務和容器實例收費,因此我想停止未使用的任務和容器實例。
由於是為了測試,我不想刪除叢集或服務。他們是免費的。
但是,由於我創建了很多資源,從AWS控制台一一停止它們很麻煩。
要從控制台停止某個服務,您需要進入 ECS 控制台,選擇該服務並“更新”,將每個服務的任務數設為 0 並“確認更新”。
IaC 和部署工具是為生產使用而設計的,需要仔細更改配置文件,不適合「快速停止多個資源」。
我一直使用shell腳本/Go來批次阻止它們,但我經常忘記如何呼叫它們。
因此,我決定製作一個合適的 CLI 工具。
您可以使用以下指令安裝 ecstop(自製):
$ brew install t-kikuc/tap/ecstop
要啟用自動完成功能,請參閱此處。
有關選項的詳細信息,請參閱 README。
$ ecstop services --cluster xxx
這會將 xxx 叢集中所有服務的desiredCount設為0。這也會自動停止連結到服務的任務。
$ ecstop tasks --cluster xxx --standalone
--standalone 標誌停止未連結到服務的任務。
這適用於群組前綴不是 service 的任務:.
要停止與服務連結的任務,請使用 ecstop 服務,因為即使在 ecstop 任務停止後,服務也可以啟動新任務。
$ ecstop instances --cluster xxx
這將停止(≠終止)連結到 xxx 叢集的所有容器實例。
$ ecstop all --cluster xxx
此指令相當於:
$ brew install t-kikuc/tap/ecstop
ecstop 不會刪除不必要的 ECR 影像或任務定義。
雖然任務和容器實例(EC2)的運作成本很高,但ECR鏡像相對便宜,而且任務定義是免費的,所以我忽略了它們。服務和叢集本身也是免費的,因此不會被刪除。
因此,我沒有在工具名稱中包含“clean”或“delete”。
如果“我想刪除它,因為它沒有被使用並且礙眼”,從 AWS 控制台選擇多個項目並在人工判斷後刪除它們會更容易。
此外,為了清理 ECR 影像,最好使用 fujiwara-san 創建的名為 ecrm 的工具。
https://github.com/fujiwara/ecrm
我已最小化「要停止哪些資源」的選擇器選項。
AWS控制台足以停止單一資源,並且在測試環境(不是登台等)中,不應該有任何「絕對不能停止」的資源。尤其是在晚上,我們要阻止它們。
ecstop 是基於典型的 Go CLI 開發堆疊。
這是我第一次發布 CLI 工具,我學到了很多東西,包括如何定義哲學。
如果您有任何回饋或要求,請透過 https://github.com/t-kikuc/ecstop 告訴我。
其實我正在開發另一個與ECS外部部署相關的CLI工具,計劃很快就會發布。
以上是ecstop:我的 CLI 工具,可輕鬆停止 ECS 資源的詳細內容。更多資訊請關注PHP中文網其他相關文章!