AWS 基礎介紹 07 · 2026-08-28
AWS Lambda:事件驅動的無伺服器運算
作者:Dr. William|雲端與資訊安全實務工作者
AWS Lambda 是事件驅動的無伺服器運算服務。客戶提供函數程式碼或容器映像、執行環境與設定,AWS 依請求建立及管理執行環境、配置運算資源並按負載擴展。無伺服器不代表沒有伺服器,也不代表免除架構與安全責任;程式碼、套件、權限、事件驗證、機密、併發、失敗處理與資料復原仍須由客戶治理。
服務定位:Lambda 適合短生命週期、可由事件觸發、能水平擴展且不依賴固定主機狀態的工作。它降低伺服器佈建與作業系統維護負擔,但不是長時間常駐程序、任意作業系統控制、無限制執行時間或所有低延遲工作負載的通用替代品。
核心概念:事件、執行環境與併發
- 函數與執行環境:函數包含程式碼、Runtime、記憶體、逾時、環境變數、暫存儲存與執行角色。AWS 可重用執行環境,因此全域初始化能降低延遲,但不能把暫存狀態當成永久資料。
- 事件來源:API Gateway、Application Load Balancer、S3、EventBridge、SNS、SQS、DynamoDB Streams 等服務可直接或間接觸發函數。同步、非同步與輪詢式觸發的回應、重試及錯誤處理不同。
- 版本與別名:已發布版本是不可變快照;別名可指向版本並支援加權流量,適合逐步發布與回復。
$LATEST不應成為無控制的正式發布流程。 - 併發:每個處理中的請求會占用併發。Reserved Concurrency 可限制或保留容量;Provisioned Concurrency 可預先初始化環境以降低冷啟動,但會增加費用。
- 冷啟動:建立新執行環境時會初始化 Runtime、程式碼與相依套件。套件大小、Runtime、VPC 連線與初始化工作都可能影響延遲。
- 失敗語意:非同步事件可重試並送往目的地或死信佇列;SQS 與串流事件來源具有批次、可見性與重送語意。函數必須處理重複事件、部分批次失敗與失序。
適合與不適合的使用情境
適合
- API 後端、Webhook、檔案轉換、排程工作與事件通知。
- 處理 S3 物件、SQS 訊息、EventBridge 事件或 DynamoDB Streams 變更。
- 流量波動大、工作可拆分、單次執行時間有限且能無狀態運作的服務。
- 需要依請求計費,並希望把伺服器生命週期交由受管服務處理的團隊。
不適合
- 超過服務最長執行時間、必須永久常駐、需要特權作業系統操作或特殊硬體控制的程序。
- 需要穩定微秒級延遲,且無法接受冷啟動或共享服務配額影響的工作。
- 高度依賴本機持久狀態、長連線或大型單體應用,卻未規劃拆分與外部狀態管理。
- 忽略重試、冪等性、下游容量與可觀測性,只把既有程式直接包成函數。
示意故事案例:私有文件上傳後處理
以下為示意案例,非真實客戶案例。某教育平台讓使用者透過 API Gateway 取得短效上傳流程,文件直接寫入啟用 Block Public Access 與 KMS 加密的 S3 儲存貯體。S3 事件送入 SQS,再由 Lambda 批次讀取,執行格式驗證、惡意內容檢查與中繼資料抽取。函數不接受任意目標路徑,只能讀取指定前綴、寫入隔離結果區,且不能修改儲存貯體政策。
Lambda 透過執行角色取得最小權限,外部服務機密由 Secrets Manager 提供,不放入程式碼或明文環境變數。處理結果寫入 DynamoDB;連續失敗的訊息進入死信佇列並觸發告警。CloudWatch 記錄錯誤率、Duration、Throttles、IteratorAge 或佇列積壓,CloudTrail 稽核函數、政策與事件來源設定變更。跨區 S3 副本、函數基礎設施設定與部署成品依 RTO/RPO 保存及演練。
建置與運作流程
- 定義事件契約:確認來源、Schema、大小、順序、重複可能、同步或非同步模式、峰值速率、延遲、錯誤處理與資料敏感度。
- 選擇 Runtime 與封裝:使用受支援 Runtime、精簡套件與鎖定版本;對 ZIP、Layer 或容器映像執行弱點、授權及來源檢查。
- 建立執行角色:只允許必要 Action、Resource 與條件。人員透過 MFA 與短期憑證部署;函數不使用長期存取資料。
- 設計網路:只有存取 VPC 私有資源時才配置 VPC 連線。使用 Security Group、私有子網路及 VPC Endpoint 控制路徑,評估 NAT、DNS、IP 容量與跨可用區費用。
- 管理機密與加密:機密存放 Secrets Manager 或 Parameter Store,敏感環境變數與資料使用 KMS;設定輪替、快取期限與失敗處理。
- 設定觸發與防護:驗證資源政策、API 授權、來源帳號、事件簽章、SQS 可見性逾時、批次大小及最大事件期限。公開 Function URL 僅在明確需求下啟用,並配置授權、WAF 前置架構或相應入口控制。
- 控制併發:以負載測試設定 Reserved Concurrency、下游連線池與服務配額;低延遲需求再評估 Provisioned Concurrency。
- 處理失敗:程式具冪等性,區分可重試與永久錯誤;設定非同步目的地、DLQ、部分批次回應與人工重播程序。
- 部署版本:使用版本、別名、簽署或核准的成品及漸進式流量;監控錯誤與延遲後自動或人工回復。
- 建立觀測與復原:用 CloudWatch Logs、Metrics、Tracing 與告警監控函數及事件來源,CloudTrail 記錄控制面。以基礎設施即程式碼、跨區成品與資料備份演練重建。
成本、可用性與維運考量
- 主要費用:Lambda 通常依請求數與執行期間使用的記憶體計費,架構、處理器、暫存儲存、Provisioned Concurrency、串流或其他功能可能影響費用;API Gateway、SQS、NAT Gateway、CloudWatch、KMS 與資料傳輸另行計費。
- 記憶體與時間:提高記憶體也會增加可用 CPU,可能縮短執行時間。應以真實負載比較總成本與延遲,而不是只選最低記憶體。
- 流量放大:錯誤重試、無限事件迴圈、過大批次或未限制的公開入口可快速增加費用。設定預算、併發限制、事件年齡、重試上限與異常告警。
- 可用性:Lambda 是區域性服務,會在區域內使用多個可用區基礎設施;但函數依賴的資料庫、NAT、端點、機密與事件來源仍可能成為單點或容量瓶頸。
- 跨區復原:多可用區不等於跨區。以基礎設施即程式碼與相同部署成品在備援區域重建,並處理資料複寫、事件切換、DNS、KMS 多區域設計及機密同步。
- 配額與下游:Lambda 自動擴展可能快於資料庫或外部 API。併發、突增與事件來源配額必須與下游容量、退避及斷路策略共同設計。
Lambda 特有的資安風險與控制
- 事件注入與信任錯置:函數若信任事件欄位、檔名、URL 或來源宣告,可能產生注入、SSRF 或越權。驗證 Schema、型別、長度、簽章與允許清單,並以資源政策限定可信來源帳號與 ARN。
- 過度權限執行角色:共用萬用角色會讓單一函數遭入侵後橫向存取。每個工作負載使用獨立最小權限角色,限制 KMS、Secrets Manager、S3 前綴與資料表操作,透過 Access Analyzer 與 CloudTrail 收斂權限。
- Function URL 或 API 公開:未授權的公開入口可能被濫用、掃描或造成成本型阻斷服務。非必要不公開;必要時使用 IAM 或適合的 API 授權、限流、輸入限制、WAF 與併發上限。
- 機密殘留:環境變數、日誌、錯誤堆疊與可重用執行環境可能洩漏敏感資料。機密由 Secrets Manager 或 Parameter Store 受權取得並輪替;日誌遮罩敏感欄位,暫存檔在使用後清理。
- 相依套件與 Layer 供應鏈:未鎖定套件、未知 Layer 或舊 Runtime 可能導入惡意程式與漏洞。固定版本與雜湊、使用受控成品庫、掃描套件及映像,追蹤 Runtime 淘汰並快速重建。
- 重試與重複執行:至少一次傳遞可能重複扣款、寄信或修改資料。使用冪等鍵、條件式寫入、交易邊界與去重紀錄;DLQ 重播前先確認副作用。
- 日誌不足或過量:缺少請求關聯會阻礙調查,完整記錄事件又可能暴露個資。以結構化日誌記錄必要識別碼與結果,不寫完整敏感內容;CloudWatch 設保留、KMS 與異常告警,CloudTrail 保護控制面稽核。
- VPC 與外傳風險:把函數接入 VPC 不會自動阻止外傳。以私有子網路、Security Group、Endpoint Policy、DNS 與受控 NAT 限制出口,監控異常目的地與資料量。
共同責任邊界
AWS 負責 Lambda 服務所依賴的資料中心、實體硬體、網路、虛擬化、受管執行基礎設施與服務軟體安全,也管理底層伺服器及作業系統。客戶負責函數程式碼、Runtime 選擇、第三方套件與容器映像、事件與輸入驗證、IAM 最小權限、MFA 與短期憑證、公開入口、VPC 隔離、KMS、Secrets Manager/Parameter Store、日誌中的資料、CloudTrail/CloudWatch、併發、重試、備份與跨區復原。自訂 Runtime 與容器映像會增加客戶維護責任。
上線前可執行檢查清單
- □ 事件來源、Schema、大小、重複、順序、重試與失敗目的地已測試。
- □ 部署人員使用 MFA 與短期憑證;每個函數執行角色符合最小權限,沒有長期存取資料。
- □ Function URL、API 與資源政策只接受核准來源,公開入口具授權、限流與必要 WAF 控制。
- □ 私有資源透過受控 VPC 路徑存取,Security Group、Endpoint Policy、NAT 與 DNS 沒有非預期外傳路徑。
- □ 機密位於 Secrets Manager 或 Parameter Store,敏感設定、日誌與暫存資料依需求使用 KMS。
- □ Runtime、套件、Layer 與映像來源可信、版本鎖定且完成弱點掃描,淘汰時程有人追蹤。
- □ 逾時、記憶體、Reserved Concurrency、下游容量與服務配額已依負載測試設定。
- □ 冪等性、部分批次失敗、DLQ、重播、退避與永久錯誤隔離已演練。
- □ CloudWatch 指標、結構化日誌、追蹤與告警涵蓋錯誤、節流、延遲、積壓及成本;CloudTrail 記錄設定變更。
- □ 版本、別名、回復、基礎設施即程式碼、資料備份與跨區重建符合 RTO/RPO,且已完成演練。
AWS 官方一手來源
- AWS Lambda Developer Guide|What is AWS Lambda?(查閱:2026-08-28)
- AWS Lambda Developer Guide|Security(查閱:2026-08-28)
- AWS Lambda Developer Guide|Event source mappings(查閱:2026-08-28)
- AWS Lambda Developer Guide|Understanding retry behavior(查閱:2026-08-28)
- AWS Lambda Developer Guide|Configuring reserved concurrency(查閱:2026-08-28)
- AWS Lambda Developer Guide|Best practices(查閱:2026-08-28)
- AWS Lambda Developer Guide|Connecting functions to a VPC(查閱:2026-08-28)
- AWS|Lambda pricing(查閱:2026-08-28)
- AWS|Shared Responsibility Model(查閱:2026-08-28)
內容說明
本文依查閱日可用的 AWS 官方文件整理,作為基礎學習與架構討論材料;實際部署仍須依 Runtime、區域支援、最新配額與價格、組織政策、法規及風險評估調整。