- tawsは、ターミナル環境でAWSリソースを探索・管理できるRust製UIツールで、AWSインフラをリアルタイムに観察・制御可能
- 94種類以上のリソースタイプと60以上のAWSサービスをサポートし、プロファイルおよびリージョンの切り替え、Vimスタイルのキーボード操作、自動補完機能を提供
- EC2インスタンスの起動・停止・終了、リソースのJSON/YAML詳細表示、フィルタリングおよびリアルタイム更新をサポート
- macOS、Linux、WindowsでHomebrew、Cargo、バイナリダウンロードなど複数のインストール方法を提供し、AWS認証情報およびIAM権限の設定が必要
- k9sに着想を得てRatatuiライブラリで作られたオープンソースプロジェクトで、AWS CLIユーザーに視覚的で直感的な管理体験を提供
taws 概要
- tawsは、ターミナルベースのAWSリソースビューア兼管理ツールで、AWSインフラを簡単に探索・管理できるよう設計
- AWSリソースの変化を継続的に監視し、観察中のリソースに対するコマンド実行機能を提供
- プロジェクトの目的は、AWSインフラ管理の簡素化と効率化
- MITライセンスで公開されており、Rust言語で記述
主な機能
- マルチプロファイルおよびリージョン対応により、複数のAWSアカウントとリージョンを簡単に切り替え可能
- 94種類以上のリソースタイプと60以上のサービスの探索・管理をサポート
- リアルタイム更新機能により、単一キー入力でリソース状態をリフレッシュ可能
- Vim風キーボード操作による高速な探索とコマンド実行
- EC2インスタンス制御(起動、停止、終了)機能を内蔵
- JSON/YAML詳細表示、名前・属性ベースのフィルタリング、ファジーマッチング自動補完機能を提供
インストール方法
- Homebrew(macOS/Linux):
brew install huseyinbabal/tap/taws
- 事前ビルド済みバイナリのダウンロード: macOS、Linux、Windows向けにアーキテクチャ別パッケージを提供
- Cargoインストール:
cargo install taws
- ソースビルド: Rust 1.70以上、Cコンパイラおよびリンカが必要
- プラットフォーム別の開発ツールインストールコマンドを提供(例:
xcode-select --install, sudo apt install build-essential -y)
実行と設定
- AWS認証情報は、
aws configure、環境変数、IAMロール、~/.aws/credentialsファイルなどの標準パスから認識
- IAM権限は、最低限
Describe*、List* 権限が必要
- 実行例:
- デフォルトプロファイルで実行:
taws
- 特定プロファイルを指定:
taws --profile production
- 特定リージョンを指定:
taws --region us-west-2
- デバッグログを有効化:
taws --log-level debug
- ログファイルのパス:
- Linux:
~/.config/taws/taws.log
- macOS:
~/Library/Application Support/taws/taws.log
- Windows:
%APPDATA%\taws\taws.log
キーバインド
- ナビゲーション:
j/k または矢印キーで移動、Ctrl-u/d でページ移動
- ビュー切り替え:
: でリソースセレクタを開く、Enter または d で詳細表示
- 操作:
r 更新、/ フィルタ、p プロファイル切り替え、R リージョン切り替え、q 終了
- EC2制御:
s 起動、S 停止、T 終了
対応サービス
- 30の主要AWSサービスをサポート(全体利用の95%以上をカバー)
- Compute: EC2, Lambda, ECS, EKS, Auto Scaling
- Storage: S3
- Database: RDS, DynamoDB, ElastiCache
- Networking: VPC, Route 53, CloudFront, API Gateway, ELB
- Security: IAM, Secrets Manager, KMS, ACM, Cognito
- Management: CloudFormation, CloudWatch Logs, CloudTrail, SSM, STS
- Messaging: SQS, SNS, EventBridge
- Containers: ECR
- DevOps: CodePipeline, CodeBuild
- Analytics: Athena
環境変数設定
AWS_PROFILE: デフォルトプロファイル
AWS_REGION: デフォルトリージョン
AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_SESSION_TOKEN: 認証情報
既知の問題
- 一部のリソースは、デフォルトの読み取り専用ポリシーではアクセスできない場合がある
- ページネーションにより、読み込み中にリソース数が変動する場合がある
- IAM、Route53、CloudFrontなど一部のグローバルサービスは常に us-east-1 リージョンを使用
貢献と技術基盤
- 貢献は歓迎されており、新しいサービス追加の前には GitHub Discussions での提案が必要
- k9s に着想を得ており、Ratatui(Rust TUIライブラリ)と aws-sigv4(AWS SDK for Rust)を使用
- AWSコミュニティ向けのオープンソースプロジェクトで、622 Star、15 Fork を記録
ライセンス
- MIT License で配布
- ソースおよびライセンスファイルはGitHubリポジトリで確認可能
1件のコメント
Hacker Newsのコメント
TUIの魅力がいまいちよく分からない
CLIの強みはスクリプト化と組み合わせやすさにあるのに、TUIはただのブラウザUIの低解像度版のように感じる
GUIではこうした表現力のあるキーボードインターフェースはあまり見かけない
うまく動かなかった
AWSインフラの上にミドルウェアレイヤーを追加するのが気になる。誤ったコマンドやバグが深刻な結果を招く可能性がある
特にAWSには状態を持つデータベースや本番ワークロードが多く、復旧が難しい
CLI体験を改善しようという試みは良いが、個人的には読み取り専用モードですらためらう
AWS CLIやコンソールなら、少なくとも失敗地点をひとつ減らせる
これはAWS CLIやコンソールも同じだ。
IaCで変更を管理しているなら、視覚的にリソースを探索できるツールは有用だ。AWSコンソールはあまりに使いづらい
さらに別のレイヤーを追加するのはリスクが大きい
k9sのように読み取り専用権限だけで使う用途なら問題なさそう
メニューバーに**「現在の変更コスト(Price of Current Changes)」**のような項目があるといい
変更が0.01ドルなのか10,001ドルなのかをすぐ確認できるように
コードに
// TODO: Handle credential_source, role_arn, source_profile, sso_*というコメントがあるつまり、SSOやマルチアカウントログインをサポートしておらず、
AWS_ACCESS_KEY_IDとAWS_SECRET_ACCESS_KEYを直接使わなければならない本番環境ではセキュリティ上のリスクが大きく、実運用は難しいと思う
最近は15行のシェルスクリプトがいつの間にか50k行のbun CLIやTUIアプリに膨らんでいく感じがする
既存CLIを置き換えるのではなく、補完ツールとして見るべきだ
複数のAWSアカウントを持つ組織なら、aws-sso-utilのようなツールであらかじめプロファイルを設定しておくと、アカウント切り替えがずっと速くなる
タイトルを最初に見たとき、「AWS UIがターミナルベースに変わった」という意味かと思って一瞬わくわくした
ばかげた質問かもしれないが、明るい背景のターミナルでもTUIが見やすいのか気になる
ダークモードはむしろ目の疲れを引き起こす
残念ながら私の明るい背景のターミナルでは、アプリが起動直後にクラッシュしてしまい、試せなかった
起動した瞬間にクラッシュした。この状態ではバズるのは難しい
もっと多くのTUIデザイナーがHerculesのようなメインフレーム時代のインターフェースを体験してみてほしい
その時代のUI設計思想には学ぶ点が多い