跳至主要内容

EC2(Elastic Compute Cloud)

租一台虛擬機,你有 root 權限,決定 OS、規格、網路。


架構

EC2 Instance
├── Instance Type(CPU / RAM 規格)
│ └── e.g. t3.medium, m6i.xlarge, c7g.large
├── AMI(OS 映像檔)
│ └── Amazon Linux 2023 / Ubuntu 22.04 / Windows Server
├── EBS Volume(磁碟)
│ ├── root volume(/dev/xvda)
│ └── 額外 data volume(可選)
└── VPC Subnet
├── Security Group(instance 層級防火牆)
├── 公有 subnet → 可分配 Public IP / Elastic IP
└── 私有 subnet → 只有 VPC 內部可達

Instance Type 命名規則

t 3 . medium
│ │ └── 大小:nano / micro / small / medium / large / xlarge / 2xlarge...
│ └──── 世代:數字越大越新
└─────── 家族:決定使用場景
家族適合
t一般用途,可 burst CPU(開發、低流量服務)
m一般用途,穩定 CPU(web server、API)
c計算密集(batch job、encoding)
r記憶體密集(大型 cache、資料庫)
p / gGPU(ML 訓練、推理)

常用 CLI

# 列出執行中的 instance
aws ec2 describe-instances --filters "Name=instance-state-name,Values=running" \
--query "Reservations[].Instances[].[InstanceId,InstanceType,PublicIpAddress]" \
--output table

# SSH 連進去
ssh -i ~/.ssh/my-key.pem ec2-user@<public-ip>

# 停止 / 啟動
aws ec2 stop-instances --instance-ids i-0abc123
aws ec2 start-instances --instance-ids i-0abc123

什麼時候用 vs 不用

用 EC2:

  • 需要完整 OS 控制(GPU driver、特殊 kernel module)
  • 跑不適合 container 的 legacy 服務
  • EKS worker node 底層就是 EC2(但你不用直接管)

不用 EC2,改用:

  • 跑 container → EKS / ECS
  • 跑函數 → Lambda
  • 跑資料庫 → RDS / DynamoDB(別自己管 DB)

一句話總結

場景選擇
需要完整 OS 控制EC2
跑 containerEKS / ECS
不想管伺服器Lambda / Fargate