[Terraform Module] 一個低成本、高靈活性,輕鬆預熱上百個 Lambda Function 的解決方案:Tag-Based Lambda Warmer

前言 - 現有架構的挑戰 最近,我在一個 Serverless 專案中遇到了一個讓人頭疼的挑戰。這個專案運行在多個 Lambda Functions 之上,為了避免冷啟動帶來的延遲問題影響使用者體驗,需要確保 Functions 處於「熱啟動」狀態(Warm Start),如何有效管理大量的預熱 (prewarm) 操作變得非常棘手。 常見的解決方案之一,是為每個 Lambda Function 配置一個 EventBridge Scheduler,雖然可以達到預熱效果,但: 管理成本高:需要單獨為每個 Lambda Function 配置 Scheduler,數量多難以管理。 靈活性不足:難以快速響應需求變更,重新部署新的 Lambda Function 時,需要修改 Scheduler 的 Target。 基於這些挑戰,我開發了 Tag-Based Lambda Warmer Terraform Module,提供了一種低成本、高靈活性的解決方案。 Tag-Based Lambda Warmer 介紹 Tag-Based Lambda Warmer 的核心理念非常簡單: 將需要被預熱 (prewarm) 的 Lambda Function 加上指定的 Tag(例如:Prewarm=true)。 當你部署 Terraform Module 後,EventBridge Schduler 會定期調用 Tag-Based Lambda Warmer,Warmer 會根據 Tag 自動篩選需要被預熱的 Lambda Functions 這套解決方案特別適合以下情境: 低流量、間歇性工作負載:例如開發環境或小型應用中的 Lambda Functions,需要偶爾處於熱啟動狀態,但不需要持續高效能。 多環境管理:通過不同的 Tag(例如 Environment=dev 或 Environment=prod),可以輕鬆在多個環境中靈活部署。 成本敏感型專案:對於中小型 Serverless 應用,這種解決方案能有效降低運維成本。 還是要提醒,這種透過定期調用來保持熱啟動狀態的解決方案,只能讓你保持至少有一個熱啟動狀態的 Execution Environment,今天流量突然有一個高峰,碰上冷啟動是不可避免的...

December 30, 2024 · 2 min

如何使用 AWS EventBridge Scheduler 及 Lambda 自動排程調整 AWS Aurora Serverless V2 ACU

EventBridge 簡介 EventBridge Scheduler 是 AWS 在 2022/11 推出的新服務,相較於傳統事件驅動的 EventBridge,新推出的 Scheduler 是時間驅動的一個服務,你可以很輕易的在上面設置一些排程任務去調用 AWS 的其他服務,截至 2024/04/06,官方文件是顯示可以調用 AWS 超過 270 種服務,就我目前使用下來的心得,真的是相當易用! 常見的使用場景: 自動調整服務容量: 如 Amazon ECS 任務的數量或今天要介紹的 Aurora Serverless V2 ACU (今天要示範的) 自動化維護任務: 定時啟動或停止 EC2 Instance,以節省成本或進行系統維護。 SasS 訂閱即將到期通知: 蠻多 SaaS 系統可能會需要在用戶快到期時發送信件通知客戶續訂 架構說明 關於本文,我會預設讀者們對於 AWS 有基本的操作能力和認識,對於一些較瑣碎的動作會省略不講解 本文要教學的是排程每天固定時間,會透過 EventBridge Scheduler 調用 Lambda Function 然後將 Aurora Serverless V2 的 ACU 降低。 關於這個動作,我們其實要拆解成兩個部分: 用 Lambda 去調整 Aurora Serverless v2 ACU 用 EventBridge 去 Trigger Lambda 下圖是從 AWS 官方 Blog 下載下來的架構圖,純示意圖大概讓各位認識 EventBridge 和 Lambda 的配合 整體的步驟大概會是...

April 6, 2024 · 2 min