Compute — EC2、成本優化、容器服務、Lambda、Elastic Beanstalk。針對 AWS Certified Cloud Practitioner 考試整理重點與常見誤區。
# 6.1 計算服務概覽
生活比喻
你想吃一頓飯,有幾種做法: 自己買菜下廚 (EC2)—— 最自由,但要自己洗菜、開火、洗碗; 買半成品調理包 (Elastic Beanstalk)—— 你只管拆封加熱,廚房的事有人幫你打理好; 叫外送 (Lambda)—— 你連廚房都不用有,想吃才叫,吃完不用收拾; 用便當盒統一裝好帶走 (容器)—— 不管在哪裡吃,打開都是同一份東西。這一整個單元就是在講「你想自己扛多少事」。
AWS 的計算服務可以依照「你要管多少」分成三個層次,這是本單元最重要的骨架:
| 類型 | 代表服務 | 你要管的事 | 適用情境 |
|---|---|---|---|
| 虛擬機器 (IaaS) | Amazon EC2 | 作業系統、修補、擴展、容量規劃全都自己來 | 需要完整控制權、既有應用直接搬遷 (lift-and-shift) |
| 容器 | ECS / EKS / Fargate | 管容器映像檔與設定;用 Fargate 就不用管底層伺服器 | 微服務架構、需要環境一致性與快速啟動 |
| 無伺服器 (Serverless) | AWS Lambda | 只管你的程式碼,伺服器完全由 AWS 處理 | 事件驅動、短時間執行、流量不固定的工作 |
| 平台服務 (PaaS) | AWS Elastic Beanstalk | 只上傳程式碼,部署與擴展由 AWS 自動處理 | 想快速部署網站或 API, 不想碰基礎設施設定 |
考試重點
考題最常考的是「哪個服務最適合這個情境」。判斷關鍵字: 要完全控制作業系統 → EC2; 事件驅動、短暫執行、不想管伺服器 → Lambda; 只想上傳程式碼快速部署 → Elastic Beanstalk; 要跑 Docker 容器但不想管底層機器 → Fargate。
# 6.2–6.4 Amazon EC2
定義
Amazon EC2(Elastic Compute Cloud): 在雲端上租用的虛擬伺服器。你可以自選作業系統、CPU 與記憶體大小、儲存空間與網路設定,幾分鐘內開機,用多久算多久。
# 啟動一台 EC2 需要決定什麼
| 決定項目 | 說明 |
|---|---|
AMI (Amazon Machine Image) | 機器的「範本」, 包含作業系統與預裝軟體。可用 AWS 提供的、Marketplace 的、社群的,或自己建立的 |
| 執行個體類型 (Instance Type) | 決定 CPU、記憶體、網路效能的規格組合,例如 t3.micro 、 m5.large |
| 網路設定 | 要放在哪個 VPC、哪個子網路、要不要公有 IP |
| 安全群組 (Security Group) | 這台機器的虛擬防火牆,決定誰能連進來 |
| 金鑰對 (Key Pair) | SSH 登入用的公私鑰; 私鑰只在建立當下能下載一次,遺失無法補發 |
| 儲存 (EBS Volume) | 掛載給這台機器用的硬碟 |
| 使用者資料 (User Data) | 開機時自動執行的腳本,常用於安裝軟體、初始化設定 |
# 執行個體系列 (Instance Families)
不同類型的工作需要不同的硬體比例,AWS 用字母開頭區分:
| 系列 | 優化方向 | 典型用途 |
|---|---|---|
| 通用型 (T、M) | CPU、記憶體、網路均衡 | 網頁伺服器、開發測試環境 |
| 運算優化型 (C) | 高效能 CPU | 批次運算、高效能運算、遊戲伺服器 |
| 記憶體優化型 (R、X) | 大量記憶體 | 記憶體內資料庫、大型快取 |
| 加速運算型 (P、G) | GPU / 專用硬體 | 機器學習訓練、圖形渲染 |
| 儲存優化型 (I、D) | 高速本機儲存與 IOPS | 大型資料庫、資料倉儲 |
# 執行個體生命週期與計費
- Running (執行中): 正常計費
- Stopped (已停止): 不收運算費用,但掛載的 EBS 磁碟仍會收儲存費
- Terminated (已終止): 機器被刪除,無法復原
- Linux 與 Windows 執行個體採按秒計費 (最低 60 秒), 部分其他作業系統為按小時計費
常見誤區
「停止 (Stop)」不等於「不用付錢」。EC2 停止後運算費用確實不收,但 EBS 磁碟還在、還在佔空間,所以儲存費照收。要完全停止付費,得把執行個體 Terminate 並刪除相關磁碟。這是考試與實際帳單上都很常踩的坑。
# 6.5 Amazon EC2 成本優化
生活比喻
租車有幾種方式: 臨時租、隨租隨還 (On-Demand) 最貴但最彈性; 簽一年約 (Reserved / Savings Plans) 便宜很多但得綁約; 撿人家臨時退掉的空車 (Spot) 超便宜,但車行隨時可能把車收回去; 包整個車庫 (Dedicated Host) 最貴,但那塊地方只有你能用。
| 購買選項 | 折扣幅度 | 特性 | 適用情境 |
|---|---|---|---|
On-Demand (隨需) | 無折扣 (基準價) | 用多久付多久,不必預先承諾 | 短期、不可預測、首次上線測試 |
Reserved Instances (預留執行個體) | 最高約 72% | 承諾 1 年或 3 年;可選預付程度 | 穩定長期執行的工作負載 |
Savings Plans (節省方案) | 最高約 72% | 承諾「每小時花多少錢」而非綁定特定機型,彈性較高 | 長期使用但機型可能會變動 |
Spot Instances (競價執行個體) | 最高約 90% | AWS 可隨時回收 (提前約 2 分鐘通知) | 可中斷的批次運算、資料分析、CI 建置 |
Dedicated Hosts (專用主機) | 最貴 | 整台實體伺服器專屬於你 | 軟體授權綁定實體機、法規要求實體隔離 |
考試重點
Spot 的關鍵字是「可容忍中斷」—— 凡是題目說「工作可以中斷後重跑」、「批次處理」、「想要最大折扣」, 答案就是 Spot。反過來,如果題目說「不能中斷的正式環境資料庫」, 那 Spot 就是錯誤選項。Dedicated Host 的關鍵字則是「既有軟體授權」與「實體隔離的法規要求」。
# 四大成本優化策略
- 合適大小 (Right sizing): 用 CloudWatch 監控實際用量,別開太大的機器
- 增加彈性 (Elasticity): 用 Auto Scaling 在離峰時自動縮減,不用整天開著
- 選對定價模式:穩定負載用 Reserved / Savings Plans, 可中斷工作用 Spot
- 衡量與監控:持續用 Cost Explorer、Trusted Advisor 檢視有沒有閒置資源
# 6.6 容器服務
生活比喻
容器就像便當盒:把程式和它需要的東西 (函式庫、設定) 一起打包好,不管拿到哪台機器上打開,內容都一模一樣,不會出現「在我電腦上跑得好好的啊」這種問題。虛擬機器 (EC2) 是連整間廚房一起搬走,容器只搬那個便當盒 —— 所以更輕、啟動更快。
| 服務 | 做什麼 | 白話理解 |
|---|---|---|
Amazon ECS | AWS 自家的容器編排服務 | 負責決定「哪個便當該放到哪台機器上、掛了要重開」的排程管理員 |
Amazon EKS | AWS 代管的 Kubernetes 服務 | 同樣是排程管理員,但用的是業界標準的 Kubernetes, 方便跨雲遷移 |
AWS Fargate | 容器的無伺服器運算引擎 | 可搭配 ECS 或 EKS 使用; 你不用管底層 EC2 機器,AWS 全包 |
Amazon ECR | 容器映像檔的儲存庫 | 存放便當盒設計圖的倉庫,類似 Docker Hub 但在 AWS 內 |
考試重點
ECS 與 EKS 都是「編排 (orchestration)」服務,Fargate 是「執行模式」而不是編排服務 —— 它跟 ECS/EKS 是搭配關係,不是替代關係。題目若說「要跑容器,但完全不想管理伺服器」, 答案指向 Fargate; 若說「已經在用 Kubernetes, 想搬到 AWS」, 答案是 EKS。
# 6.7 AWS Lambda
生活比喻
Lambda 像是「感應式電燈」: 平常完全不耗電,有人走過 (事件發生) 才亮起來,人走了就自動關掉。你不需要有一台整天開著的伺服器在那邊待命,也不用為了沒人使用的時間付錢。
定義
AWS Lambda: 無伺服器 (serverless) 運算服務。你只上傳程式碼 (函式), 由事件觸發執行,AWS 自動處理伺服器配置、擴展與可用性。「無伺服器」不是真的沒有伺服器,而是你不需要管理伺服器。
# 核心特性
- 事件驅動:可由 S3 檔案上傳、API Gateway 請求、DynamoDB 資料變更、排程等觸發
- 單次執行最長 15 分鐘 —— 這是重要的限制,長時間運行的工作不適合 Lambda
- 自動擴展:同時進來一千個請求就自動跑一千份,不用自己設定擴展規則
- 計費方式:依「請求次數」加上「執行時間 × 配置的記憶體」計算; 閒置時完全不收費
考試重點
Lambda 的 15 分鐘上限幾乎必考。題目若描述「需要連續跑好幾個小時的資料處理」,Lambda 就是錯的,該用 EC2 或 AWS Batch。另一個高頻考點是計費邏輯:Lambda 沒有請求時不收任何費用,這是它跟「開著就要付錢」的 EC2 最大的差異。
# 6.8 AWS Elastic Beanstalk
生活比喻
Elastic Beanstalk 像是交給裝潢統包商:你只要說「我要一間咖啡廳」, 水電、隔間、招牌他全部幫你搞定。但如果你之後想自己動手改牆壁,鑰匙也還是在你手上 —— 底層開出來的 EC2、負載平衡器你依然看得到、改得動。
- 你只需要上傳程式碼,Elastic Beanstalk 自動處理容量配置、負載平衡、Auto Scaling 與應用程式健康監控
- 支援多種語言與平台:Java、.NET、PHP、Node.js、Python、Ruby、Go、Docker
- Elastic Beanstalk 本身完全免費,你只需要為它幫你開出來的底層資源 (EC2、EBS、ELB 等) 付費
- 你仍保有對底層 AWS 資源的完整控制權,可隨時自行調整
考試重點
「Elastic Beanstalk 要多少錢?」—— 答案是服務本身不收費,只收底層資源的費用。另一個常考的區辨是它跟 Lambda 的差別:Beanstalk 底下還是有一直開著的伺服器 (所以持續計費),Lambda 則是沒事件就不跑也不收費。
# 6.9 服務詞彙速查
| 名稱 | 一句話定義 |
|---|---|
| EC2 | 雲端上的虛擬伺服器,控制權最高 |
| AMI | 建立 EC2 用的機器範本 (含作業系統與軟體) |
| EBS | 掛載給 EC2 使用的區塊儲存磁碟 |
| User Data | EC2 開機時自動執行的初始化腳本 |
| Spot Instance | 最高省 90% 但可能被回收的執行個體 |
| Savings Plans | 承諾每小時花費金額以換取折扣的方案 |
| ECS / EKS | 容器編排服務 (自家 / Kubernetes) |
| Fargate | 免管理伺服器的容器執行引擎 |
| ECR | 容器映像檔儲存庫 |
| Lambda | 事件驅動的無伺服器函式運算 |
| Elastic Beanstalk | 上傳程式碼即自動部署的平台服務 |
# 重點回顧
- 計算服務依「你管多少」排序:EC2 (全都自己管)→ 容器 (管映像檔)→ Beanstalk (只管程式碼與部署)→ Lambda (只管程式碼)。
- EC2 停止後不收運算費,但 EBS 儲存費照收;Terminate 才是真正結束。
- 五種購買選項:On-Demand (彈性)、Reserved / Savings Plans (長期折扣)、Spot (最省但可被回收)、Dedicated Host (實體隔離)。
- ECS / EKS 是編排,Fargate 是「不用管伺服器」的執行模式,兩者搭配使用。
- Lambda 事件驅動、單次最長 15 分鐘、閒置不收費;Elastic Beanstalk 服務免費,只付底層資源。
# 自我測驗
EC2 執行個體「停止(Stopped)」之後,還會產生哪些費用?
答:掛載的 EBS 磁碟儲存費用仍會持續計費。 運算費用會停止,但磁碟還佔用空間,所以儲存費照收。
一個可以中斷、重跑也沒關係的批次運算工作,用哪種購買選項最省錢?
答:Spot Instances。 最高可省約 90%, 代價是 AWS 可能隨時回收 (會提前約 2 分鐘通知), 所以只適合可容忍中斷的工作。
AWS Lambda 單次執行的時間上限是多久?
答:15 分鐘。 超過這個時間的工作不適合用 Lambda, 應改用 EC2、AWS Batch 或容器服務。
想跑 Docker 容器,但完全不想管理底層伺服器,該用什麼?
答:AWS Fargate。 它可以搭配 ECS 或 EKS 使用,由 AWS 負責底層運算資源,你只需定義容器。
使用 AWS Elastic Beanstalk 需要付服務費嗎?
答:不用。 Elastic Beanstalk 本身免費,你只需要為它自動建立的底層資源 (EC2、ELB、EBS 等) 付費。
EC2 開機時要自動安裝軟體、執行初始化設定,該用什麼機制?
答:User Data。 在啟動執行個體時提供的腳本,會在第一次開機時自動執行。