首頁 > 後端開發 > Golang > ecstop:我的 CLI 工具,可輕鬆停止 ECS 資源

ecstop:我的 CLI 工具,可輕鬆停止 ECS 資源

Susan Sarandon
發布: 2025-01-06 06:16:08
原創
444 人瀏覽過

ecstop: My CLI Tool to Stop ECS Resources Easily

介紹

2024 年 12 月 20 日,我開發並發布了一個名為 ecstop 的 CLI 工具,它「快速批量停止 ECS 資源」。

https://github.com/t-kikuc/ecstop

名稱 ecstop 是 ECS Stop 的組合。我將其發音為“ee-c-stop”。

在這篇文章中,我將介紹 ecstop 的概述、理念和未來前景。

3行總結

  • ecstop 可以快速批次停止 ECS 服務、任務和容器實例(EC2)
  • 主要目的是輕鬆降低開發環境的成本。
  • brew install t-kikuc/tap/ecstop 後,無需任何設定檔即可立即使用。

發展背景

我經常在測試 ECS 本身或開發/測試 PipeCD 時建立 ECS 資源。

由於 ECS 對運行任務和容器實例收費,因此我想停止未使用的任務和容器實例。

由於是為了測試,我不想刪除叢集或服務。他們是免費的。

但是,由於我創建了很多資源,從AWS控制台一一停止它們很麻煩。

  • 要從控制台停止某個服務,您需要進入 ECS 控制台,選擇該服務並“更新”,將每個服務的任務數設為 0 並“確認更新”。

  • IaC 和部署工具是為生產使用而設計的,需要仔細更改配置文件,不適合「快速停止多個資源」。

我一直使用shell腳本/Go來批次阻止它們,但我經常忘記如何呼叫它們。
因此,我決定製作一個合適的 CLI 工具。

安裝

您可以使用以下指令安裝 ecstop(自製):

$ brew install t-kikuc/tap/ecstop
登入後複製
登入後複製

要啟用自動完成功能,請參閱此處。

特徵

有關選項的詳細信息,請參閱 README。

1. 零規模服務

$ ecstop services --cluster xxx
登入後複製

這會將 xxx 叢集中所有服務的desiredCount設為0。這也會自動停止連結到服務的任務。

2. 停止任務

$ ecstop tasks --cluster xxx --standalone
登入後複製

--standalone 標誌停止未連結到服務的任務。

這適用於群組前綴不是 service 的任務:.

要停止與服務連結的任務,請使用 ecstop 服務,因為即使在 ecstop 任務停止後,服務也可以啟動新任務。

3.停止容器執行個體(EC2)

$ ecstop instances --cluster xxx
登入後複製

這將停止(≠終止)連結到 xxx 叢集的所有容器實例。

4.執行以上三合一命令

$ ecstop all --cluster xxx
登入後複製

此指令相當於:

$ brew install t-kikuc/tap/ecstop
登入後複製
登入後複製

其他有用的標誌

  • --all-cluster:取代 --cluster xxx,對區域中的所有 ECS 叢集執行停止操作。
  • --profile yyy:您可以指定AWS設定檔。
  • --region zzz: 可以指定AWS區域。

哲學

1. 不可刪除

ecstop 不會刪除不必要的 ECR 影像或任務定義

雖然任務和容器實例(EC2)的運作成本很高,但ECR鏡像相對便宜,而且任務定義是免費的,所以我忽略了它們。服務和叢集本身也是免費的,因此不會被刪除。

因此,我沒有在工具名稱中包含“clean”或“delete”。

如果“我想刪除它,因為它沒有被使用並且礙眼”,從 AWS 控制台選擇多個項目並在人工判斷後刪除它們會更容易。

此外,為了清理 ECR 影像,最好使用 fujiwara-san 創建的名為 ecrm 的工具。

https://github.com/fujiwara/ecrm

2. 專門針對大量操作

我已最小化「要停止哪些資源」的選擇器選項。

AWS控制台足以停止單一資源,並且在測試環境(不是登台等)中,不應該有任何「絕對不能停止」的資源。尤其是在晚上,我們要阻止它們。

前景

  • 我想在 AWS 上定期執行 ecstop 作為計畫流程(例如,每天 24:00)。
    • 每次AWS認證從本地呼叫都很麻煩。
    • 我正在考慮為 EventBridge Lambda 建立 IaC。
    • 由於是測試環境,完成通知似乎沒有必要。我不確定錯誤通知。
  • 目前,我沒有任何「我想添加此選項」。
    • 如果有任何要求,我會考慮。

我使用的主要工具

ecstop 是基於典型的 Go CLI 開發堆疊。

  • Golang
  • 眼鏡蛇
  • GoReleaser
  • 自製水龍頭

結論

這是我第一次發布 CLI 工具,我學到了很多東西,包括如何定義哲學。

如果您有任何回饋或要求,請透過 https://github.com/t-kikuc/ecstop 告訴我。

其實我正在開發另一個與ECS外部部署相關的CLI工具,計劃很快就會發布。

以上是ecstop:我的 CLI 工具,可輕鬆停止 ECS 資源的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:dev.to
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板