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

AWS 部署前的準備
註冊 AWS 帳號
如果你還沒有 AWS 帳號,先去註冊一個。
註冊網址: https://aws.amazon.com/
註冊時需要:
- Email 地址
- 信用卡(用於驗證身份,免費方案不會扣款)
- 手機號碼(接收驗證碼)
重要提醒:
註冊後會自動獲得 12 個月的免費方案。但有些服務超過免費額度會收費。
務必設定帳單警報,避免意外費用。
了解 AWS 免費方案
AWS 免費方案(Free Tier)包含:
| 服務 | 免費額度 | 限制 |
|---|---|---|
| EC2 | 750 小時/月 | t2.micro 或 t3.micro |
| Lambda | 100 萬次請求/月 | 每月 |
| S3 | 5GB 儲存空間 | 12 個月 |
| RDS | 750 小時/月 | db.t2.micro |
注意: 免費方案有 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 | 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 免費方案真的免費嗎?
在免費額度內是免費的。
但要注意:
- 12 個月後會開始收費
- 超過免費額度會收費
- 有些服務沒有免費方案
建議: 設定帳單警報,一旦超過預期就會收到通知。
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 (2025)
- AWS Free Tier - What's Included (2025)
- Amazon EC2 User Guide for Linux Instances (2025)
- PM2 Documentation - Quick Start (2025)
- Nginx Documentation - Beginner's Guide (2025)