ホームページ > バックエンド開発 > Golang > ecstop: ECS リソースを簡単に停止するための CLI ツール

ecstop: ECS リソースを簡単に停止するための CLI ツール

Susan Sarandon
リリース: 2025-01-06 06:16:08
オリジナル
400 人が閲覧しました

ecstop: My CLI Tool to Stop ECS Resources Easily

導入

2024 年 12 月 20 日に、「ECS リソースを一括で迅速に停止する」ecstop という CLI ツールを開発してリリースしました。

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

ecstop という名前は、ECS Stop を組み合わせたものです。私は「イーシーストップ」と発音します。

この記事では、ecstopの概要、理念、今後の展望について紹介します。

3 行の要約

  • ecstop はECS サービス、タスク、コンテナ インスタンス (EC2) を一括で迅速に停止できます
  • 主な目的は、開発環境のコストを簡単に削減することです。
  • brew install t-kikuc/tap/ecstop 後は、設定ファイルなしですぐに使用できるようになります。

開発の背景

ECS 自体をテストしたり、PipeCD を開発/テストしたりするときに、ECS リソースを作成することがよくありました。

ECS はタスクとコンテナ インスタンスの実行に料金を請求するため、未使用のものを停止したいと思いました。

テスト用なので、クラスターやサービスは削除したくありませんでした。無料です。

しかし、大量のリソースを作成したため、AWS コンソールから 1 つずつ停止するのは面倒でした。

  • コンソールからサービスを停止するには、ECS コンソールに移動し、サービスを選択して「更新」し、タスクの数を 0 に設定して、各サービスの「更新を確認」する必要があります。

  • IaC およびデプロイメント ツールは運用環境での使用を目的として設計されており、構成ファイルの慎重な変更が必要です。これは「複数のリソースを迅速に停止する」には適していません。

シェルスクリプト/Go を使って一括停止していたのですが、よく呼び出し方を忘れてしまいました。
そこで、適切な CLI ツールを作成することにしました。

インストール

次のコマンド (Homebrew) を使用して 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. 上記 3 つを 1 つのコマンドで実行します

$ 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 さんが作成した ecrm というツールを使用すると良いです。

https://github.com/Fujiwara/ecrm

2. 一括操作に特化

「どのリソースを停止するか」のセレクター オプションを最小限に抑えました。

個々のリソースを停止するには AWS コンソールで十分であり、テスト環境 (ステージングなどではない) では、「絶対に停止してはいけない」リソースは存在しないはずです。特に夜はやめましょう

今後の展望

  • AWS で ecstop をスケジュールされたプロセスとして定期的に実行したいと考えています (例: 毎日 24:00)。
    • AWSの認証がローカルからだと毎回呼び出すのが面倒
    • EventBridge Lambda 用の IaC を作成しようと考えています。
    • テスト環境なので完了通知は不要のようです。エラー通知についてはよくわかりません。
  • 現時点では「このオプションを追加したい」というものはありません。
    • ご要望があれば検討させていただきます。

使用した主なツール

ecstop は、典型的な Go CLI 開発スタックに基づいています。

  • ゴラン
  • コブラ
  • ゴーリリーサー
  • 自作タップ

結論

CLI ツールを公開するのは初めてで、哲学の定義方法など、多くのことを学びました。

フィードバックやリクエストがございましたら、https://github.com/t-kikuc/ecstop までお知らせください。

実は、ECS の外部展開に関連する別の CLI ツールを開発中で、近々リリースする予定です。

以上がecstop: ECS リソースを簡単に停止するための CLI ツールの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート