iT邦幫忙

2025 iThome 鐵人賽

0

太好了 🚀
我們正式邁入最後一階段的挑戰 —— 雲端部署篇:AWS ECS!
今天要開啟全新章節,從「了解雲端怎麼運作」開始。

前幾天,我們把 Todo API 完成了 Docker 化。
現在,我要讓它「真的上雲端跑起來」。
也就是說——我希望別人不用在我電腦上跑 Docker,
只要打開瀏覽器,就能看到線上版的 API。


☁️ 為什麼選 AWS ECS?

雲端上有超多選擇:
像是 EC2、ECS、EKS、Lambda…
那為什麼我會選 ECS(Elastic Container Service) 呢?

因為 ECS 是 AWS 專為 容器(Docker) 設計的服務。
它能幫我自動啟動、管理、監控容器,
就像是「幫你跑 Docker Compose 的雲端版」。

簡單比喻:

你本來要在自己電腦跑 docker compose up
現在 AWS 幫你跑,而且還能自動重啟、監控、擴展。


⚙️ ECS 的角色介紹

ECS 的世界裡,有幾個重要角色要先搞懂:

名稱 解釋 生活比喻
Cluster 放置所有容器的「群組」 一棟大樓
Task Definition 容器的設定檔,包含 image、port、環境變數等 房間設計圖
Task 實際跑起來的一個容器實例 一間房間
Service 控制 Task 數量與部署策略 管理員,負責房間開幾間、壞了要重開幾間
ECR 存放 Docker image 的地方(AWS 的 Docker Hub) 倉庫,放你的鏡像
Fargate AWS 提供的「無伺服器」容器執行環境 自動幫你準備電力、水、清潔的人員(不用自己管主機)

🧱 ECS 架構圖(簡化版)

┌──────────────────────────────┐
│           AWS ECS Cluster           │
│                                      │
│  ┌────────────────────────────┐   │
│  │       Service (Todo API)          │   │
│  │   ┌────────────┐   ┌────────────┐ │
│  │   │  Task #1    │   │  Task #2    │ │
│  │   │  (Container)│   │  (Container)│ │
│  │   └────────────┘   └────────────┘ │
│  └────────────────────────────┘   │
│        │                                     │
│        ▼                                     │
│    [AWS RDS] ← Prisma ← Express              │
└──────────────────────────────┘

整體流程就是:
使用者 → 請求 API → 傳到 Load Balancer → 轉給 ECS 服務 → 容器執行程式 → Prisma 連線到資料庫(RDS)。


🐳 ECS 運作流程(Step by Step)

1️⃣ 先把你的 Docker image 上傳到 ECR
(就像推到 GitHub,只是這裡放的是 image)

2️⃣ 建立 Task Definition,描述要如何執行容器:

  • 用哪個 image?
  • 開哪個 port?
  • 要帶哪些環境變數?

3️⃣ 建立 Service

  • 設定要跑幾個容器(例如 2 個)
  • 掛在哪個 Cluster
  • 是否需要自動重啟、負載平衡

4️⃣ ECS 會自動幫你分配資源(或用 Fargate 全託管),
把容器跑起來,
你只要打開「公開的 URL」就能訪問 API 🎉


🧩 Fargate vs EC2 模式差異

模式 說明 適合情境
EC2 模式 你自己管理主機(EC2),ECS 負責在上面跑容器 成本可控、想客製化網路與效能
Fargate 模式 AWS 全自動管理資源,你只要提供 image 不想管主機,只想快速部署

對我來說,
初學階段最輕鬆的選擇就是 Fargate

不用開 EC2、不用 SSH 登入,
只要設定好 image 與環境變數,就能上線。


🧠 IAM 是什麼?

在使用 AWS 服務前,幾乎都會遇到一個問題:

「沒有權限」

這就跟公司裡的「門禁卡」一樣。

IAM(Identity and Access Management)
是 AWS 的權限管理系統。

每個服務(ECS、ECR、RDS)都需要有「角色(Role)」或「使用者(User)」
來決定它能做什麼事。

例如:

  • ECS 任務需要能「讀取 ECR 映像」→ 給它 ECR Pull 權限
  • 你的本機要能「推送映像到 ECR」→ 給你 ECR Push 權限

🧭 今天的練習目標

今天不會直接部署,而是完成以下兩件事:

✅ 了解 ECS 架構與名詞
✅ 在 AWS Console 先熟悉以下畫面:

  • ECR(映像倉庫)
  • ECS(Cluster / Task Definition / Service)
  • IAM(角色與權限)

👉 明天開始,我們會:

  1. 建立 ECR Repository
  2. 把 Todo API 的 Docker image 推上去
  3. 建立第一個 ECS Cluster,讓容器在雲端跑起來

🎯 學習心得 / 今日收穫

今天是 AWS 部署篇的開場。
老實說,一開始看 ECS 介面會覺得眼花撩亂,
但只要先理解「角色分工」,整件事就變清晰多了:

  • ECR:放映像
  • ECS:跑容器
  • Task:跑一次容器
  • Service:幫你控管容器的生命週期
  • Fargate:全託管執行環境

我覺得最有趣的是,
這就像把我本地的 Docker Compose 交給 AWS 管家:
它不但幫我開機、監控,還會在壞掉時自動重開。

明天開始,我要動手把專案上傳到 ECR,
正式踏出「上雲端」的第一步 🌥️


上一篇
Day36 - 持續成長學習藍圖 - Docker(小作品 – Docker 化 Todo API 完成版)
下一篇
Day38 - 持續成長學習藍圖 - AWS 與 ECS(建立第一個 ECS Cluster_手動部署容器)
系列文
《轉職學習日記:JavaScript × Node.js × TypeScript × Docker × AWS ECS》39
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言