- taws เป็นเครื่องมือ UI ที่พัฒนาด้วย Rustซึ่งช่วยให้สำรวจและจัดการทรัพยากร AWS ได้ในสภาพแวดล้อมเทอร์มินัล ทำให้สามารถสังเกตและควบคุมโครงสร้างพื้นฐาน AWS ได้แบบเรียลไทม์
- รองรับทรัพยากรมากกว่า 94 ประเภทและบริการ AWS มากกว่า 60 รายการ พร้อมความสามารถในการสลับโปรไฟล์และรีเจียน, การควบคุมด้วยคีย์บอร์ดสไตล์ Vim, และฟังก์ชันเติมคำอัตโนมัติ
- รองรับการเริ่ม·หยุด·ยุติอินสแตนซ์ EC2, การดูรายละเอียดแบบ JSON/YAMLของทรัพยากร, รวมถึงความสามารถด้านการกรองและการรีเฟรชแบบเรียลไทม์
- มีวิธีติดตั้งหลากหลายบน macOS, Linux และ Windows เช่น Homebrew, Cargo, การดาวน์โหลดไบนารี และต้องมีการตั้งค่าข้อมูลรับรอง AWS และสิทธิ์ IAM
- เป็นโปรเจกต์โอเพนซอร์สที่สร้างด้วยไลบรารี Ratatui โดยได้รับแรงบันดาลใจจาก k9s และมอบประสบการณ์การจัดการที่มองเห็นภาพและใช้งานได้อย่างเป็นธรรมชาติให้กับผู้ใช้ AWS CLI
ภาพรวมของ taws
- taws เป็นตัวดูและตัวจัดการทรัพยากร AWS บนเทอร์มินัล ที่ออกแบบมาเพื่อให้สามารถสำรวจและจัดการโครงสร้างพื้นฐาน AWS ได้อย่างง่ายดาย
- คอยเฝ้าติดตามการเปลี่ยนแปลงของทรัพยากร AWS อย่างต่อเนื่อง และมีความสามารถในการรันคำสั่งกับทรัพยากรที่ตรวจพบ
- เป้าหมายของโปรเจกต์คือการทำให้การจัดการโครงสร้างพื้นฐาน AWS เรียบง่ายและมีประสิทธิภาพมากขึ้น
- เผยแพร่ภายใต้MIT License และเขียนด้วยภาษา Rust
ฟีเจอร์หลัก
- รองรับหลายโปรไฟล์และหลายรีเจียน ทำให้สลับบัญชี AWS และรีเจียนต่าง ๆ ได้อย่างสะดวก
- รองรับการสำรวจและจัดการทรัพยากรมากกว่า 94 ประเภทและบริการมากกว่า 60 รายการ
- มีฟังก์ชันรีเฟรชแบบเรียลไทม์ ที่สามารถอัปเดตสถานะทรัพยากรได้ด้วยการกดปุ่มเพียงครั้งเดียว
- การควบคุมด้วยคีย์บอร์ดคล้าย Vim เพื่อการนำทางและสั่งงานอย่างรวดเร็ว
- มีฟังก์ชันควบคุมอินสแตนซ์ EC2ในตัว (เริ่ม, หยุด, ยุติ)
- รองรับการดูรายละเอียดแบบ JSON/YAML, การกรองตามชื่อ·คุณสมบัติ, และการเติมคำอัตโนมัติแบบ fuzzy matching
วิธีติดตั้ง
- Homebrew(macOS/Linux) :
brew install huseyinbabal/tap/taws
- ดาวน์โหลดไบนารีที่สร้างไว้ล่วงหน้า: มีแพ็กเกจแยกตามสถาปัตยกรรมสำหรับ macOS, Linux และ Windows
- ติดตั้งผ่าน Cargo:
cargo install taws
- บิลด์จากซอร์ส: ต้องใช้ Rust 1.70 ขึ้นไป พร้อม C compiler และ linker
- มีคำสั่งสำหรับติดตั้งเครื่องมือพัฒนาตามแพลตฟอร์ม (เช่น
xcode-select --install, sudo apt install build-essential -y)
การรันและการตั้งค่า
- ข้อมูลรับรอง AWS จะถูกตรวจพบจากเส้นทางมาตรฐาน เช่น
aws configure, ตัวแปรสภาพแวดล้อม, IAM role, ไฟล์ ~/.aws/credentials
- สิทธิ์ IAM ต้องมีอย่างน้อย
Describe*, List*
- ตัวอย่างการรัน:
- รันด้วยโปรไฟล์เริ่มต้น:
taws
- ระบุโปรไฟล์เฉพาะ:
taws --profile production
- ระบุรีเจียนเฉพาะ:
taws --region us-west-2
- เปิดใช้งาน debug log:
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 ยุติ
บริการที่รองรับ
- รองรับบริการ AWS หลัก 30 รายการ (ครอบคลุมการใช้งานรวมมากกว่า 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: ข้อมูลยืนยันตัวตน
ปัญหาที่ทราบ
- ทรัพยากรบางส่วนอาจไม่สามารถเข้าถึงได้ด้วยนโยบายอ่านอย่างเดียวเริ่มต้น
- จำนวนทรัพยากรอาจเปลี่ยนแปลงระหว่างการโหลดเนื่องจาก pagination
- บริการแบบ global บางรายการ เช่น 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 repository
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
ไม่ค่อยเข้าใจว่าเสน่ห์ของ TUI คืออะไร
จุดเด่นของ CLI คือ การทำสคริปต์และการประกอบใช้งานร่วมกัน แต่ TUI ให้ความรู้สึกเหมือนเป็นแค่ UI บนเบราว์เซอร์เวอร์ชันความละเอียดต่ำ
ใน GUI แทบไม่ค่อยเห็นอินเทอร์เฟซคีย์บอร์ดที่แสดงพลังแบบนี้
รันแล้วไม่ค่อยทำงาน
กังวลเรื่องการเพิ่ม เลเยอร์มิดเดิลแวร์ เข้าไปบนโครงสร้างพื้นฐานของ AWS เพราะคำสั่งผิดหรือบั๊กอาจทำให้เกิดผลเสียร้ายแรงได้
โดยเฉพาะบน AWS ที่มักมีฐานข้อมูลแบบมีสถานะหรือเวิร์กโหลด production จำนวนมาก ซึ่งกู้คืนได้ยาก
แม้จะชอบความพยายามในการปรับปรุงประสบการณ์ 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โดยตรงในสภาพแวดล้อม production มองว่า เสี่ยงด้านความปลอดภัย มาก จึงใช้งานจริงได้ยาก
ช่วงนี้รู้สึกว่าสคริปต์เชลล์ยาว 15 บรรทัดมักจะพองตัวกลายเป็น แอป bun CLI หรือ TUI ขนาด 50k บรรทัด ไปเสียหมด
ไม่ได้มาแทน CLI เดิม แต่ควรมองว่าเป็น เครื่องมือเสริม
ถ้าเป็นองค์กรที่มีหลายบัญชี AWS การตั้งค่าโปรไฟล์ล่วงหน้าด้วยเครื่องมืออย่าง aws-sso-util จะช่วยให้สลับบัญชีได้เร็วขึ้นมาก
ตอนแรกที่เห็นชื่อหัวข้อ นึกไปเองชั่วครู่ว่าหมายถึง “AWS UI เปลี่ยนมาเป็นแบบเทอร์มินัล แล้ว” เลยแอบตื่นเต้น
อาจเป็นคำถามงี่เง่า แต่สงสัยว่า TUI จะมองเห็นได้ดีไหมใน เทอร์มินัลพื้นหลังสว่าง
dark mode กลับทำให้ ล้าตา มากกว่า
น่าเสียดายที่บนเทอร์มินัลพื้นหลังสว่างของฉัน แอป แครช ทันทีหลังเปิด เลยยังทดสอบไม่ได้
พอรันครั้งแรกก็ แครช ทันที สภาพแบบนี้คงยากจะดังแบบไวรัล
อยากให้ดีไซเนอร์ TUI ได้ลองสัมผัสอินเทอร์เฟซยุคเมนเฟรมอย่าง Hercules กันมากกว่านี้
ปรัชญาการจัดวาง UI ในยุคนั้น มีหลายอย่างที่น่าเรียนรู้