

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 透過 Lambda 執行程式碼
<a name="concepts-how-lambda-runs-code"></a>

當您編寫 Lambda 函式時，其實是在建立將在獨特的無伺服器環境中執行的程式碼。了解 Lambda 實際執行程式碼的運作原理，需掌握兩個核心面向：定義程式碼與 Lambda 互動方式的程式設計模型，以及決定 Lambda 如何管理程式碼執行時期環境的執行環境生命週期。

## Lambda 程式設計模型
<a name="concepts-progmodel-overview"></a>

無論您是以 Python、Java 或任何其他支援的語言撰寫，程式設計模型都會做為 Lambda 如何使用程式碼的常見規則集。程式設計模型包含您的執行時期與處理常式。

**對於標準函數：**

1. Lambda 收到事件。

1. Lambda 會使用執行時間，以您的程式碼可以使用的格式準備事件。

1. 執行時期將格式化的事件傳送至您的處理常式。

1. 您的處理常式會使用您撰寫的程式碼來處理事件。

**對於耐用函數：**

1. Lambda 收到事件

1. 執行時間會準備事件和 DurableContext

1. 您的處理常式可以：
   + 使用自動檢查點處理步驟
   + 暫停執行而不耗用資源
   + 從最後一個成功的檢查點繼續
   + 在步驟之間維持狀態

此模型的關鍵是*處理常式*，這是 Lambda 將事件傳送給您的程式碼進行處理的入口。您可以將其視為程式碼的進入點。當 Lambda 收到事件時，會將此事件與部分內容資訊傳遞給您的處理常式。然後，處理常式會執行您的程式碼來處理這些事件。例如，其可能會在有檔案上傳至 Amazon S3 時讀取該檔案、分析映像或更新資料庫。當程式碼完成事件處理後，處理常式即準備就緒，可繼續處理下一個事件。

## Lambda 執行模型
<a name="concepts-exec-env-overview"></a>

雖然程式設計模型會定義 Lambda 與您的程式碼互動的方式，但執行環境是 Lambda 實際執行函數的位置，這是專為您的函數建立的安全隔離運算空間。

**每個環境遵循的生命週期會因標準和耐用函數而異：**

**標準函數 （最多 15 分鐘）：**

1. **初始化：**環境設定和程式碼載入

1. **調用：**函數程式碼的單一執行

1. **關閉：**環境清除

**耐用函數 （最長 1 年）：**

1. **初始化：**環境和持久狀態設定

1. **調用：**具有自動檢查點的多個步驟

1. **等待狀態：**暫停執行而不耗用資源

1. **繼續：**從最後一個檢查點重新啟動

1. **關閉：**清除持久狀態

此環境會處理執行函式所涉及的重要層面。其會為函式提供記憶體與 `/tmp` 目錄用於暫時儲存。**對於持久性函數，它也會管理：**
+ 步驟之間的自動狀態持久性
+ 檢查點儲存和復原
+ 等待狀態協調
+ 長時間執行執行的進度追蹤