Ngôn ngữ hiển thị:
Mỗi tháng, AWS gửi hóa đơn cho hàng triệu tài khoản — và trong số đó, không ít người mở ra rồi tự hỏi: "Mình đã làm gì mà tốn nhiều thế này?" Số liệu từ Flexera 2024 cho thấy trung bình 28% chi phí cloud bị lãng phí do cấu hình sai hoặc tài nguyên nhàn rỗi. Với AWS, con số đó hoàn toàn có thể giảm xuống dưới 10% nếu bạn biết nhìn đúng chỗ.
AWS Cost Explorer là công cụ phân tích chi phí tích hợp sẵn trong AWS Console, cho phép bạn xem lịch sử chi tiêu, dự báo chi phí tương lai và đào sâu vào từng service, region, tag để tìm nguồn gốc của những khoản tiền "khó hiểu".
Điểm khác biệt quan trọng: Cost Explorer không phải chỉ là bảng thống kê. Nó có khả năng phát hiện anomaly (chi phí bất thường) tự động, gợi ý Reserved Instances và Savings Plans, và filter theo hàng chục chiều dữ liệu — từ instance type, region, linked account cho đến custom tag của bạn.
Chi phí sử dụng Cost Explorer: mỗi lần truy vấn API tốn khoảng 0,01 USD. Nhưng nếu dùng qua Console thì miễn phí hoàn toàn. Khổ nỗi là nhiều người lập account xong rồi để Cost Explorer bụi bám, chỉ mở ra khi hóa đơn về mà không hiểu tại sao.
Đây là sai lầm kinh điển nhất. Bạn spin lên một con EC2 để test, demo, hay chạy môi trường dev — rồi quên không tắt. Một con t3.medium ở region US East chạy 24/7 tốn khoảng 30 USD/tháng. Nhân lên 10 con dev instance mà cả team đang dùng, bạn đang đốt 300 USD/tháng cho những máy chỉ được dùng giờ hành chính.
Cách phát hiện trong Cost Explorer: vào Cost Explorer → Group by: Usage Type, lọc service EC2. Xem cột "BoxUsage" — nếu giờ chạy mỗi ngày đều đều từ 0h đến 24h cho một instance mà đáng lẽ chỉ dùng ban ngày, đó là dấu hiệu rõ ràng.
Khắc phục thực tế:
Environment: dev ngay từ đầu. Cost Explorer sẽ giúp bạn track riêng chi phí dev vs production.Elastic IP (EIP) miễn phí khi đang gán vào một instance đang chạy. Nhưng ngay khi instance đó bị stop hoặc terminate, EIP "thả nổi" bắt đầu tính phí — 0,005 USD/giờ, tức khoảng 3,6 USD/tháng mỗi IP. Nghe nhỏ, nhưng nếu bạn có 20 cái thì là 72 USD/tháng cho... không có gì cả.
NAT Gateway còn tệ hơn. Chi phí gồm 2 phần: phí giờ chạy (0,045 USD/giờ ≈ 32 USD/tháng) và phí data processing (0,045 USD/GB). Nhiều team setup NAT Gateway cho môi trường dev nhưng không dùng đến, hoặc quên xóa sau khi infrastructure thay đổi.
Cách tìm trong Cost Explorer: filter Service = EC2, sau đó xem Usage Type có chứa ElasticIP:IdleAddress hoặc NatGateway. Bất kỳ giờ nào xuất hiện ở đây đều là tiền đang bị đốt.
Khắc phục: chạy lệnh này để list toàn bộ EIP đang idle:
aws ec2 describe-addresses --query 'Addresses[?AssociationId==`null`].[AllocationId,PublicIp]' --output tableVới NAT Gateway, kiểm tra CloudWatch metric BytesOutToDestination — nếu gần bằng 0 trong 7 ngày qua, xóa luôn.
On-Demand là lựa chọn an toàn nhưng đắt nhất. Nếu workload của bạn ổn định và dự đoán được (production server, database, các service chạy liên tục), bạn đang bỏ phí tới 72% discount khi dùng Reserved Instances hoặc Compute Savings Plans.
Nghĩ mà xem: một con m5.xlarge On-Demand tốn 0,192 USD/giờ = 139 USD/tháng. Cùng instance đó với 1-year All Upfront Savings Plan chỉ còn khoảng 89 USD/tháng. Tiết kiệm 50 USD/tháng/instance — nếu bạn có 10 instance production thì là 500 USD/tháng, tức 6.000 USD/năm.
AWS Cost Explorer có tính năng Savings Plans Recommendations built-in. Vào Savings Plans → Recommendations, AWS sẽ tự tính toán dựa trên usage 7/30/60 ngày qua và đề xuất commitment phù hợp kèm estimated savings cụ thể. Đây là một trong những tính năng ít người biết nhưng cực kỳ có giá trị.
S3 Standard tốn 0,023 USD/GB/tháng. Nghe rẻ, nhưng nếu bạn lưu vài terabyte log, backup, hay archive data mà hầu như không bao giờ access, chi phí tích lũy theo tháng là rất đáng kể.
S3 Intelligent-Tiering tự động chuyển object ít dùng xuống tier rẻ hơn sau 30 ngày. S3 Glacier Instant Retrieval cho data archive mà bạn chỉ cần access vài lần/năm — rẻ hơn 68% so với Standard. S3 Glacier Deep Archive rẻ nhất: 0,00099 USD/GB/tháng, phù hợp cho compliance archive.
Trong Cost Explorer, filter Service = S3 và xem Usage Type. Nếu thấy TimedStorage-ByteHrs lớn mà Requests-Tier1 (GET requests) rất thấp, đó là dấu hiệu data đang nằm ở tier đắt nhưng không được dùng.
Khắc phục: enable S3 Storage Lens để có cái nhìn tổng quan, sau đó setup Lifecycle Policy:
{
"Rules": [{
"ID": "MoveToIA",
"Status": "Enabled",
"Transitions": [
{"Days": 30, "StorageClass": "STANDARD_IA"},
{"Days": 90, "StorageClass": "GLACIER_IR"}
]
}]
}Đây là sai lầm mà ngay cả engineer nhiều năm kinh nghiệm cũng hay bị bất ngờ. AWS tính phí cho data transfer ra internet (egress) và đôi khi cả transfer giữa các AZ trong cùng region. Intra-region cross-AZ transfer: 0,01 USD/GB mỗi chiều. Nếu application của bạn có microservices rải rác ở nhiều AZ và giao tiếp nhiều, con số này có thể lên đến hàng trăm USD/tháng.
Nói thật thì đây là phần Cost Explorer ít "trực quan" nhất. Bạn cần filter Usage Type = DataTransfer-Regional-Bytes hoặc DataTransfer-Out-Bytes và group by Resource để xác định service nào đang "nói chuyện" nhiều nhất.
Đây là quy trình mình thường dùng mỗi đầu tháng để audit chi phí AWS:
Bước 1 — Mở Cost Explorer và xem tổng quan: Vào AWS Console → Billing → Cost Explorer. Chọn time range "Last 3 months" để có đủ pattern. Xem chart tổng thể — tìm những tuần/tháng có spike bất thường.
Bước 2 — Drill down theo Service: Group by Service. Xác định top 3-5 service tốn tiền nhất. Nếu EC2 hoặc RDS chiếm >60% mà không có lý do rõ ràng, đào sâu hơn.
Bước 3 — Enable Cost Anomaly Detection: Vào Cost Management → Cost Anomaly Detection → Create monitor. Thiết lập alert qua email khi chi phí vượt ngưỡng bạn định nghĩa (ví dụ: tăng >20% so với tuần trước). Đây là tính năng miễn phí và cực kỳ hữu ích.
# Tạo SNS topic nhận alert
aws sns create-topic --name aws-cost-alerts
# Subscribe email của bạn
aws sns subscribe --topic-arn arn:aws:sns:us-east-1:ACCOUNT_ID:aws-cost-alerts --protocol email --notification-endpoint [email protected]Bước 4 — Xem RI/Savings Plans utilization: Nếu bạn đã mua Reserved Instances, vào Reservations → Utilization Reports. Utilization dưới 80% nghĩa là bạn đang trả tiền cho capacity không dùng đến.
Bước 5 — Tag và phân bổ chi phí: Đây là bước nhiều team bỏ qua nhưng cực kỳ quan trọng khi scale. Activate Cost Allocation Tags trong Billing console, sau đó filter Cost Explorer theo tag để biết chính xác từng project/team/environment đang tiêu bao nhiêu.
Mẹo từ thực chiến: đặt budget alert ở mức 80% tháng trước thay vì một con số cố định. Cost Explorer có Budget tính năng cho phép bạn set % threshold — khi tài khoản đạt 80% chi tiêu tháng trước sẽ tự alert, cho bạn thời gian phản ứng trước khi tháng kết thúc.
Sau khi làm việc với nhiều team có quy mô khác nhau, mình nhận ra một vài pattern sai lầm lặp đi lặp lại:
Bật Cost Explorer nhưng không action: Nhiều người mở Cost Explorer, thấy biểu đồ đẹp, rồi đóng lại. Cost Explorer chỉ có giá trị khi bạn dùng insight từ nó để ra quyết định thực tế — terminate idle resource, thay đổi storage class, commit vào Savings Plans. Không có action thì không có savings.
Mua Reserved Instances quá sớm: Nhiều team vừa lên production đã vội mua 1-year hay 3-year RI vì thấy discount hấp dẫn. Nhưng nếu architecture còn thay đổi (instance type khác, region khác, service thay thế), bạn sẽ bị kẹt với commitment không phù hợp. Khuyến nghị: chạy On-Demand ít nhất 2-3 tháng, dùng Cost Explorer Recommendations rồi mới commit.
Không dùng multi-account hay AWS Organizations: Nếu bạn có nhiều account (dev, staging, prod), Cost Explorer trong từng account chỉ show data của account đó. Dùng AWS Organizations và Cost Explorer ở management account để có cái nhìn consolidated — từ đó mới phát hiện được pattern tốn tiền ở level toàn công ty.
Q: AWS Cost Explorer có tính phí không?A: Dùng qua Console (UI) thì miễn phí hoàn toàn. Chỉ mất tiền khi gọi Cost Explorer API (0,01 USD/request) — thường dùng khi bạn tích hợp vào tool tự động hoặc dashboard riêng.
Q: Mình nhìn vào Cost Explorer nhưng không biết bắt đầu từ đâu?A: Bắt đầu từ đơn giản nhất: Group by Service, chọn "Last month". Tìm service nào chiếm tỷ trọng lớn nhất và không khớp với kỳ vọng của bạn — đó là nơi cần đào sâu đầu tiên. Không cần phân tích tất cả cùng lúc.
Q: Savings Plans vs Reserved Instances — nên chọn cái nào?A: Compute Savings Plans linh hoạt hơn nhiều — áp dụng cho EC2 bất kể instance family, region, hay OS, kể cả Lambda và Fargate. RI cụ thể hơn nhưng discount cao hơn một chút với EC2. Nếu không chắc architecture sẽ thay đổi thế nào, Savings Plans là lựa chọn an toàn hơn.
Q: Mình đã tối ưu rồi nhưng hóa đơn vẫn cao, phải làm sao?A: Kiểm tra data transfer — đây thường là "hidden cost" bị bỏ qua. Tiếp theo là xem RDS: nhiều team dùng RDS Multi-AZ cho môi trường dev/staging hoàn toàn không cần thiết. Cuối cùng là xem CloudWatch Logs retention — log giữ mãi trong CloudWatch tốn tiền; set expiration policy cho các log group không quan trọng.
AWS rất mạnh, rất linh hoạt — nhưng chính sự linh hoạt đó tạo ra hàng trăm cách để tiêu tiền mà không nhận ra. Cost Explorer không phải công cụ kế toán — nó là công cụ engineering. Khi bạn biết đọc nó đúng cách, bạn không chỉ tiết kiệm tiền mà còn hiểu rõ hơn architecture của mình đang hoạt động thế nào.
Mình gợi ý một thói quen đơn giản: mỗi đầu tháng dành 15 phút mở Cost Explorer, check top 5 services và so sánh với tháng trước. Nếu có bất kỳ service nào tăng >20% mà không có lý do rõ ràng, đào sâu ngay trước khi tháng kết thúc. Thói quen nhỏ này có thể tiết kiệm cho bạn vài trăm đến vài nghìn USD mỗi năm.
Bài tiếp theo mình sẽ đi vào cách deploy source code Node.js/PHP lên EC2 hoàn chỉnh — từ setup đến CI/CD. Nếu bạn đang build production trên AWS, đó là phần không thể bỏ qua.