Tổng Kết Series và Rà Soát Toàn Bộ Tài Khoản AWS
You've reached the end
Đây là bài cuối của series. Mỗi bài trước đã có phần dọn dẹp riêng, nên về lý thuyết tài khoản của bạn đã sạch. Bài này làm một việc khác: tự kiểm toán toàn bộ tài khoản để chắc chắn không sót gì, rồi điểm lại những gì đã học và gợi ý đi tiếp.
Tự rà soát tài khoản định kỳ là một kỹ năng nên có, không chỉ lúc học. Resource bị quên ở một region ít dùng là nguyên nhân phổ biến của hóa đơn bất ngờ.
Vì sao phải rà soát từng region
Phần lớn dịch vụ AWS hoạt động theo từng region và tách biệt nhau. Một EC2 bạn lỡ tạo ở region khác sẽ không hiện ra khi bạn đang xem region quen thuộc. Console cũng chỉ hiển thị resource của region đang chọn ở góc trên bên phải. Vì vậy khi rà soát, phải quét qua các region, không chỉ region bạn hay dùng.
Một số dịch vụ là global (không thuộc region nào), như IAM và S3 (tên bucket toàn cầu, dù dữ liệu nằm ở một region).
Bước 1: Xem tổng quan chi phí
Nơi nhìn nhanh nhất là Billing and Cost Management.
- Mở Billing and Cost Management > Bills để xem chi phí tháng hiện tại, tách theo dịch vụ và region. Nếu có dịch vụ nào phát sinh tiền ngoài dự kiến, đây là chỗ thấy đầu tiên.
- Mở Cost Explorer, xem biểu đồ chi phí theo ngày. Một đường chi phí đột nhiên đi ngang khác 0 cho thấy có gì đó đang chạy liên tục.
- Nếu tài khoản dùng mô hình credit, mở trang Credits để xem còn bao nhiêu credit và nó đang bị tiêu vào đâu.
Budget bạn tạo ở Bài 1 vẫn nên còn đó. Nếu chưa có, quay lại Bài 1 tạo lại — nó là lưới an toàn dài hạn.
Bước 2: Quét resource tính tiền qua các region
Dưới đây là các lệnh quét nhanh những resource hay tốn tiền. Chạy lần lượt cho từng region bạn từng dùng. Có thể lặp qua nhiều region bằng vòng lặp:
for REGION in ap-southeast-1 us-east-1 us-west-2; do
echo "=== Region: $REGION ==="
echo "-- EC2 instances (dang chay) --"
aws ec2 describe-instances --region $REGION \
--filters Name=instance-state-name,Values=running,pending \
--query "Reservations[].Instances[].InstanceId" --output text
echo "-- RDS instances --"
aws rds describe-db-instances --region $REGION \
--query "DBInstances[].DBInstanceIdentifier" --output text
echo "-- Elastic IP chua gan (van tinh tien) --"
aws ec2 describe-addresses --region $REGION \
--query "Addresses[?AssociationId==null].PublicIp" --output text
echo "-- EBS volume khong gan vao dau --"
aws ec2 describe-volumes --region $REGION \
--filters Name=status,Values=available \
--query "Volumes[].VolumeId" --output text
echo "-- NAT Gateway (tinh tien theo gio) --"
aws ec2 describe-nat-gateways --region $REGION \
--query "NatGateways[?State=='available'].NatGatewayId" --output text
done
Hai thứ người mới hay bỏ sót vì chúng "không phải server" nhưng vẫn tính tiền:
- Elastic IP chưa gắn: một địa chỉ IP tĩnh không gắn vào instance nào vẫn bị tính phí. Nếu thấy, giải phóng bằng
aws ec2 release-address. - EBS volume mồ côi: ổ đĩa còn lại sau khi instance bị xóa không đúng cách. Nếu chắc không cần, xóa bằng
aws ec2 delete-volume.
Quét các dịch vụ global và gần global:
# S3 bucket (global)
aws s3 ls
# ECR repository (theo region, kiem tra region ban dung)
aws ecr describe-repositories --region ap-southeast-1 \
--query "repositories[].repositoryName" --output text
# CloudWatch alarm con lai
aws cloudwatch describe-alarms --region ap-southeast-1 \
--query "MetricAlarms[].AlarmName" --output text
Nếu các lệnh trên đều trả về rỗng (trừ những thứ bạn cố ý giữ), tài khoản đã sạch phần tốn tiền.
Bước 3: Rà soát bảo mật cơ bản
Nhân tiện, kiểm tra vài điểm bảo mật:
- Access key cũ: vào IAM > Users, xem các access key. Xóa hoặc vô hiệu hóa những key không còn dùng (ví dụ key bạn tạo cho việc học). Key tĩnh để lâu là rủi ro.
- MFA: xác nhận root và IAM user của bạn đều còn bật MFA (từ Bài 1).
- IAM user/role thừa: xóa các role tạm tạo trong lúc học mà không còn cần (như role pipeline ở Bài 7 nếu chưa xóa).
Điểm lại những gì đã học
Đi qua chín bài, bạn đã chạm vào toàn bộ vòng đời cơ bản của một hệ thống trên AWS:
- Nền tảng an toàn (Bài 1): root có MFA, dùng IAM user, có cảnh báo chi phí.
- Compute (Bài 2): tạo và dùng EC2.
- Mạng (Bài 3): VPC, subnet public/private, Security Group, nguyên tắc chỉ mở đúng cái cần.
- Lưu trữ (Bài 4): S3 và host web tĩnh.
- Database (Bài 5): RDS trong private subnet, chỉ ứng dụng truy cập.
- Đóng gói (Bài 6): Docker và ECR.
- Tự động hóa (Bài 7): CI/CD với GitHub Actions, OIDC thay cho key tĩnh.
- Giám sát (Bài 8): CloudWatch alarm và log tập trung.
Vài nguyên tắc lặp lại xuyên suốt, đáng nhớ:
- Quyền tối thiểu: chỉ mở đúng cổng cần, chỉ cấp quyền vừa đủ, đặt database ở private.
- Không dùng key tĩnh khi tránh được: dùng IAM role và OIDC.
- Tạo gì dọn nấy: thói quen giữ tài khoản sạch và hóa đơn nhỏ.
Hướng học tiếp
Series này dừng ở mức cơ bản và làm thủ công nhiều. Vài hướng đi tiếp tự nhiên:
- Infrastructure as Code: thay vì gõ lệnh hay bấm chuột, mô tả toàn bộ hạ tầng bằng Terraform hoặc AWS CDK. Đây là bước nâng cấp quan trọng nhất, biến mọi thứ trong series thành code dựng lại được.
- Điều phối container: chạy container ở quy mô lớn hơn với ECS hoặc EKS (Kubernetes), thay cho việc
docker runthủ công trên một EC2. - Tách môi trường: dựng các môi trường riêng (dev, staging, production) và pipeline triển khai qua từng môi trường.
- Bảo mật sâu hơn: viết IAM policy hẹp đúng nhu cầu thay vì dùng policy admin có sẵn, quản lý secret bằng AWS Secrets Manager hoặc SSM Parameter Store.
- Quan sát hệ thống (observability): dashboard, metric tùy chỉnh, truy vết phân tán (X-Ray) để hiểu hệ thống sâu hơn mức alarm CPU.
Mỗi hướng trên đủ cho một series riêng. Nền tảng từ chín bài này giúp bạn tiếp cận chúng dễ hơn, vì bạn đã hiểu các mảnh cơ bản mà chúng xây bên trên.
Lời cuối
Cảm ơn bạn đã theo hết series. Nếu bạn làm theo và dọn dẹp đầy đủ, chi phí cho toàn bộ quá trình học gần như bằng không. Giữ thói quen rà soát tài khoản định kỳ, và mỗi khi học thử dịch vụ mới, vẫn áp dụng đúng nguyên tắc: tạo gì dọn nấy.
You've reached the end