AWS Elastic Beanstalk 是 AWS 提供的 「平台即服務 (PaaS)」。
一句話總結:它是開發者在 AWS 上部署網頁應用程式 (Web Apps) 「最快、最簡單」的方法。你只需要上傳程式碼 (Code),Elastic Beanstalk 就會自動幫你搞定剩下的基礎設施(開 EC2、設 Load Balancer、設定 Auto Scaling)。
這對於只想專注寫程式、不想花時間管伺服器設定的開發者來說,是首選工具。以下是 AWS Elastic Beanstalk 的主要功能與運作機制整理:
1. 核心功能 (Core Features)
A. 自動化基礎設施佈建 (Automated Provisioning)
- 你只要做一件事:上傳程式碼(ZIP 檔或透過 Git)。
- 它幫你做所有事:選擇並啟動作業系統 (OS)。安裝語言執行環境 (如 Java, Python, Node.js)。設定 Load Balancer (ELB) 處理流量。設定 Auto Scaling Group (ASG) 處理擴展。設定 Security Groups 防火牆。
B. 廣泛的平台支援 (Platform Support)
它支援目前最主流的程式語言與伺服器環境:
- 語言:Java, .NET, PHP, Node.js, Python, Ruby, Go。
- 伺服器:Tomcat, IIS, Passenger, Puma。
- 容器:Docker (如果你用的語言不在上述清單,打包成 Docker 就能跑)。
C. 兩種環境層級 (Environment Tiers) —— 考試重點!
Beanstalk 根據應用程式的用途,提供兩種架構模式:
- Web Server Environment (Web 伺服器環境):用來處理 HTTP 請求(網站前端、API)。架構:Route 53 →→ ELB →→ EC2。
- Worker Environment (工作者環境):用來處理後台長任務(如影片轉檔、發送 Email)。架構:SQS Queue →→ EC2 (背景程式從 Queue 抓任務來做)。考試題:如果你覺得 Web Server 負載太重,可以把耗時的任務拆出來放到 Worker Tier。
2. 進階管理功能 (Advanced Management)
D. 部署策略 (Deployment Policies) —— 考試必考!
當你要更新程式碼時,Beanstalk 提供多種策略來避免服務中斷:
- All at once:一次更新所有機器(會停機,速度最快)。
- Rolling:分批更新(如每次更新 30% 機器,服務不中斷但效能會降低)。
- Rolling with additional batch:先多開一批新機器來更新,確保總容量不變。
- Immutable (不可變):直接開一整組全新的 ASG 跑新版本,確認沒問題後切換過去,舊的刪掉。最安全但最慢。
- Blue/Green (藍綠部署):這不是透過 Policy 設定,而是建立一個全新的環境。透過 CNAME Swap (交換 URL),瞬間將流量從舊環境切到新環境。
E. 監控與日誌 (Monitoring & Logging)
- Health Dashboard:提供紅綠燈狀態(Green = OK, Red = 壞掉)。
- CloudWatch 整合:自動收集 CPU、記憶體等指標。
- Log Rotation:自動將應用程式日誌傳送到 S3 或 CloudWatch Logs 保存。
F. 設定即代碼 (Configuration as Code)
- .ebextensions 資料夾:這是 Beanstalk 的靈魂。你可以在程式碼根目錄放一個 .config 檔案(YAML 格式),在裡面寫:「我要安裝 Linux 套件」、「我要修改 PHP.ini 設定」、「我要建立一個 DynamoDB」。這讓環境設定可以跟著程式碼一起被版控。
3. 雖然是 PaaS,但保留控制權
- 很多 PaaS 是黑盒子(你碰不到底層),但 Elastic Beanstalk 不是。
- 完全控制權:它幫你開好 EC2 後,你依然可以 SSH 進去,依然可以在 EC2 Console 看到那些機器。你隨時可以接手管理。
4. 超級比一比:Beanstalk vs. CloudFormation vs. OpsWorks

5. 考試/實務 關鍵字 (Keywords)
- "Quickest / Easiest way to deploy web application" (部署 Web App 最快/最簡單的方法)。
- "Platform as a Service (PaaS)"。
- "Upload code and handle capacity provisioning/scaling" (上傳代碼並處理容量佈建/擴展)。
- Worker Tier / SQS (處理背景任務)。
- Blue/Green Deployment using CNAME Swap (利用交換網址進行藍綠部署)。
- .ebextensions (設定檔)。
- Docker (支援未列出的語言)。
總結
如果你不想當個「伺服器管理員」,只想專心把網站寫好並發布上線,選 AWS Elastic Beanstalk 就對了。










