【AWS】Day 8:運算服務 - AWS Lambda(Serverless 運算服務)
從前幾篇我們一路看了 EC2(自己管主機)、Elastic Beanstalk(半自動化部署)。
但如果你希望:
-
完全不用開伺服器
-
完全不用自己處理機器、網路、Scaling
-
只要專心「寫功能」就好
那 AWS Lambda 正是為了這樣的世界而生的!
今天正式進入 AWS Serverless 世界 —— Lambda!
什麼是 AWS Lambda?
AWS Lambda 是一個「事件驅動」的計算服務。
你只需要撰寫小段的程式碼 Function,告訴 AWS:
-
什麼時候要執行(例如 API 呼叫、排程時間、檔案上傳)
-
要執行什麼邏輯(你的程式碼)
-
設定好記憶體、超時時間
剩下的:
-
執行環境(OS、Patch、Security)
-
擴展(Scaling up & down)
-
負載均衡
-
日誌收集
-
資源回收
全部 AWS 幫你自動處理。
你只要負責寫功能,其他都不用煩惱!
Lambda 的基本特性
| 項目 | 說明 |
|---|---|
| 運算單位 | Function(函數) |
| 部署方式 | 上傳程式碼(ZIP)或直接在 Console 編輯 |
| 支援語言 | Node.js, Python, Java, Go, .NET, Ruby… |
| 記憶體設定 | 128MB ~ 10GB(每64MB為單位) |
| 執行時間限制 | 最長 15 分鐘 |
| 價格模式 | 依執行次數 + 記憶體用量 + 執行時間計價 |
| 自動擴展 | 是(幾乎無上限,橫向自動擴展) |
Lambda 的典型使用情境
-
API Gateway ➔ Lambda ➔ 回應 Web API
-
S3 上傳檔案 ➔ Lambda 處理轉檔(圖片縮圖、影片轉檔)
-
DynamoDB 資料異動 ➔ Lambda 處理後續邏輯
-
排程任務(類似 crontab) ➔ 用 EventBridge 觸發 Lambda
-
輕量型後端服務(例如 Form submit、小型 Game Server)
Lambda 的基本運作流程
以「API Server」為例:
-
使用 API Gateway 建立 API Endpoint
-
當使用者呼叫 API 時,API Gateway 觸發 Lambda
-
Lambda 執行你的程式邏輯(例如查資料庫、處理資料)
-
Lambda 執行完畢,把結果回傳給 API Gateway,再傳給使用者
整個過程中:
-
沒有 EC2
-
沒有 Load Balancer
-
沒有固定伺服器
-
自動擴展,不需要自己設定台數
Lambda 的計費方式
Lambda 的收費方式非常彈性,也很適合小量或突發性使用的場景。
計費公式:
總費用 = 呼叫次數 +(記憶體用量 × 執行時間)
詳細來說:
-
每個月前 1M 次請求免費
-
每個月 400,000 GB-seconds 免費
-
超出後,依照實際用量超便宜的單位收費
簡單說就是:
-
程式小、執行快,超便宜
-
不執行,不收費(真正的 pay-as-you-go)
Lambda 的限制與注意事項
雖然 Lambda 很香,但也有一些天然限制要注意:
| 限制項目 | 說明 |
|---|---|
| 最大執行時間 | 15 分鐘 |
| 單次部署包大小上限 | 250MB(含 layer) |
| 同步觸發最大負載 | 預設 1000 concurrency(可申請提升) |
| 須設計無狀態 | 每次執行是全新環境,不保留記憶體資料 |
小結
今天介紹了 AWS Lambda 的核心概念:
-
完全免維護伺服器
-
按次計費、真正用多少付多少
-
適合 API、小型運算任務、背景作業
-
超級擴展性,適合不確定流量的應用
Lambda 完全顛覆了傳統開發部署方式,讓開發者能更專注在功能本身,而不是維護伺服器!
下一篇,我們將繼續探討
Day 9:AWS 容器服務 - EKS(Elastic Kubernetes Service),
看看當需要更複雜的大型應用,想用 Kubernetes 架構時,AWS 是怎麼支援的!
Day 9 再見 👋
如果你想,我還可以加一篇
📄 「AWS Lambda 實作教學(Hello World + API Gateway 快速串接)」
讓大家馬上寫出第一個 Lambda,並從瀏覽器直接呼叫。要不要也一起?🚀✨
要的話告訴我,我可以馬上補上!