太好了 🚀
我們正式邁入最後一階段的挑戰 —— 雲端部署篇:AWS ECS!
今天要開啟全新章節,從「了解雲端怎麼運作」開始。
前幾天,我們把 Todo API 完成了 Docker 化。
現在,我要讓它「真的上雲端跑起來」。
也就是說——我希望別人不用在我電腦上跑 Docker,
只要打開瀏覽器,就能看到線上版的 API。
雲端上有超多選擇:
像是 EC2、ECS、EKS、Lambda…
那為什麼我會選 ECS(Elastic Container Service) 呢?
因為 ECS 是 AWS 專為 容器(Docker) 設計的服務。
它能幫我自動啟動、管理、監控容器,
就像是「幫你跑 Docker Compose 的雲端版」。
簡單比喻:
你本來要在自己電腦跑
docker compose up,
現在 AWS 幫你跑,而且還能自動重啟、監控、擴展。
ECS 的世界裡,有幾個重要角色要先搞懂:
| 名稱 | 解釋 | 生活比喻 |
|---|---|---|
| Cluster | 放置所有容器的「群組」 | 一棟大樓 |
| Task Definition | 容器的設定檔,包含 image、port、環境變數等 | 房間設計圖 |
| Task | 實際跑起來的一個容器實例 | 一間房間 |
| Service | 控制 Task 數量與部署策略 | 管理員,負責房間開幾間、壞了要重開幾間 |
| ECR | 存放 Docker image 的地方(AWS 的 Docker Hub) | 倉庫,放你的鏡像 |
| Fargate | AWS 提供的「無伺服器」容器執行環境 | 自動幫你準備電力、水、清潔的人員(不用自己管主機) |
┌──────────────────────────────┐
│ AWS ECS Cluster │
│ │
│ ┌────────────────────────────┐ │
│ │ Service (Todo API) │ │
│ │ ┌────────────┐ ┌────────────┐ │
│ │ │ Task #1 │ │ Task #2 │ │
│ │ │ (Container)│ │ (Container)│ │
│ │ └────────────┘ └────────────┘ │
│ └────────────────────────────┘ │
│ │ │
│ ▼ │
│ [AWS RDS] ← Prisma ← Express │
└──────────────────────────────┘
整體流程就是:
使用者 → 請求 API → 傳到 Load Balancer → 轉給 ECS 服務 → 容器執行程式 → Prisma 連線到資料庫(RDS)。
1️⃣ 先把你的 Docker image 上傳到 ECR。
(就像推到 GitHub,只是這裡放的是 image)
2️⃣ 建立 Task Definition,描述要如何執行容器:
3️⃣ 建立 Service:
4️⃣ ECS 會自動幫你分配資源(或用 Fargate 全託管),
把容器跑起來,
你只要打開「公開的 URL」就能訪問 API 🎉
| 模式 | 說明 | 適合情境 |
|---|---|---|
| EC2 模式 | 你自己管理主機(EC2),ECS 負責在上面跑容器 | 成本可控、想客製化網路與效能 |
| Fargate 模式 | AWS 全自動管理資源,你只要提供 image | 不想管主機,只想快速部署 |
對我來說,
初學階段最輕鬆的選擇就是 Fargate:
不用開 EC2、不用 SSH 登入,
只要設定好 image 與環境變數,就能上線。
在使用 AWS 服務前,幾乎都會遇到一個問題:
「沒有權限」
這就跟公司裡的「門禁卡」一樣。
IAM(Identity and Access Management)
是 AWS 的權限管理系統。
每個服務(ECS、ECR、RDS)都需要有「角色(Role)」或「使用者(User)」
來決定它能做什麼事。
例如:
今天不會直接部署,而是完成以下兩件事:
✅ 了解 ECS 架構與名詞
✅ 在 AWS Console 先熟悉以下畫面:
👉 明天開始,我們會:
今天是 AWS 部署篇的開場。
老實說,一開始看 ECS 介面會覺得眼花撩亂,
但只要先理解「角色分工」,整件事就變清晰多了:
我覺得最有趣的是,
這就像把我本地的 Docker Compose 交給 AWS 管家:
它不但幫我開機、監控,還會在壞掉時自動重開。
明天開始,我要動手把專案上傳到 ECR,
正式踏出「上雲端」的第一步 🌥️