AWS Documentation · Tiếng Việt

Amazon EC2

Elastic Compute Cloud – Hướng dẫn toàn diện từ tổng quan kiến trúc đến vận hành thực tế

Cập nhật 2024
IaaS · Compute
AWS Core Service
01 · Tổng quan

Amazon EC2 là gì?

Amazon Elastic Compute Cloud (EC2) là dịch vụ điện toán đám mây của AWS, cung cấp máy chủ ảo (virtual machine) theo mô hình Infrastructure-as-a-Service (IaaS). Ra mắt năm 2006, EC2 là một trong những dịch vụ cốt lõi và phổ biến nhất của AWS.

EC2 cho phép bạn thuê năng lực tính toán theo nhu cầu – từ một instance nhỏ để chạy web cá nhân đến hàng nghìn instance để xử lý dữ liệu khổng lồ – chỉ trả tiền cho những gì thực sự sử dụng.

💡 Định nghĩa
EC2 instance là một máy chủ ảo chạy trên hạ tầng vật lý của AWS. Mỗi instance có CPU, RAM, storage và network interface riêng, hoạt động giống như một máy chủ vật lý thực sự nhưng linh hoạt hơn nhiều.

Đặc điểm cốt lõi

Elastic – Co giãn linh hoạt
Tăng/giảm số lượng và kích thước instance trong vài phút, không cần mua phần cứng vật lý.
💰
Pay-as-you-go
Tính phí theo giờ hoặc giây. Không cam kết tối thiểu với On-Demand, tiết kiệm tới 90% với Spot.
🌍
Triển khai toàn cầu
Khả dụng tại 33+ Region, 105+ Availability Zone trên toàn thế giới.
🔒
Bảo mật đa lớp
IAM, Security Groups, VPC, KMS encryption, và nhiều cơ chế bảo vệ khác.
🔧
Hoàn toàn kiểm soát
Toàn quyền root/admin, chọn OS, cấu hình network, cài đặt phần mềm tùy ý.
🤝
Tích hợp sâu AWS
Kết nối liền mạch với S3, RDS, ELB, CloudWatch, Lambda và 200+ dịch vụ AWS.

So sánh EC2 với máy chủ vật lý truyền thống

Tiêu chíMáy chủ vật lýAmazon EC2
Thời gian triển khaiTuần – thángVài phút
Chi phí ban đầuCapEx cao (mua phần cứng)OpEx, không CapEx
Co giãnGiới hạn bởi phần cứngKhông giới hạn
Độ sẵn sàngCần tự xây dự phòngSLA 99.99% với Multi-AZ
Quản lý phần cứngTự chịu trách nhiệmAWS quản lý
Thanh toánTrả trước toàn bộTheo giờ/giây thực dùng
02 · Kiến trúc

Kiến trúc EC2

EC2 được tổ chức theo một kiến trúc phân cấp rõ ràng, từ Region (vùng địa lý) cho đến từng instance cụ thể.

🌏 AWS REGION (ap-southeast-1) 🔵 VPC — 10.0.0.0/16 🌐 Internet Gateway 📍 Availability Zone A 🟢 Public Subnet 10.0.1.0/24 🖥 EC2 Web Svr 🖥 EC2 Web Svr route → IGW 🔴 Private Subnet 10.0.11.0/24 🗄 RDS Database 🖥 EC2 App Svr route → NAT GW 🔀 NAT Gateway EIP: 54.x.x.x 📍 Availability Zone B 🟢 Public Subnet 10.0.2.0/24 🖥 EC2 Web Svr 🖥 EC2 Web Svr route → IGW 🔴 Private Subnet 10.0.12.0/24 🗄 RDS Replica 🖥 EC2 App Svr route → NAT GW VPC (Virtual Private Cloud) Internet

Các khái niệm cơ bản

Khái niệmMô tả
RegionVùng địa lý độc lập (vd: ap-southeast-1 là Singapore). Dữ liệu không tự động chuyển giữa Region.
Availability Zone (AZ)Data center độc lập trong một Region. Mỗi Region có 2–6 AZ. Dùng Multi-AZ để tăng tính sẵn sàng.
VPCMạng ảo riêng tư, cô lập về mặt logic trong AWS Cloud.
SubnetPhân đoạn mạng trong VPC. Public subnet có route ra Internet, Private subnet thì không.
InstanceMáy chủ ảo cụ thể đang chạy trong AWS.
AMIAmazon Machine Image – template để tạo instance (chứa OS + cấu hình ban đầu).
EBSElastic Block Store – ổ đĩa ảo gắn vào instance.
⚠️ Lưu ý về Region
Khi triển khai production tại Việt Nam, nên chọn ap-southeast-1 (Singapore) hoặc ap-southeast-3 (Jakarta) để đảm bảo độ trễ thấp.
03 · Loại Instance

Instance Types

EC2 cung cấp hơn 600 loại instance, được nhóm theo gia đình (family) dựa trên use case tối ưu. Tên instance tuân theo cú pháp: [family][generation][attributes].[size]

📝 Đọc tên instance
Ví dụ m7g.xlarge: m = General Purpose, 7 = thế hệ 7, g = chip Graviton (ARM), xlarge = kích thước 4 vCPU / 16 GB RAM.

Các gia đình instance

Gia đìnhKý hiệuTối ưu choVí dụ
General Purpose M, T Web server, ứng dụng vừa, dev/test, database nhỏ t3.medium, m7g.xlarge
Compute Optimized C HPC, game server, batch processing, ML inference c7g.2xlarge, c6i.4xlarge
Memory Optimized R, X, z In-memory DB, SAP HANA, real-time analytics, Redis r7g.4xlarge, x2iezn.2xlarge
Storage Optimized I, D, H NoSQL DB, data warehouse, Hadoop, log processing i4i.4xlarge, d3en.8xlarge
Accelerated Computing P, G, Inf, Trn ML training, deep learning, video rendering, GPU p4d.24xlarge, g5.xlarge
High Performance Net. Hpc Tính toán khoa học, mô phỏng phân tán hpc7g.16xlarge

Kích thước (Size) instance

SizevCPURAM (GB)Ghi chú
nano20.5Dùng cho dev/test siêu nhỏ, eligible Free Tier
micro21Free Tier: 750 giờ/tháng với t2/t3.micro
small22Web nhỏ, staging environment
medium24Ứng dụng trung bình
large28Workload sản xuất thông thường
xlarge416Database, ứng dụng tải cao
2xlarge832Cache layer, processing nặng
4xlarge1664Analytics, data warehouse
…metal192+1536+Bare metal, không có hypervisor overhead

T-series: Burstable Performance

Instance T3, T4g dùng cơ chế CPU Credits – rất phù hợp cho workload không đều (burst). Khi CPU thấp, instance tích lũy credits; khi cần tải cao, dùng credits đó để burst lên 100% CPU.

✅ Khi nào dùng T-series?
Web server, API nhỏ, môi trường dev/staging, CI/CD runner – bất cứ workload nào có CPU thấp phần lớn thời gian nhưng thỉnh thoảng spike lên cao.
04 · Amazon Machine Image

AMI – Amazon Machine Image

AMI là template để tạo EC2 instance, bao gồm: thông tin OS, cấu hình phần mềm, dữ liệu khởi tạo và quyền truy cập (launch permissions). AMI là snapshot bất biến – bạn có thể tạo hàng trăm instance giống hệt nhau từ một AMI.

Thành phần của AMI

  • Root volume template: OS (Linux, Windows, macOS) và các phần mềm cài sẵn
  • Block device mapping: Danh sách volume EBS sẽ gắn vào instance khi launch
  • Launch permissions: Ai có quyền dùng AMI này (account cụ thể, public, hay private)
  • Virtualization type: HVM (Hardware Virtual Machine) – loại hiện đại nhất

Nguồn AMI

🅰️
AWS Managed AMI
Amazon Linux 2023, Amazon Linux 2, Windows Server 2022/2019. AWS cập nhật bản vá thường xuyên.
🏪
AWS Marketplace
AMI thương mại từ vendor (Red Hat, Ubuntu, SUSE, Bitnami). Thường có phí license bổ sung.
🛠
Custom AMI (Golden Image)
Tự tạo từ instance đang chạy. Bao gồm app đã cài, cấu hình bảo mật, agent monitoring.
👥
Community AMI
AMI công khai do cộng đồng chia sẻ. Dùng thận trọng – cần kiểm tra nguồn tin cậy.
⚠️ AMI là Region-specific
AMI chỉ khả dụng trong Region nơi nó được tạo. Để dùng ở Region khác, cần copy AMI sang Region đó.
05 · Lưu trữ

Storage cho EC2

EC2 hỗ trợ nhiều loại storage với đặc tính và use case khác nhau. Hiểu rõ từng loại giúp tối ưu chi phí và hiệu năng.

1. EBS – Elastic Block Store

EBS là ổ đĩa ảo persistent – dữ liệu tồn tại ngay cả khi instance bị stop. Một EBS volume chỉ gắn được vào một instance tại một thời điểm (trừ Multi-Attach).

Loại EBSIOPS tối đaThroughputUse case
gp3 (General Purpose SSD)16,0001,000 MB/sMặc định cho hầu hết workload
gp2 (General Purpose SSD)16,000250 MB/sLegacy, nên migrate sang gp3
io2 Block Express256,0004,000 MB/sSAP HANA, Oracle DB, SQL Server
io164,0001,000 MB/sI/O-intensive database
st1 (Throughput HDD)500500 MB/sBig Data, log processing, Kafka
sc1 (Cold HDD)250250 MB/sArchive, infrequent access

2. Instance Store

Storage ephemeral nằm trên ổ đĩa vật lý của host server. Hiệu năng cực cao (NVMe) nhưng mất dữ liệu khi instance stop/terminate. Phù hợp cho buffer, cache, temporary data.

3. EFS – Elastic File System

Hệ thống file NFS fully managed, có thể mount vào nhiều EC2 instance đồng thời. Tự động co giãn, không cần provision capacity. Phù hợp cho shared storage trong ứng dụng phân tán.

4. S3 (qua mount hoặc SDK)

Object storage có thể mount bằng S3 Mountpoint hoặc truy cập bằng AWS SDK/CLI. Không phải block storage – không phù hợp cho database.

✅ Khi dùng EBS
  • Boot volume của OS
  • Database (MySQL, PostgreSQL)
  • File cần persist sau khi restart
  • Cần snapshot và backup
⚠️ Khi dùng Instance Store
  • Cache layer (Redis self-hosted)
  • Temporary processing data
  • Buffer/queue trung gian
  • Khi cần IOPS tối đa, cost thấp
06 · Mạng

Networking

Elastic Network Interface (ENI)

Mỗi instance có ít nhất một ENI (Elastic Network Interface) – card mạng ảo với địa chỉ IP private, địa chỉ MAC, và Security Group. Bạn có thể gắn thêm ENI hoặc chuyển ENI giữa các instance.

Địa chỉ IP

Loại IPĐặc điểmLưu ý
Private IPCố định trong vòng đời instance, dùng nội bộ VPCGiữ nguyên sau stop/start
Public IP (dynamic)Cấp khi launch, mất khi stopThay đổi sau mỗi lần start
Elastic IP (EIP)IP public tĩnh, giữ nguyên khi stop/startPhí phát sinh nếu không gắn vào instance đang chạy

Security Group

Security Group là firewall ảo ở tầng instance, kiểm soát traffic vào/ra theo rules dựa trên port, protocol, và source/destination IP. Security Group là stateful – traffic được phép vào sẽ tự động được phép ra.

Ví dụ Security Group cho Web Server
# Inbound Rules
Port 22   (SSH)    ← Your IP only       # Không mở 0.0.0.0/0!
Port 80   (HTTP)   ← 0.0.0.0/0          # Allow all
Port 443  (HTTPS)  ← 0.0.0.0/0          # Allow all

# Outbound Rules
All traffic ← 0.0.0.0/0                  # Allow all outbound (default)
🚨 Cảnh báo bảo mật
Không bao giờ mở SSH (port 22) từ 0.0.0.0/0 trong môi trường production. Chỉ cho phép IP cụ thể hoặc dùng AWS Systems Manager Session Manager thay thế SSH.

Placement Groups

Kiểm soát cách AWS đặt instance trên phần cứng vật lý:

  • Cluster: Gom tất cả instance vào cùng rack → latency thấp nhất, phù hợp HPC
  • Spread: Mỗi instance trên rack riêng biệt → giảm thiểu correlated failure
  • Partition: Nhóm instance theo partition, mỗi partition trên rack khác nhau → Hadoop, Cassandra
07 · Bảo mật

Bảo mật EC2

IAM Role cho EC2

Thay vì lưu AWS credentials trực tiếp trên instance, gắn IAM Role vào instance để cấp quyền truy cập AWS services. Credentials được tự động rotate thông qua Instance Metadata Service.

Lấy credentials qua IMDSv2
# Bước 1: Lấy token IMDSv2 (bắt buộc – v2 bảo mật hơn v1)
TOKEN=$(curl -X PUT "http://169.254.169.254/latest/api/token" \
  -H "X-aws-ec2-metadata-token-ttl-seconds: 21600")

# Bước 2: Truy vấn metadata
curl -H "X-aws-ec2-metadata-token: $TOKEN" \
  http://169.254.169.254/latest/meta-data/iam/security-credentials/

Key Pairs

EC2 dùng key pair (RSA hoặc ED25519) để xác thực SSH. AWS lưu public key, bạn giữ private key. Mất private key = không thể SSH vào instance (trừ khi dùng Session Manager).

AWS Systems Manager – Session Manager

Kết nối vào instance không cần SSH port, không cần key pair, không cần Bastion host. Mọi session được log vào CloudTrail và S3. Đây là best practice hiện đại.

EBS Encryption

Bật encryption cho EBS volume bằng AWS KMS. Encryption at-rest và in-transit (giữa instance và volume). Bật mặc định cho toàn account để tránh vô tình tạo volume không mã hóa.

✅ Security Checklist
☑ Bật IMDSv2, tắt IMDSv1  |  ☑ Dùng IAM Role, không dùng Access Key trên instance  |  ☑ Bật EBS encryption mặc định  |  ☑ Dùng Session Manager thay SSH  |  ☑ Enable VPC Flow Logs  |  ☑ Bật GuardDuty
08 · Mô hình giá

Pricing Models

EC2 cung cấp 5 mô hình thanh toán khác nhau. Chọn đúng mô hình có thể tiết kiệm tới 90% chi phí.

On-Demand
Linh hoạt nhất
Trả theo giờ hoặc giây. Không cam kết. Giá cao nhất nhưng không ràng buộc.
Tham chiếu 100%
Reserved Instances (RI)
⭐ Phổ biến nhất
Cam kết 1 hoặc 3 năm. Thanh toán No Upfront / Partial / All Upfront.
Tiết kiệm ~40–60%
Savings Plans
⭐ Linh hoạt hơn RI
Cam kết mức chi tiêu $/giờ trong 1–3 năm. Áp dụng tự động cho EC2, Lambda, Fargate.
Tiết kiệm ~40–66%
Spot Instances
Rẻ nhất
Dùng capacity dư thừa của AWS. Có thể bị terminate 2 phút báo trước.
Tiết kiệm ~70–90%
Dedicated Hosts
Tuân thủ license
Máy chủ vật lý dành riêng. Cần cho BYOL (SQL Server, Windows) và compliance.
Đắt nhất

Khi nào dùng mô hình nào?

Tình huốngNên dùng
Workload production ổn định, chạy 24/7Reserved Instances hoặc Savings Plans
Dev/test, workload ngắn hạn, không đoán đượcOn-Demand
Batch processing, CI/CD, training ML, stateless appSpot Instances
Kết hợp: nền tảng RI + burst On-Demand/SpotMixed strategy
License Oracle/SQL Server BYOL, financial complianceDedicated Hosts
💡 Chiến lược tối ưu chi phí
Dùng Savings Plans cho baseline load (~70%), On-Demand cho predictable burst, và Spot cho fault-tolerant workload. Kết hợp với Auto Scaling để không trả tiền cho capacity nhàn rỗi.
09 · Thực hành

Khởi chạy EC2 Instance

Hướng dẫn từng bước tạo EC2 instance đầu tiên qua AWS CLI.

1
Tạo Key Pair
Tạo key pair để SSH vào instance. Lưu file .pem cẩn thận – không thể tải lại.
2
Tạo Security Group
Xác định rules firewall: port nào được phép vào/ra, từ IP nào.
3
Chọn AMI và Instance Type
Chọn OS (Amazon Linux 2023 được khuyến nghị) và cấu hình phần cứng phù hợp workload.
4
Launch Instance
Chạy lệnh run-instances với các tham số đã chuẩn bị. Instance sẵn sàng trong 1–2 phút.
5
Kết nối và kiểm tra
SSH vào instance hoặc dùng Session Manager để xác nhận hoạt động bình thường.
Tạo EC2 instance qua AWS CLI
# 1. Tạo Key Pair
aws ec2 create-key-pair \
  --key-name MyEC2Key \
  --query 'KeyMaterial' \
  --output text > MyEC2Key.pem
chmod 400 MyEC2Key.pem

# 2. Tạo Security Group
aws ec2 create-security-group \
  --group-name my-sg \
  --description "My Security Group" \
  --vpc-id vpc-xxxxxxxx

# Cho phép SSH từ IP cụ thể
aws ec2 authorize-security-group-ingress \
  --group-id sg-xxxxxxxx \
  --protocol tcp --port 22 \
  --cidr 1.2.3.4/32

# 3. Launch instance Amazon Linux 2023
aws ec2 run-instances \
  --image-id ami-0df7a207adb9748c7 \     # Amazon Linux 2023, ap-southeast-1
  --instance-type t3.micro \
  --key-name MyEC2Key \
  --security-group-ids sg-xxxxxxxx \
  --subnet-id subnet-xxxxxxxx \
  --tag-specifications 'ResourceType=instance,Tags=[{Key=Name,Value=MyServer}]' \
  --user-data file://userdata.sh

# 4. Lấy Public IP
aws ec2 describe-instances \
  --filters "Name=tag:Name,Values=MyServer" \
  --query 'Reservations[0].Instances[0].PublicIpAddress'

# 5. SSH vào instance
ssh -i MyEC2Key.pem ec2-user@<PUBLIC_IP>
10 · Tự động co giãn

Auto Scaling

EC2 Auto Scaling tự động thêm/bớt instance dựa trên metrics hoặc lịch định sẵn, đảm bảo luôn có đủ capacity mà không lãng phí tài nguyên.

Các thành phần

  • Launch Template: Định nghĩa cấu hình instance (AMI, type, SG, user data...)
  • Auto Scaling Group (ASG): Quản lý tập hợp instance, định nghĩa min/max/desired capacity
  • Scaling Policy: Khi nào và bao nhiêu instance cần scale

Các loại Scaling Policy

LoạiCách hoạt độngUse case
Target TrackingGiữ metric ở mức target (vd: CPU = 60%)Đơn giản nhất, khuyến nghị cho hầu hết cases
Step ScalingScale nhiều bước tùy mức vi phạm alarmCần scale nhanh và agressive khi tải tăng đột biến
Scheduled ScalingScale theo lịch cố định (cron)Traffic có pattern rõ ràng (peak giờ cao điểm)
Predictive ScalingML dự đoán tải tương lai, scale trướcWorkload có pattern tuần hoàn
Tạo Auto Scaling Group
# Tạo Launch Template
aws ec2 create-launch-template \
  --launch-template-name my-lt \
  --launch-template-data '{"ImageId":"ami-0df7a207adb9748c7","InstanceType":"t3.medium","SecurityGroupIds":["sg-xxx"]}'

# Tạo Auto Scaling Group
aws autoscaling create-auto-scaling-group \
  --auto-scaling-group-name my-asg \
  --launch-template LaunchTemplateName=my-lt \
  --min-size 2 \
  --max-size 20 \
  --desired-capacity 4 \
  --vpc-zone-identifier "subnet-aaa,subnet-bbb" \
  --target-group-arns arn:aws:elasticloadbalancing:...

# Gắn Target Tracking Policy – giữ CPU ở 60%
aws autoscaling put-scaling-policy \
  --auto-scaling-group-name my-asg \
  --policy-name cpu-tracking \
  --policy-type TargetTrackingScaling \
  --target-tracking-configuration '{"TargetValue":60.0,"PredefinedMetricSpecification":{"PredefinedMetricType":"ASGAverageCPUUtilization"}}'
11 · Giám sát

Monitoring với CloudWatch

EC2 tích hợp sâu với Amazon CloudWatch để theo dõi metrics, thiết lập alarm, và phân tích log.

Metrics mặc định (Basic Monitoring – miễn phí, 5 phút)

  • CPUUtilization: % CPU đang dùng
  • NetworkIn / NetworkOut: Bytes vào/ra qua network interface
  • DiskReadOps / DiskWriteOps: IOPS đọc/ghi (chỉ với Instance Store)
  • StatusCheckFailed: System hoặc instance check thất bại

Detailed Monitoring (Phí thêm, 1 phút)

Bật để có metrics granularity 1 phút, cần thiết cho Auto Scaling phản ứng nhanh.

Custom Metrics (CloudWatch Agent)

Cài CloudWatch Agent để thu thập metrics mà EC2 không tự báo cáo: RAM usage, disk space, process count, custom application metrics.

Tạo CloudWatch Alarm cho CPU cao
aws cloudwatch put-metric-alarm \
  --alarm-name cpu-high \
  --metric-name CPUUtilization \
  --namespace AWS/EC2 \
  --dimensions Name=InstanceId,Value=i-xxxxxxxxxxxxxxxxx \
  --statistic Average \
  --period 300 \            # 5 phút
  --threshold 80 \
  --comparison-operator GreaterThanThreshold \
  --evaluation-periods 2 \    # 2 lần liên tiếp mới trigger
  --alarm-actions arn:aws:sns:... \   # Gửi thông báo qua SNS
  --ok-actions arn:aws:sns:...
12 · Thực hành tốt nhất

Best Practices

🏗 Kiến trúc & Độ sẵn sàng cao

  • Triển khai instance trên ít nhất 2 Availability Zone
  • Đặt instance sau Application Load Balancer (ALB) để phân tải
  • Dùng Auto Scaling Group với min ≥ 2 để tự động phục hồi khi instance fail
  • Thiết kế ứng dụng stateless – session lưu ở ElastiCache, không trên instance

💰 Tối ưu chi phí

  • Dùng AWS Cost ExplorerCompute Optimizer để phát hiện instance oversized
  • Tắt instance dev/test ngoài giờ làm việc (tiết kiệm ~70%)
  • Ưu tiên Graviton (ARM) instances – hiệu năng/giá tốt hơn x86 ~20%
  • Dùng Spot Instances cho batch job, CI/CD, worker queue

🔐 Bảo mật

  • Tuân theo Least Privilege – IAM Role chỉ cấp quyền thực sự cần
  • Bật IMDSv2, vô hiệu hóa IMDSv1 trên toàn account
  • Dùng AWS Systems Manager Session Manager thay vì SSH trực tiếp
  • Bật Amazon GuardDuty để phát hiện hành vi bất thường
  • Cập nhật bản vá OS thường xuyên bằng AWS Systems Manager Patch Manager

📊 Hiệu năng

  • Dùng gp3 thay gp2 cho EBS – hiệu năng tốt hơn, giá thấp hơn
  • Bật ENA (Elastic Network Adapter) – hỗ trợ tới 100 Gbps network
  • Dùng Placement Group Cluster cho HPC, low-latency workload
  • Bật Enhanced NetworkingEBS-Optimized nếu instance hỗ trợ
✅ Checklist trước khi go-live
☑ Multi-AZ deployment  |  ☑ Auto Scaling configured  |  ☑ CloudWatch alarms set  |  ☑ Backup/snapshot policy  |  ☑ Security Groups reviewed  |  ☑ IAM roles (không dùng root)  |  ☑ EBS encryption enabled  |  ☑ VPC Flow Logs enabled
13 · CLI Reference

AWS CLI Cheat Sheet

EC2 CLI – Lệnh thường dùng
## ── INSTANCES ──────────────────────────────────
# Liệt kê tất cả instances
aws ec2 describe-instances --query 'Reservations[].Instances[].[InstanceId,State.Name,PublicIpAddress,Tags[?Key==`Name`].Value|[0]]' --output table

# Start / Stop / Reboot / Terminate
aws ec2 start-instances     --instance-ids i-xxxx
aws ec2 stop-instances      --instance-ids i-xxxx
aws ec2 reboot-instances    --instance-ids i-xxxx
aws ec2 terminate-instances --instance-ids i-xxxx

## ── IMAGES (AMI) ────────────────────────────────
# Tạo AMI từ instance đang chạy
aws ec2 create-image \
  --instance-id i-xxxx \
  --name "MyGoldenImage-$(date +%Y%m%d)" \
  --no-reboot

# Tìm AMI Amazon Linux 2023 mới nhất
aws ec2 describe-images \
  --owners amazon \
  --filters "Name=name,Values=al2023-ami-*-x86_64" \
  --query 'sort_by(Images, &CreationDate)[-1].ImageId'

## ── VOLUMES (EBS) ───────────────────────────────
# Tạo và gắn EBS volume
aws ec2 create-volume --volume-type gp3 --size 100 --availability-zone ap-southeast-1a
aws ec2 attach-volume --volume-id vol-xxxx --instance-id i-xxxx --device /dev/sdf

# Tạo snapshot EBS
aws ec2 create-snapshot --volume-id vol-xxxx --description "Backup $(date)"

## ── NETWORKING ──────────────────────────────────
# Cấp Elastic IP và gắn vào instance
aws ec2 allocate-address --domain vpc
aws ec2 associate-address --instance-id i-xxxx --allocation-id eipalloc-xxxx

## ── AUTO SCALING ────────────────────────────────
# Thay đổi desired capacity
aws autoscaling set-desired-capacity \
  --auto-scaling-group-name my-asg \
  --desired-capacity 6

## ── MONITORING ──────────────────────────────────
# Lấy CPU metrics 1 giờ qua
aws cloudwatch get-metric-statistics \
  --namespace AWS/EC2 \
  --metric-name CPUUtilization \
  --dimensions Name=InstanceId,Value=i-xxxx \
  --start-time $(date -u -d '1 hour ago' +%Y-%m-%dT%H:%M:%SZ) \
  --end-time $(date -u +%Y-%m-%dT%H:%M:%SZ) \
  --period 300 --statistics Average