在 AWS 雲端平台中,運算資源是所有應用的基石。根據應用需求、成本考量與維運人力的不同,AWS 提供了多種運算選項,從最基礎的虛擬機到完全無伺服器的架構,都能靈活搭配。
想像一下,你要部署一個應用程式,但不想買實體伺服器。AWS 就像是一個超大的「雲端機房租賃公司」,提供各種不同規格的運算資源,並以開發者的角度來分享我的經驗。以下是五種主要的運算服務:
簡單理解: 就像在雲端租一台電腦,你可以完全控制它。
適合場景:
# 例如你有一個 Django 網站需要部署
# 在 EC2 上你需要:
sudo apt update
sudo apt install python3 nginx postgresql
pip install django
# 完全像在自己電腦上操作
實際例子:
優缺點:
簡單理解: 如果你會用 Docker,ECS 就是幫你管理多個容器的工具。
適合場景:
# 你的 Dockerfile
FROM node:22
COPY . /app
WORKDIR /app
RUN npm install
EXPOSE 3000
CMD ["npm", "start"]
# ECS 任務定義(類似 docker-compose)
{
"family": "my-app",
"containerDefinitions": [
{
"name": "web-server",
"image": "my-app:latest",
"memory": 512,
"portMappings": [{"containerPort": 3000}]
}
]
}
實際例子:
簡單理解: 是一個讓你可以直接運行應用程式容器,而不用管理底層伺服器的雲端服務,但必須搭配其他服務使用。如EKS、ECS。
與 EC2 的差別:
# 傳統 ECS + EC2:你要管理
- EC2 instance 的規格選擇
- 作業系統更新
- 容器調度到哪台機器
# ECS + Fargate:你只需要定義
- 容器需要多少 CPU/記憶體
- 要跑幾個副本
實際例子:
成本比較:
假設運行一個小型 API:
- Fargate:$0.045/小時(1 vCPU, 2GB RAM)
- EC2 t3.small:$0.0208/小時 + 管理時間成本
→ 如果你的時間很寶貴,Fargate 可能更划算
簡單理解: 如果 Docker Compose 是玩具車,Kubernetes 就是聯結車。EKS 是 AWS 代管的 K8s。
什麼時候需要?
# 當你的應用複雜到需要這樣的配置時:
apiVersion: apps/v1
kind: Deployment
metadata:
name: microservice-a
spec:
replicas: 5
template:
spec:
containers:
- name: api
image: my-api:v2.1
resources:
limits:
cpu: 500m
memory: 1Gi
---
apiVersion: v1
kind: Service
# ... 還有 ConfigMap、Secret、Ingress 等等
實際場景:
學習成本:
Docker 基礎 → ECS (學習曲線:1-2週)
Docker 基礎 → Kubernetes → EKS (學習曲線:2-3個月)
簡單理解: 寫一個函式,AWS 幫你跑,用多少付多少。
經典例子:
# 一個處理圖片上傳的 Lambda 函式
import json
import boto3
from PIL import Image
def lambda_handler(event, context):
# 當有圖片上傳到 S3 時觸發
bucket = event['Records'][0]['s3']['bucket']['name']
key = event['Records'][0]['s3']['object']['key']
# 下載原圖,產生縮圖
s3 = boto3.client('s3')
# ... 圖片處理邏輯
return {
'statusCode': 200,
'body': json.dumps('縮圖產生完成!')
}
觸發方式:
GET /api/users
→ 執行查詢函式成本效益:
免費額度(每月):
- 100萬次呼叫
- 400,000 GB-秒運算時間
實際例子:
- 小型 API(每天 1000 次呼叫)→ 幾乎免費
- 圖片處理服務(每月處理 50萬張)→ 約 $10-20
- 定時任務(每小時跑 5 分鐘)→ 約 $1-5
以下為我使用的經驗及想法
新手入門路線:
避免的陷阱:
大多數個人專案和小型應用,Lambda + 一些 AWS 託管服務(如 RDS、S3)就足夠了!