AWS Lambda 完全使用指南:從零搭建Serverless 函數運算架構

AWS Lambda 完全使用指南:從零搭建Serverless 函數運算架構

某出海SaaS 公司的後端團隊曾告訴我們:他們每月為一批」0 點到6 點幾乎無請求」的API 服務支付固定的EC2 費用。換算下來,這些伺服器有效利用率不到15%,卻一直燒錢。

遷移到AWS Lambda 後,同樣的業務邏輯,每月帳單從 2,400降到180——Lambda 只在請求到達時計費,空閒時不產生任何費用。


一、什麼是AWS Lambda? Serverless 的核心邏輯

1.1 傳統伺服器vs Serverless 的本質區別

維度 傳統EC2 伺服器 AWS Lambda (Serverless)
計費方式 按小時/月付費,無論是否有請求 按呼叫次數+ 執行時長計費
擴容方式 手動或預設規則擴容,有延遲 自動瞬時擴容,可併發數千
維運負擔 需管理OS、修補程式、安全性群組 零伺服器管理,專注業務代碼
冷啟動 無(進程常駐) 存在冷啟動延遲(首次100~500ms)
適用場景 穩定持續的工作負載 間歇性、事件驅動的工作負載

核心思想:Lambda 讓你只寫”函數”,AWS 負責運行環境、擴容、監控的一切——你只為程式碼真正運行的時間付費。

1.2 Lambda 的定價邏輯(2026 年最新)

Lambda 的免費額度非常慷慨:

  • 免費請求數:每月100 萬次調用(永久免費)
  • 免費計算時長:每月40 萬GB-秒
  • 超出後的費用
    • 請求:$0.20 / 100 萬次
    • 計算長度:$0.0000166667 / GB-秒

舉例計算:每天被呼叫10 萬次、平均執行200ms、記憶體512MB 的函數:

  • 月調用次數:300 萬次→ 超過免費額度200 萬次→ 費用:$0.40
  • 月計算時間:300 萬× 0.2s × 0.5GB = 30 萬GB-秒→ 全在免費額度內
  • 每月總費用:約$0.40

二、Lambda 核心概念速覽

2.1 函數(Function)

Lambda 的基本執行單元,支援以下執行時間:

語言 支援版本
Python 3.9、3.10、3.11、3.12
Node.js 18.x、20.x
Java 11、17、21
Go 1.x(via provided.al2023)
.NET 6、8
自訂運行時 任何語言(透過Runtime API)

2.2 觸發器(Trigger)

Lambda 函數本身是被動的-它需要觸發器來調用。常見觸發器:

觸發器類型 使用場景
API Gateway / ALB HTTP API 接口,最常見
S3 事件 文件上傳時觸發處理(圖片壓縮、格式轉換)
DynamoDB Streams 資料變更時觸發下游邏輯
SQS 佇列 非同步訊息處理,削峰填谷
EventBridge 定時任務(類似Cron)
SNS 訊息通知觸發處理
Cognito 使用者註冊/登入事件觸發

2.3 執行環境與生命週期

請求到達↓ [冷啟動階段] 僅首次或實例回收後觸發├── 初始化執行環境(下載程式碼、啟動運行時) ├── 執行初始化程式碼(import、連線池等handler 外的程式碼) └── 約100~500ms 延遲[熱執行階段] 絕大多數請求├──直接執行函數├——執行環境保留約5~15 分鐘,等待下次再利用

三、第一個Lambda 函數:實戰搭建流程

3.1 透過AWS 控制台創建(5分鐘上手)

Step 1:進入Lambda 控制台→ 點擊”創建函數”

Step 2:選擇”從頭開始創作”,填寫:

  • 函數名稱:my-first-function
  • 運行時:Python 3.12
  • 架構:x86_64(ARM/Graviton2 可降低約20% 成本)

Step 3:編寫handler 程式碼(控制台內嵌編輯):

import json

def lambda_handler(event, context):
    # event: 觸發器傳入的數據
    # context: 函數運行時資訊(剩餘時間、請求ID等)
    
    name = event.get('名', 'World')
    
    return {
        'statusCode': 200,
        'body': json.dumps({
            'message': f'Hello, {name}!',
            'requestId': context.aws_request_id }) }

Step 4:配置測試事件→ 執行測試,驗證輸出

Step 5:新增觸發器(以API Gateway 為例):

  • 選擇”API Gateway” → 建立新API → REST API
  • 部署後取得公開HTTPS 端點,即可透過HTTP 呼叫函數

3.2 使用AWS SAM 進行本地開發(建議生產環境)

AWS Serverless Application Model(SAM)是官方推薦的IaC 工具

本地測試命令

# 安裝SAM CLI
pip install aws-sam-cli

# 本機啟動API
sam local start-api

# 運行單一函數測試
sam local invoke ProcessOrderFunction --event events/test_event.json

四、效能優化:解決冷啟動問題

冷啟動是Lambda 使用中最常被質疑的問題,以下是系統性解決方案:

4.1 減少冷啟動時間

優化手段 效果 實操方法
選擇輕量運行時 顯著 Python/Node.js 冷啟動遠快於Java
減小部署包體積 明顯 只打包必要依賴,使用Lambda Layer 共享庫
使用ARM 架構 輕微 Graviton2 處理器,冷啟動快約10%
程式碼最佳化 明顯 將DB 連線、SDK 初始化移到handler 外部,利用實例重複使用
# ✅ 建議:初始化程式碼放在handler 外(只在冷啟動時執行一次)
import boto3

# 這裡的程式碼只在冷啟動時運行
dynamodb = boto3.resource('dynamodb') table = dynamodb.Table('orders')

def lambda_handler(event, context):
    # 這裡直接重複使用已初始化的table 對象
    response = table.get_item(Key={'order_id': event['order_id']})
    return response['Item']

4.2 Provisioned Concurrency(預置並發)

對於延遲敏感型應用(如即時API),可以預先初始化指定數量的執行環境:

# 為函數配置10 個預置並發實例
aws lambda put-provisioned-concurrency-config \ --function-name my-api-function \ --qualifier production \ --provisioned-concurrent-executions 10

成本提示:預置並發按小時收費($0.0000646 / GB-小時),適合高流量關鍵路徑,不適合所有函數全量配置。


五、生產環境最佳實踐

5.1 記憶體配置策略

Lambda 的記憶體直接影響CPU 算力和費用。找到最優記憶體的方法:

  • Lambda Power Tuning 工具:AWS 開源工具,自動測試不同記憶體配置的效能/成本比
  • 經驗規則:記憶體翻倍,CPU 也翻倍;如果執行時間減少50%+,升記憶體反而更省錢

5.2 並發限制與帳戶配額

並發類型 預設限制 說明
帳戶並發上限 1000(可申請提升) 整個帳戶所有函數共享
預留並發 按函數配置 保障關鍵函數不被其他函數搶佔
爆發並發(Burst Limit) 500~3000(按區域) 突發流量時的瞬時擴容上限

六、Lambda 與其他AWS 服務的黃金組合

最常見的Serverless 架構模式

使用者請求↓ API Gateway(HTTPS 端點) ↓ Lambda(業務邏輯處理) ├──→ DynamoDB(資料持久化) ├──→ S3(檔案儲存) ├──→ SQS(非同步任務佇列) └──→ SNS(訊息通知)

典型出海業務場景

場景 Lambda 用途 搭配服務
獨立站訂單處理 接收訂單、校驗、寫庫 API GW + DynamoDB + SQS
圖片/影片處理 上傳後自動壓縮、打浮水印 S3 觸發+ S3 存儲
定時數據報告 每日拉取廣告數據匯總 EventBridge 定時觸發+ S3/郵件
AI 推理接口 呼叫Bedrock/SageMaker API GW + Bedrock

結論:Lambda 適合你的業務嗎?

Lambda 不是萬能的,但對於以下特徵的工作負載,它是最佳解:

✅ 適合Lambda

  • 請求量波動大(低谷幾乎為零)
  • 單次執行時間短(< 15 分鐘)
  • 無狀態處理邏輯
  • 事件驅動型任務

❌ 不適合Lambda

  • 需要維持長連線(WebSocket 需配合API Gateway)
  • 執行時間> 15 分鐘(以ECS Fargate 取代)
  • 需要大量本機磁碟I/O(/tmp 上限10GB)

☁️ 想把現有後端遷移到Serverless 架構?

aws-oncloudai.com 提供免費的AWS 架構評估,協助出海企業找到最合適的雲端原生方案,實現成本降低與彈性提升。

👉 預約免費架構諮詢→ aws-oncloudai.com


本文由OnCloud AI 技術團隊撰寫| aws-oncloudai.com 專注於協助出海企業建構高效、低成本的AWS 雲端架構

更多探索

Tell me what you need