引言:為什麼選擇 AWS?
「我想把程式部署到雲端,但不知道該用什麼。」
如果你問十個工程師,大概有六個會說:「試試 AWS。」
AWS(Amazon Web Services)是目前全球市佔率最高的雲端平台。
從新創公司到大型企業,無數的網站和應用程式都跑在 AWS 上。
但對新手來說,AWS 的學習曲線確實很陡。
光是進入 Console,就會看到上百種服務,完全不知道該從哪裡開始。
這篇文章會帶你:
- 了解 AWS 常用的部署服務
- 選擇適合你的部署方式
- 實際完成一次 EC2 部署
- 避開新手常踩的坑
讀完這篇,你就能自己把程式部署到 AWS 了。

AWS 部署前的準備
註冊 AWS 帳號
如果你還沒有 AWS 帳號,先去註冊一個。
註冊網址: https://aws.amazon.com/
註冊時需要:
- Email 地址
- 信用卡(用於驗證身份,免費方案不會扣款)
- 手機號碼(接收驗證碼)
重要提醒:
2025 年 7 月中之後新申請的帳號,AWS Free Tier 已經改成額度制:不是特定服務固定免費 12 個月,而是註冊送 US$100,6 個月內完成特定服務體驗最多再送 US$100(合計最多 US$200),額度在帳號建立後 12 個月內要用完,用完才開始正式收費。少數服務例外,屬於「永久免費」,不受這個額度限制。
務必設定帳單警報,避免意外費用。
了解 AWS 免費方案
AWS 免費方案(Free Tier)現況:
| 服務 | 新帳號(2025-07-15 後) | 限制 |
|---|---|---|
| EC2 | 從註冊額度扣款,無固定免費時數 | t3.micro、t4g.micro 等入門機型 |
| Lambda | 100 萬次請求/月+40 萬 GB 秒運算,永久免費 | 不受額度限制,新舊帳號皆適用 |
| S3 | 從註冊額度扣款,無固定免費儲存空間 | 不再有獨立的 5GB 免費額度 |
| RDS | 從註冊額度扣款,無固定免費時數 | 依機型計費 |
注意: 2025 年 7 月中以前就有帳號的人,仍維持舊制(EC2/RDS 750 小時/月、S3 5GB,為期 12 個月);新申請帳號一律是額度制。額度用完、或超過額度涵蓋範圍的服務,就會開始計費,請務必設定帳單警報。
選擇適合的 AWS 服務
AWS 有太多服務了。
對於部署應用程式,主要用這幾種:
| 服務 | 適合情境 | 學習曲線 | 費用 |
|---|---|---|---|
| EC2 | 需要完全控制的伺服器 | 高 | 按時計費 |
| Elastic Beanstalk | 快速部署,不想管伺服器 | 中 | 免費(底層資源收費) |
| Lambda | 事件驅動、短時間任務 | 中 | 按請求計費 |
| ECS/EKS | 容器化應用、微服務 | 很高 | 按資源計費 |
| Lightsail | 簡單的 VPS 需求 | 低 | 固定月費 |
新手建議路線:
- 想學完整流程 → EC2
- 想快速上線 → Elastic Beanstalk 或 Lightsail
- 只需要跑 Function → Lambda
AWS 部署方式比較
讓我詳細比較四種主要的部署方式。
EC2(虛擬主機)
EC2(Elastic Compute Cloud) 就是一台雲端虛擬機器。
你可以完全控制它,就像擁有一台自己的伺服器。
優點:
- 完全控制:可以安裝任何軟體
- 彈性配置:CPU、記憶體、硬碟都可調整
- 適合任何語言和框架
缺點:
- 需要自己管理:安全更新、監控、備份
- 學習曲線陡:需要會 Linux 基礎
- 閒置也要付費
適合: 需要完整伺服器控制、學習 DevOps、長時間運行的服務
Elastic Beanstalk(PaaS)
Elastic Beanstalk 是 AWS 的 PaaS(Platform as a Service)。
你只需要上傳程式碼,AWS 幫你處理其他所有事。
優點:
- 快速部署:幾分鐘就能上線
- 自動管理:自動擴展、負載平衡、健康檢查
- 支援多種語言:Node.js、Python、Java、.NET 等
缺點:
- 客製化受限:不像 EC2 那麼自由
- 底層仍收費:實際上是幫你建 EC2、RDS 等資源
適合: 想快速上線、不想管伺服器、標準 Web 應用
Lambda(Serverless)
Lambda 是無伺服器(Serverless)運算。
你只需要寫函數,AWS 幫你執行。
優點:
- 按請求付費:沒人用就不用錢
- 自動擴展:1 請求和 100 萬請求都能處理
- 不用管伺服器:完全專注在程式碼
缺點:
- 冷啟動:閒置後第一次請求會慢
- 執行時間限制:最長 15 分鐘
- 不適合持續運行的服務
適合: API Gateway 後端、事件處理、排程任務
ECS/EKS(容器)
ECS(Elastic Container Service) 和 EKS(Elastic Kubernetes Service) 是容器管理服務。
優點:
- 環境一致:Docker 容器確保到處都能跑
- 微服務友善:適合複雜的服務架構
- 可攜性高:不綁定 AWS
缺點:
- 學習曲線很陡:需要會 Docker、K8s
- 設定複雜:網路、權限、儲存都要設定
適合: 微服務架構、大型團隊、已經用 Docker

實戰:使用 EC2 部署 Node.js 應用
接下來,我們實際用 EC2 部署一個 Node.js 應用。
這個流程會讓你理解完整的伺服器部署過程。
Step 1:建立 EC2 實例
- 登入 AWS Console
- 在服務中找到「EC2」
- 點擊「Launch Instance」
設定選項:
| 項目 | 建議設定 |
|---|---|
| Name | my-first-app |
| AMI | Amazon Linux 2023 |
| Instance Type | t3.micro(新帳號從註冊額度扣款;2025-07-15 前的舊帳號仍可選 t2.micro 走免費時數) |
| Key Pair | 建立新的 Key Pair(下載保存好!) |
| Network | 使用預設 VPC |
| Security Group | 新建,開放 22 和 80 Port |
重要: Key Pair 只能下載一次。下載的 .pem 檔案要妥善保管,弄丟就無法 SSH 連線。
Step 2:設定安全群組
安全群組(Security Group)就是防火牆規則。
需要開放的 Port:
| Port | 用途 |
|---|---|
| 22 | SSH 連線 |
| 80 | HTTP 網站 |
| 443 | HTTPS 網站 |
| 3000 | Node.js 開發用(可選) |
設定方式:
- 在 EC2 Dashboard 找到「Security Groups」
- 選擇你的安全群組
- 點擊「Edit inbound rules」
- 新增上述規則
安全提醒: 不要把 22 Port 開放給 0.0.0.0/0(全世界)。建議設定只允許你的 IP。
Step 3:SSH 連線到伺服器
EC2 實例啟動後,用 SSH 連線進去。
在 Mac/Linux:
# 設定 Key 檔案權限
chmod 400 your-key.pem
# SSH 連線
ssh -i "your-key.pem" ec2-user@你的公開IP
在 Windows:
使用 PuTTY 或 Windows Terminal。
連線成功後,你會看到 Amazon Linux 的歡迎畫面。
Step 4:安裝 Node.js 環境
連線進伺服器後,安裝 Node.js:
# 更新系統
sudo yum update -y
# 安裝 Node.js(使用 nvm)
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash
source ~/.bashrc
# 安裝 Node.js LTS 版本
nvm install --lts
nvm use --lts
# 確認安裝
node -v
npm -v
Step 5:部署程式碼
有幾種方式可以把程式碼放到伺服器:
方式一:Git Clone(推薦)
# 安裝 Git
sudo yum install git -y
# Clone 你的專案
git clone https://github.com/你的帳號/你的專案.git
cd 你的專案
# 安裝相依套件
npm install
# 啟動應用
node app.js
方式二:SCP 上傳
# 在本機執行
scp -i your-key.pem -r ./my-project ec2-user@你的IP:~/
Step 6:設定 PM2 與 Nginx
直接用 node app.js 跑程式,一旦 SSH 斷線就會停止。
用 PM2 讓程式在背景持續運行:
# 安裝 PM2
npm install -g pm2
# 用 PM2 啟動
pm2 start app.js --name my-app
# 設定開機自動啟動
pm2 startup
pm2 save
接著安裝 Nginx 作為反向代理:
# 安裝 Nginx
sudo yum install nginx -y
# 啟動 Nginx
sudo systemctl start nginx
sudo systemctl enable nginx
設定 Nginx 反向代理:
sudo nano /etc/nginx/conf.d/my-app.conf
加入以下內容:
server {
listen 80;
server_name 你的網域或IP;
location / {
proxy_pass http://localhost:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
重啟 Nginx:
sudo systemctl restart nginx
現在打開瀏覽器,輸入你的 EC2 公開 IP,應該就能看到你的網站了!

AWS 部署常見問題
連線被拒絕
症狀: SSH 連不上,顯示 Connection refused
常見原因:
-
安全群組沒開 Port 22
- 檢查 Inbound rules 有沒有 SSH 規則 -
IP 不對
- 確認用的是「Public IPv4 address」 -
Key 檔案權限錯誤
- 執行chmod 400 your-key.pem -
實例未運行
- 檢查 Instance State 是 Running
權限不足
症狀: 執行指令顯示 Permission denied
解決方法:
# 使用 sudo 提升權限
sudo yum install nginx
# 或切換到 root
sudo su -
費用超支
症狀: 收到意外的 AWS 帳單
預防方法:
-
設定帳單警報
- 進入 Billing → Budgets
- 設定超過特定金額就發 Email 通知 -
關閉不用的資源
- 不用的 EC2 實例要 Terminate(不只是 Stop)
- 刪除不用的 EBS Volume -
使用 Cost Explorer
- 定期檢查費用來源

FAQ 常見問題
Q1:AWS 免費方案真的免費嗎?
在額度或免費服務範圍內是免費的。2025 年 7 月中之後新申請的帳號已經改成額度制(註冊送 US$100,6 個月內活動最多再送 US$100,合計最多 US$200),不是舊制那種「特定服務固定 12 個月免費」。
但要注意:
- 額度用完(最晚帳號建立後 12 個月)就會開始收費
- 超出額度涵蓋範圍的用量會收費
- 有些服務沒有免費額度,但也有 30 多項服務是永久免費,不受額度限制
建議: 設定帳單警報,一旦超過預期就會收到通知。
Q2:EC2 實例 Stop 和 Terminate 有什麼差別?
| 動作 | 效果 | EBS Volume | 費用 |
|---|---|---|---|
| Stop | 暫停實例 | 保留 | EBS 要錢,EC2 不用 |
| Terminate | 刪除實例 | 預設刪除 | 完全免費 |
建議: 不用的實例直接 Terminate,避免 EBS 持續計費。
Q3:我需要學 Linux 才能用 AWS 嗎?
用 EC2 的話,需要基礎的 Linux 知識。
如果不想學 Linux:
- 用 Elastic Beanstalk:上傳程式碼就好
- 用 Lightsail:有圖形介面
- 用 Amplify:前端專案最簡單
Q4:AWS 和 Vercel/Railway 怎麼選?
| 需求 | 選擇 |
|---|---|
| 快速上線、不管伺服器 | Vercel、Railway |
| 需要完整控制、學習 DevOps | AWS EC2 |
| 企業級、大規模 | AWS |
| 預算有限 | Railway、Render |
Q5:部署到 AWS 後怎麼綁定網域?
- 購買網域(Route 53 或其他)
- 在 Route 53 建立 Hosted Zone
- 新增 A Record 指向 EC2 的 Elastic IP
- 等待 DNS 生效(通常幾分鐘到幾小時)
結語:AWS 是進階選擇,但值得學習
AWS 確實比 Vercel、Railway 複雜很多。
但學會 AWS,你會獲得:
- 完整的基礎設施知識
- 業界最廣泛使用的技能
- 更多的客製化彈性
如果你是新手,建議先從簡單的平台開始(Vercel、Railway)。
等需要更多控制時,再來學 AWS。
如果你已經決定要用 AWS,今天就試著完成第一次 EC2 部署吧。
其他雲端選擇請參考 GCP 部署完整指南。
部署基礎知識請見 程式部署完整指南:從零開始學會 Deploy 的所有知識。
Node.js 部署詳解請見 Node.js 部署教學:從本機到雲端完整指南。

雲端部署搞不懂?
AWS、GCP、Azure,選擇困難?讓我們幫你找出最適合的雲端方案。
參考資料
- AWS Documentation - Getting Started with Amazon EC2
- AWS,AWS Free Tier FAQs(額度制新舊帳號差異,2026 年查證)
- Amazon EC2 User Guide for Linux Instances
- PM2 Documentation - Quick Start
- Nginx Documentation - Beginner's Guide