e1sをご紹介：k9sに触発されたAWS ECS用CLIツール

AWS ECSをご利用の皆様、FargateでもEC2でも、`aws-cli`を駆使してリソースを管理するのは時に一苦労ですね。`k9s`がKubernetesにもたらした使い勝手の良さをECSにも提供することを目指し、`e1s`はあなたが待ち望んでいたツールになることでしょう。

 ## e1sとは何でしょうか？

https://github.com/keidarcy/e1s

`e1s`は、AWS ECSリソースを簡単に管理するために開発されたコマンドラインインターフェースツールです。KubernetesのCLIツールである[k9s](https://github.com/derailed/k9s)にインスピレーションを受け、AWS ECSの使用者に同等の利便性と効率をもたらすことを目指しています。
![](https://storage.googleapis.com/zenn-user-upload/e04a1aac2fce-20240419.png)
 `e1s`を使えば、ターミナルから直接ECSのクラスタ、サービス、タスク、コンテナを簡単に管理できます。ターミナルベースのワークフローを好む開発者最適なECSの運用ツールです。

 ## e1sの主要機能

 - **リードオンリーモード**: 意図せずに変更を加えることなくECSリソースを閲覧できます。
 - **自動更新**: ECS環境の最新の変更を常に反映します。
 - **リソースの説明**: クラスタ、サービス、タスクなどに関する詳細情報を取得できます。
 - **CloudWatchログ統合**: ログをターミナルから直接表示し、ストリーミングします。
 - **コンテナへのSSHアクセス**: ECS Exec APIを通じて、迅速なデバッグとトラブルシューティングのためにコンテナに直接アクセスできます。
 - **サービスの編集**: 新しいTask DefinitionのJSONをすばやく登録し、登録されたTask Definitionのリビジョンとdesired task countでサービスを即座に更新できます。
 - **ポートフォワーディングセッション**: プライベートサブネット内のサービスにローカルから簡単にアクセスするためのポートフォワーディングを設定できます。
 - **ファイル転送**: ローカルマシンとECSコンテナ間でファイルを移動できます。
 - **テーマ**: にカスタマイズ可能なカラーテーマ

 ## e1sが解決する実際のECS運用課題

 ### コンテナへExec実行

 `e1s`を使えば、ECSコンテナに即時アクセスできます。ecs-exec機能により、実行中のコンテナに直接対話的Exec実行、リアルタイムでのデバッグやコマンドを行い、SSHのように実行が可能です。

![e1s-ssh-demo](https://storage.googleapis.com/zenn-user-upload/8b64c3645673-20240419.gif)

 これは、ECS環境内の問題を迅速に診断し、解決する必要がある開発者やオペレーターにとって特に便利です。

 ### リモートホストポートフォワーディング

`e1s`のリモートホストポートフォワーディング機能を使えば、ECSコンテナを介してローカルマシンからリモートサービスへの安全な接続を作成できます。これは、RDS、ElastiCache、APIなど、プライベートサブネット内に安全に配置されたサービスとやり取りする必要がある開発者にとって非常に貴重です。

![e1s-remote-host-port-forwarding-session-demo](https://storage.googleapis.com/zenn-user-upload/5f0247819011-20240419.gif)

`e1s`を活用して、ネットワークアクセスとセキュリティの複雑さを簡素化し、ローカル開発環境をクラウドに簡単かつ安全に接続する橋渡しをしましょう。

 ### S3バケットを利用したファイル転送

`e1s`を使えば、ローカルシステムとECSコンテナ間のファイル転送を簡単に行えます。新しいアプリケーション設定のデプロイやログの分析のための抽出など、S3バケットを利用することで、転送は迅速かつ安全、信頼性の高いものになります。

![e1s-file-transfer](https://storage.googleapis.com/zenn-user-upload/db55df6f2b28-20240419.png)

 ### 即時タスク定義の登録とサービス更新

`e1s`でデプロイ戦略を革新しましょう。JSONファイルから新しいタスク定義をすばやく登録し、リアルタイムで最新のリビジョンと希望するカウントでECSサービスを更新できます。

![e1s-register-task-definition-demo](https://storage.googleapis.com/zenn-user-upload/266f3aec4aaf-20240419.gif)

`e1s`でECSデプロイのスピードを高めましょう。ターミナルでデプロイ、コンテナの健康状態、ログも監視できます。

### テーマを独自で定義できる

`--theme`で色々なtheme選択できますし、`--config-file`のcolors指定したら、どのような色でも指定可能です。

  - command `e1s --theme dracula`
  - screenshot

![theme-dracula](https://storage.googleapis.com/zenn-user-upload/d6c65a3d422f-20240506.png)

  - config file

```yml
colors:
  BgColor: "#272822"
  FgColor: "#f8f8f2"
  BorderColor: "#a1efe4"
  Black: "#272822"
  Red: "#f92672"
  Green: "#a6e22e"
  Yellow: "#f4bf75"
  Blue: "#66d9ef"
  Magenta: "#ae81ff"
  Cyan: "#a1efe4"
  Gray: "#808080"
```

  - screenshot

![theme-hex](https://storage.googleapis.com/zenn-user-upload/ada31dfbbd5a-20240506.png)

  - config file

```yml
colors:
  BgColor: black
  FgColor: cadeblue
  BorderColor: dodgerblue
  Black: black
  Red: orangered
  Green: palegreen
  Yellow: greenyellow
  Blue: darkslateblue
  Magenta: mediumpurple
  Cyan: lightskyblue
  Gray: lightslategray
```

  - screenshot

  ![theme-w3c](https://storage.googleapis.com/zenn-user-upload/7eedd9145db6-20240506.png)


 ## e1sでECS管理を一歩前進

`e1s`は、ECSの管理を直感的かつ効率的に行うためのユーザーフレンドリーな代替手段を提供することを目指しています。`e1s`がまだ`k9s`と同じレベルの力を持っていないかもしれませんが、進化し続けており、皆さんのフィードバックが成長には不可欠です。

`e1s`が皆さんのECS管理ツールキットに欠かせない存在となり、操作を簡素化し、貴重な時間を節約するお手伝いができれば幸いです！

詳細は [https://github.com/keidarcy/e1s](https://github.com/keidarcy/e1s) をご覧ください。

> https://medium.com/@keidarcy.1015/introducing-e1s-the-k9s-inspired-cli-for-aws-ecs-c492bd124b3c から日本語に翻訳しました。