Gemini CLI là công cụ agentic coding chạy trong terminal do Google phát hành, dùng model Gemini làm engine chính, hỗ trợ MCP giống các agent CLI khác trong khoá học này. Điểm mạnh thường được nhắc tới của Gemini là context window (cửa sổ ngữ cảnh) rất lớn và khả năng xử lý dữ liệu dạng bảng/số liệu tốt — rất hợp với hai việc: đọc log CloudWatch dài và phân tích chi phí AWS trải dài nhiều dịch vụ, nhiều ngày. Bài này hướng dẫn cài đặt AWS MCP cho Gemini CLI, cách chạy Logs Insights query, một ca thực tế tìm nguồn chi phí lớn nhất trong account, và cách kết quả của Gemini CLI khác gì so với Claude Code khi cùng nhận một prompt.
Cài Đặt và Kết Nối AWS MCP vào Gemini CLI
Gemini CLI đọc cấu hình MCP server từ file settings.json, có thể đặt ở scope project (.gemini/settings.json trong root repo) hoặc scope user (~/.gemini/settings.json), dùng key mcpServers — cùng format với Claude Code và nhiều agent CLI khác dựa trên chuẩn MCP phổ biến, nên nếu bạn đã cấu hình AWS MCP ở công cụ khác, gần như chỉ cần copy nguyên block.
Bước 1 — đăng nhập AWS SSO như thường lệ, tạo riêng một profile cho mục đích đọc dữ liệu qua AI:
aws configure sso --profile ai-agent-sso
aws sso login --profile ai-agent-sso
Bước 2 — tạo file .gemini/settings.json ở root project:
{
"mcpServers": {
"aws-mcp": {
"command": "uvx",
"args": ["awslabs.core-mcp-server@latest"],
"env": {
"AWS_PROFILE": "ai-agent-sso",
"AWS_REGION": "ap-southeast-1"
}
}
}
}
Bước 3 — khởi động lại gemini trong terminal, dùng lệnh nội bộ liệt kê MCP server (thường là /mcp hoặc tương đương trong phiên bản bạn dùng) để xác nhận aws-mcp đã ở trạng thái connected và xem danh sách tool được expose.
Một lưu ý riêng với Gemini CLI: vì công cụ này hỗ trợ cả chế độ tương tác (interactive) và chế độ chạy một lần kèm prompt qua flag (non-interactive, dùng trong script/CI), bạn cần đảm bảo biến môi trường AWS credentials (hoặc file config SSO) khả dụng ở cả hai chế độ chạy — một lỗi thường gặp là chạy được ở terminal cá nhân nhưng lỗi khi gọi qua script tự động vì thiếu session SSO hợp lệ trong môi trường đó.
Mẹo: Nếu định dùng Gemini CLI + AWS MCP trong pipeline tự động (ví dụ script tổng hợp báo cáo hạ tầng hàng ngày), chuyển sang dùng IAM role gán cho compute chạy script (EC2/ECS task role) thay vì SSO profile cá nhân — SSO token hết hạn sẽ làm job tự động fail âm thầm vào sáng hôm sau.
Chạy Truy Vấn CloudWatch Insights Từ Gemini CLI
Context window lớn của Gemini CLI phát huy giá trị rõ nhất khi bạn cần agent đọc và tổng hợp một lượng log lớn trong một lần, ví dụ dò lỗi trải dài nhiều giờ hoặc nhiều function cùng lúc:
Prompt: "Chạy CloudWatch Logs Insights trên 3 log group:
/aws/lambda/checkout-service-prod, /aws/lambda/payment-service-prod,
/aws/lambda/inventory-service-prod, trong 4 giờ qua, lọc các message chứa
'ERROR', group theo tên log group và theo message pattern, đếm số lần
xuất hiện, sort giảm dần theo số lượng."
Query Logs Insights tương ứng mà agent thường tạo ra và chạy qua tool AWS MCP:
fields @timestamp, @message, @log
| filter @message like /ERROR/
| stats count(*) as occurrences by @log, @message
| sort occurrences desc
| limit 50
Vì có thể giữ nhiều log group, nhiều khoảng thời gian trong context cùng lúc, Gemini CLI khá hợp cho các câu hỏi dạng so sánh xu hướng:
Prompt: "So sánh số lượng lỗi 'Task timed out' của function
checkout-service-prod giữa tuần này và tuần trước, theo từng ngày. Cho
tôi biết ngày nào tăng bất thường và nghi vấn nguyên nhân dựa trên
deployment history nếu có."
Với câu hỏi dạng so sánh theo thời gian này, agent cần gọi Logs Insights nhiều lần với khoảng thời gian khác nhau rồi tự tổng hợp bảng so sánh — đây là việc dễ làm sai (lệch timezone, lệch khoảng ngày) nếu bạn không nói rõ mốc thời gian tuyệt đối.
Mẹo: Luôn chỉ rõ mốc thời gian tuyệt đối (ví dụ "từ 2026-08-15 00:00 đến 2026-08-21 23:59, giờ Việt Nam") khi hỏi so sánh nhiều khoảng thời gian — nói tương đối như "tuần này, tuần trước" dễ khiến agent tính sai mốc do không chắc "hôm nay" theo agent là ngày nào trong timezone nào.
Ví Dụ Thực Tế: Xác Định Các Nguồn Chi Phí Lớn Nhất Trong Account AWS
Một use case rất thực tế và tốn thời gian nếu làm tay: cuối tháng, finance hỏi tại sao bill AWS tăng, và bạn cần trả lời nhanh. Với AWS MCP có tool truy cập Cost Explorer, quy trình như sau.
Bước 1 — yêu cầu breakdown chi phí theo service trong khoảng thời gian gần nhất:
Prompt: "Lấy chi phí AWS theo từng service trong 30 ngày qua, group theo
service, sort giảm dần theo tổng chi phí. Cho tôi top 10 service tốn
nhiều nhất."
Bước 2 — với service đứng đầu (thường là EC2, RDS, hoặc data transfer), đào sâu theo resource cụ thể:
Prompt: "Service EC2 đang là chi phí lớn nhất. Breakdown tiếp theo instance
type và theo region, để tôi biết instance nào hoặc region nào đang tốn
nhiều nhất."
Bước 3 — đối chiếu với usage thực tế để phát hiện lãng phí (over-provisioned, resource không dùng nhưng vẫn chạy):
Prompt: "Với danh sách EC2 instance đang chạy trong region ap-southeast-1,
lấy thêm metric CPUUtilization trung bình 14 ngày qua cho từng instance.
Instance nào CPU trung bình dưới 5% mà đang dùng instance type lớn (từ
xlarge trở lên), liệt kê riêng — đây là ứng viên để downsize hoặc tắt."
Kết quả thường lộ ra vài pattern quen thuộc: instance dev/staging quên tắt cuối tuần, RDS instance chạy Multi-AZ cho môi trường không cần độ sẵn sàng cao, hoặc data transfer chi phí cao do kiến trúc gọi cross-region không cần thiết. Điểm mạnh của Gemini CLI ở bước này là khả năng giữ đồng thời dữ liệu cost, dữ liệu usage, và context trò chuyện trước đó (ví dụ bước 1, bước 2) để tự nối logic mà không cần bạn nhắc lại.
Mẹo: Luôn yêu cầu AI phân tách "chi phí do tăng usage thật" và "chi phí do đổi giá/pricing tier" khi báo cáo biến động cost — nếu không hỏi rõ, AI dễ gộp chung hai nguyên nhân, khiến báo cáo bạn đưa finance nghe hợp lý nhưng sai bản chất vấn đề.
So Sánh Kết Quả AWS MCP Giữa Gemini CLI và Claude Code
Cùng một AWS MCP server, cùng một bộ tool, nhưng chạy qua hai agent CLI khác nhau có thể cho ra chất lượng câu trả lời khác nhau đáng kể, vì phần quyết định gọi tool nào, bao nhiêu lần, và diễn giải kết quả ra sao nằm ở khả năng reasoning và tool-calling của từng model, không nằm ở MCP server.
Theo kinh nghiệm chạy song song hai công cụ trên cùng một nhóm prompt (liệt kê resource, phân tích log, phân tích cost):
- Với câu hỏi cần tổng hợp số liệu lớn, nhiều bảng, nhiều ngày (như phân tích chi phí ở phần trước), Gemini CLI thường trình bày bảng gọn, ít bị cắt do context window lớn, phù hợp khi bạn cần xử lý một lượng dữ liệu Cost Explorer/log lớn trong một lần hỏi.
- Với câu hỏi cần suy luận nhiều bước, đối chiếu chéo giữa code trong repo và resource AWS (như ví dụ debug ở các bài trước trong module), Claude Code thường cho chuỗi lý luận chặt hơn và ít bỏ sót bước xác minh trung gian (ví dụ tự kiểm tra lại policy trước khi kết luận nguyên nhân).
- Cách hai công cụ xử lý an toàn hành động (ví dụ trước khi gọi một tool có khả năng thay đổi state) cũng khác nhau về UI/UX xác nhận — bạn nên tự kiểm tra hành vi mặc định của phiên bản Gemini CLI đang dùng, không giả định giống hệt Claude Code.
Kết luận thực dụng: nếu team đã đầu tư hạ tầng AWS MCP, không có lý do gì phải chọn một công cụ duy nhất — nhiều team dùng Gemini CLI cho các báo cáo/phân tích số liệu định kỳ (cost, log volume), và dùng Claude Code cho các ca debug sâu cần đọc code kỹ.
Mẹo: Khi so sánh chất lượng giữa hai agent CLI, luôn test bằng đúng một prompt và đúng một khoảng thời gian dữ liệu — thay đổi cả hai biến (prompt khác, thời điểm khác) cùng lúc sẽ khiến bạn kết luận sai lệch, vì AWS Cost Explorer và CloudWatch Logs có dữ liệu thay đổi liên tục theo thời gian thực.
Tổng Kết và Mẹo Sử Dụng
- Cấu hình AWS MCP trong Gemini CLI qua
.gemini/settings.json(hoặc scope user), dùng keymcpServersgiống Claude Code. - Tận dụng context window lớn của Gemini CLI cho các truy vấn cần tổng hợp nhiều log group, nhiều ngày, hoặc breakdown chi phí nhiều tầng.
- Luôn dùng mốc thời gian tuyệt đối khi hỏi so sánh dữ liệu theo nhiều khoảng thời gian.
- Với báo cáo cost, luôn yêu cầu AI tách rõ nguyên nhân tăng usage và nguyên nhân đổi giá.
- Đừng gắn bó một công cụ duy nhất — chọn agent CLI phù hợp theo loại việc (phân tích số liệu lớn vs. debug sâu cần đọc code).
Mẹo: Giữ một file prompt mẫu chung (cùng nội dung, chỉ thay tên công cụ) cho các việc lặp lại như "báo cáo cost hàng tuần" hoặc "quét lỗi CloudWatch hàng ngày" — việc này giúp bạn dễ dàng chạy chéo qua nhiều agent CLI để đối chiếu kết quả bất cứ khi nào nghi ngờ một công cụ đang trả lời thiếu chính xác.