- taws là công cụ UI viết bằng Rust cho phép duyệt và quản lý tài nguyên AWS trong môi trường terminal, giúp quan sát và điều khiển hạ tầng AWS theo thời gian thực
- Hỗ trợ hơn 94 loại tài nguyên và hơn 60 dịch vụ AWS, đồng thời cung cấp chuyển đổi profile và region, điều khiển bàn phím kiểu Vim, và tự động hoàn thành
- Hỗ trợ khởi động·dừng·chấm dứt các EC2 instance, xem chi tiết JSON/YAML của tài nguyên, cùng các tính năng lọc và cập nhật theo thời gian thực
- Cung cấp nhiều cách cài đặt trên macOS, Linux, Windows như Homebrew, Cargo, tải binary, đồng thời cần cấu hình AWS credentials và quyền IAM
- Là dự án mã nguồn mở được xây dựng bằng thư viện Ratatui, lấy cảm hứng từ k9s, mang lại trải nghiệm quản trị trực quan bằng hình ảnh cho người dùng AWS CLI
Tổng quan về taws
- taws là trình xem và quản lý tài nguyên AWS dựa trên terminal, được thiết kế để giúp việc duyệt và quản lý hạ tầng AWS trở nên dễ dàng hơn
- Liên tục giám sát các thay đổi của tài nguyên AWS và cung cấp khả năng thực thi lệnh đối với các tài nguyên được quan sát
- Mục tiêu của dự án là đơn giản hóa và tăng hiệu quả quản lý hạ tầng AWS
- Được phát hành theo giấy phép MIT và viết bằng ngôn ngữ Rust
Tính năng chính
- Hỗ trợ nhiều profile và region, cho phép chuyển đổi dễ dàng giữa nhiều tài khoản AWS và region
- Hỗ trợ duyệt và quản lý hơn 94 loại tài nguyên và hơn 60 dịch vụ
- Tính năng cập nhật theo thời gian thực cho phép làm mới trạng thái tài nguyên chỉ với một phím bấm
- Điều khiển bàn phím kiểu Vim để điều hướng và thực thi lệnh nhanh chóng
- Tích hợp sẵn tính năng điều khiển EC2 instance (khởi động, dừng, chấm dứt)
- Cung cấp xem chi tiết JSON/YAML, lọc theo tên·thuộc tính, và tự động hoàn thành khớp mờ
Cách cài đặt
- Homebrew(macOS/Linux) :
brew install huseyinbabal/tap/taws
- Tải binary dựng sẵn: cung cấp gói theo từng kiến trúc cho macOS, Linux, Windows
- Cài bằng Cargo:
cargo install taws
- Build từ source: cần Rust 1.70 trở lên, trình biên dịch C và linker
- Cung cấp lệnh cài công cụ phát triển theo từng nền tảng (ví dụ:
xcode-select --install, sudo apt install build-essential -y)
Chạy và cấu hình
- AWS credentials được nhận diện từ các đường dẫn tiêu chuẩn như
aws configure, biến môi trường, IAM role, tệp ~/.aws/credentials
- Quyền IAM tối thiểu cần có là
Describe*, List*
- Ví dụ chạy:
- Chạy với profile mặc định:
taws
- Chỉ định profile cụ thể:
taws --profile production
- Chỉ định region cụ thể:
taws --region us-west-2
- Bật log debug:
taws --log-level debug
- Đường dẫn tệp log:
- Linux:
~/.config/taws/taws.log
- macOS:
~/Library/Application Support/taws/taws.log
- Windows:
%APPDATA%\taws\taws.log
Key binding
- Điều hướng: di chuyển bằng
j/k hoặc phím mũi tên, chuyển trang bằng Ctrl-u/d
- Chuyển đổi view: mở bộ chọn tài nguyên bằng
:, xem chi tiết bằng Enter hoặc d
- Tác vụ:
r làm mới, / lọc, p chuyển profile, R chuyển region, q thoát
- Điều khiển EC2:
s khởi động, S dừng, T chấm dứt
Dịch vụ được hỗ trợ
- Hỗ trợ 30 dịch vụ AWS cốt lõi (bao phủ hơn 95% nhu cầu sử dụng tổng thể)
- 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
Thiết lập biến môi trường
AWS_PROFILE: profile mặc định
AWS_REGION: region mặc định
AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_SESSION_TOKEN: thông tin xác thực
Các vấn đề đã biết
- Một số tài nguyên có thể không truy cập được với policy chỉ đọc mặc định
- Do phân trang, số lượng tài nguyên có thể thay đổi trong lúc đang tải
- Một số dịch vụ global như IAM, Route53, CloudFront luôn sử dụng region us-east-1
Đóng góp và nền tảng kỹ thuật
- Hoan nghênh đóng góp; trước khi thêm dịch vụ mới, cần đề xuất trong GitHub Discussions
- Lấy cảm hứng từ k9s, sử dụng Ratatui (thư viện Rust TUI) và aws-sigv4 (AWS SDK for Rust)
- Là dự án mã nguồn mở dành cho cộng đồng AWS, hiện ghi nhận 622 Star và 15 Fork
Giấy phép
- Phát hành theo MIT License
- Có thể xem mã nguồn và tệp giấy phép trong kho lưu trữ GitHub
1 bình luận
Ý kiến trên Hacker News
Tôi không thực sự hiểu sức hấp dẫn của TUI
CLI có ưu điểm là có thể script hóa và tính kết hợp, còn TUI thì chỉ giống như một phiên bản độ phân giải thấp của UI trên trình duyệt
Trong GUI hiếm khi thấy những giao diện bàn phím giàu khả năng biểu đạt như vậy
Tôi đã không chạy được nó
Tôi lo ngại về việc thêm một lớp middleware lên trên hạ tầng AWS. Lệnh sai hoặc lỗi có thể dẫn tới hậu quả nghiêm trọng
Đặc biệt AWS có rất nhiều cơ sở dữ liệu có trạng thái và workload production nên rất khó khôi phục
Tôi thích những nỗ lực cải thiện trải nghiệm CLI, nhưng cá nhân tôi thấy ngay cả chế độ chỉ đọc cũng khiến tôi lưỡng lự
AWS CLI hay console ít nhất cũng giảm bớt một điểm có thể hỏng
AWS CLI hay console cũng vậy thôi.
Nếu bạn quản lý thay đổi bằng IaC, thì công cụ giúp duyệt tài nguyên bằng trực quan vẫn rất hữu ích. AWS console quá bất tiện
Thêm một lớp nữa đồng nghĩa với rủi ro cao hơn
Nếu dùng như k9s với quyền chỉ đọc thì có vẻ ổn
Sẽ hay nếu trên thanh menu có mục như “Chi phí của các thay đổi hiện tại (Price of Current Changes)”
Để có thể thấy ngay thay đổi đó là 0,01 đô hay 10.001 đô
Trong code có chú thích
// TODO: Handle credential_source, role_arn, source_profile, sso_*Tức là nó không hỗ trợ SSO hay đăng nhập đa tài khoản, và phải dùng trực tiếp
AWS_ACCESS_KEY_IDcùngAWS_SECRET_ACCESS_KEYTrong môi trường production điều này có rủi ro bảo mật lớn nên tôi nghĩ khó dùng thực tế
Dạo này có cảm giác một shell script 15 dòng rất nhanh sẽ phình thành một ứng dụng CLI hoặc TUI bun 50k dòng
Nó không thay thế CLI hiện có mà nên được xem là công cụ bổ sung
Nếu là tổ chức có nhiều tài khoản AWS, cấu hình sẵn profile bằng công cụ như aws-sso-util sẽ giúp chuyển tài khoản nhanh hơn nhiều
Lúc mới đọc tiêu đề, tôi đã tưởng nó có nghĩa là “UI của AWS đã chuyển sang dạng terminal” nên phấn khích trong chốc lát
Có thể là câu hỏi ngớ ngẩn, nhưng tôi tò mò không biết TUI có hiển thị tốt trên terminal nền sáng không
Dark mode ngược lại còn gây mỏi mắt
Đáng tiếc là trên terminal nền sáng của tôi, ứng dụng bị crash ngay sau khi chạy nên tôi không kiểm tra được
Nó crash ngay từ lần chạy đầu tiên. Với tình trạng này thì khó mà lan truyền rộng được
Tôi muốn nhiều nhà thiết kế TUI hơn nữa từng trải nghiệm các giao diện thời mainframe như Hercules
Triết lý tổ chức UI của thời đó có rất nhiều điều đáng học hỏi