透過 Lambda 執行程式碼
當您編寫 Lambda 函式時,其實是在建立將在獨特的無伺服器環境中執行的程式碼。了解 Lambda 實際執行程式碼的運作原理,需掌握兩個核心面向:定義程式碼與 Lambda 互動方式的程式設計模型,以及決定 Lambda 如何管理程式碼執行時期環境的執行環境生命週期。
Lambda 程式設計模型
程式設計模型作為一套通用規則集,規範了 Lambda 與您程式碼互動的方式,無論您是以 Python、Java 或任何其他支援的語言編寫。程式設計模型包含您的執行時期與處理常式。
-
Lambda 收到事件。
-
Lambda 使用執行時期 (例如 Python 或 Java) 以您程式碼可以使用的格式準備事件。
-
執行時期將格式化的事件傳送至您的處理常式。
-
處理常式使用您在 Lambda 函式中寫入的程式碼來處理事件。
此模型的關鍵是處理常式,這是 Lambda 將事件傳送給您的程式碼進行處理的入口。您可以將其視為程式碼的進入點。當 Lambda 收到事件時,會將此事件與部分內容資訊傳遞給您的處理常式。然後,處理常式會執行您的程式碼來處理這些事件。例如,其可能會在有檔案上傳至 Amazon S3 時讀取該檔案、分析映像或更新資料庫。當程式碼完成事件處理後,處理常式即準備就緒,可繼續處理下一個事件。
Lambda 執行模型
雖然程式設計模型會定義 Lambda 與您程式碼的互動方式,但 Lambda 實際上在 執行環境 中執行函式,這是專為函式建立的、具備安全性與隔離性的運算空間。每個環境都遵循由三個階段組成的生命週期。
-
初始化:Lambda 會建立環境,並做好一切準備以執行函式。這包括設定您選擇的執行時期、載入您的程式碼,以及執行您編寫的任何啟動程式碼。
-
調用:當事件送達時,Lambda 會使用此環境來執行您的函式。環境可以隨著時間的推移依序處理許多事件。隨著到達的事件增多,Lambda 會建立額外的環境來處理增加的需求。當需求下降時,Lambda 會停止不再需要的環境。
-
關閉:最後,Lambda 會關閉環境。在執行此操作之前,其會給予函式機會來清理剩餘的所有任務。
此環境會處理執行函式所涉及的重要層面。其會為函式提供記憶體與 /tmp 目錄用於暫時儲存。其會維護調用之間的資料庫連線等資源,以便函式可以重複使用資源。其提供佈建並行等功能,Lambda 會事先準備好執行環境,藉此提升效能。