什麼是 AWS Lambda?
AWS Lambda 是 Amazon Web Services 提供的無伺服器運算服務,讓開發者可以執行程式碼而無需管理伺服器。您只需上傳程式碼,Lambda 會自動處理執行、擴展和高可用性等所有基礎設施管理工作。
Lambda 的核心優勢
- 無需管理伺服器:完全免除伺服器維護工作
- 自動擴展:根據請求量自動調整執行實例
- 按使用量計費:只為實際執行時間付費
- 高可用性:內建容錯機制與多可用區部署
建立 Lambda 函數步驟
步驟一:登入 AWS 管理控制台
- 前往 AWS 管理控制台
- 在服務搜尋欄輸入「Lambda」
- 點選 Lambda 服務進入控制台
步驟二:建立函數
- 點擊「建立函數」按鈕
- 選擇建立方式:
- 從頭開始撰寫:自行編寫程式碼
- 使用藍圖:使用預先建立的範本
- 容器映像:使用 Docker 容器映像
- 瀏覽無伺服器應用程式儲存庫:使用社群分享的應用程式
步驟三:設定基本資訊
| |
步驟四:撰寫程式碼
| |
步驟五:測試函數
- 點擊「測試」標籤
- 建立測試事件
- 執行測試並檢視結果
支援的執行環境
AWS Lambda 支援多種程式語言執行環境:
| 執行環境 | 支援版本 |
|---|---|
| Node.js | 18.x, 20.x |
| Python | 3.9, 3.10, 3.11, 3.12 |
| Java | 11, 17, 21 |
| .NET | 6, 8 |
| Go | 1.x |
| Ruby | 3.2, 3.3 |
| 自訂執行環境 | Amazon Linux 2, Amazon Linux 2023 |
使用容器映像
除了原生執行環境外,Lambda 也支援容器映像部署:
- 映像大小上限:10 GB
- 支援任何程式語言
- 可使用自訂相依性
觸發器設定
Lambda 函數可透過多種 AWS 服務觸發執行:
API Gateway
建立 RESTful API 端點來觸發 Lambda:
| |
S3 事件
當 S3 儲存貯體發生變更時觸發:
- 物件建立(PUT、POST、COPY)
- 物件刪除
- 物件還原
CloudWatch Events / EventBridge
設定排程執行或事件規則:
| |
其他常見觸發器
- DynamoDB Streams:資料表變更觸發
- SQS:訊息佇列觸發
- SNS:通知服務觸發
- Kinesis:串流資料觸發
- ALB:應用程式負載平衡器觸發
定價模式
AWS Lambda 採用按使用量計費的定價模式:
免費方案
每月免費額度(永久免費):
- 100 萬次請求
- 40 萬 GB-秒的運算時間
計費項目
1. 請求數量
| 項目 | 價格 |
|---|---|
| 每 100 萬次請求 | $0.20 USD |
2. 持續時間
依據分配的記憶體和執行時間計算:
| 記憶體 | 每 GB-秒價格 |
|---|---|
| 128 MB - 10,240 MB | $0.0000166667 USD |
計費範例
假設您的函數配置 512 MB 記憶體,每月執行 300 萬次,每次執行 200 毫秒:
| |
其他費用考量
- Provisioned Concurrency:預留並行執行能力額外計費
- 資料傳輸:跨區域或對外傳輸資料需付費
- 其他 AWS 服務:如 API Gateway、S3 等使用費用另計
最佳實踐
優化冷啟動時間
- 減少程式碼套件大小
- 使用 Provisioned Concurrency
- 選擇適當的執行環境
有效管理相依性
- 使用 Lambda Layers 共享程式庫
- 只包含必要的相依性
適當配置記憶體
- 更多記憶體 = 更多 CPU 效能
- 進行效能測試找出最佳配置
實作錯誤處理
- 使用 Dead Letter Queue(DLQ)
- 設定適當的重試策略
結論
AWS Lambda 提供了強大且彈性的無伺服器運算能力,適合各種使用情境,從簡單的 API 端點到複雜的事件驅動架構。透過本文的介紹,您應該已經了解如何建立、設定和優化 Lambda 函數。開始您的無伺服器之旅吧!