

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

# 搭配 Lambda 使用 DynamoDB Streams 的最佳實務
<a name="Streams.Lambda.BestPracticesWithDynamoDB"></a>

 AWS Lambda 函數會在*容器中*執行，這是與其他函數隔離的執行環境。當您第一次執行函數時， 會 AWS Lambda 建立新的容器，並開始執行函數的程式碼。

Lambda 函式有一個*處理常式*，每次調用只執行一次。此處理常式包含函數的主要商業邏輯。例如，[步驟 4：建立並測試 Lambda 函式](Streams.Lambda.Tutorial.md#Streams.Lambda.Tutorial.LambdaFunction) 中顯示的 Lambda 函式有一個可處理 DynamoDB Streams 紀錄的處理常式。

您也可以在建立容器之後，但在第一次 AWS Lambda 執行處理常式之前，提供僅執行一次的初始化程式碼。[步驟 4：建立並測試 Lambda 函式](Streams.Lambda.Tutorial.md#Streams.Lambda.Tutorial.LambdaFunction) 中顯示的 Lambda 函式有初始程式碼，可匯入適用於 Node.js 中 JavaScript 的開發套件，並建立 Amazon SNS 的用戶端。這些物件應該只在處理常式外部定義一次。

函數執行後， AWS Lambda 可能會選擇重複使用容器來後續叫用函數。在這種情況下，您的函數處理常式或許能夠重複使用您在初始化程式碼中定義的資源。(您完全無法控制 AWS Lambda 保留容器多長時間，或容器是否得以重複使用。)

對於使用 的 DynamoDB 觸發程序 AWS Lambda，我們建議下列事項：
+ AWS 服務用戶端應該在初始化程式碼中執行個體化，而不是在處理常式中。這可讓 AWS Lambda 在容器生命週期內重複使用現有的連線。
+ 一般而言，您不需要明確管理連線或實作連線集區， 會為您 AWS Lambda 管理。

DynamoDB 串流的 Lambda 取用者無法保證僅交付一次，並可能偶爾導致出現重複項目。請確定您的 Lambda 函式程式碼具有冪等性，以防止因重複處理而產生意外問題。

如需詳細資訊，請參閱《 *AWS Lambda 開發人員指南*》中的[使用 AWS Lambda 函數的最佳實務](https://docs.aws.amazon.com/lambda/latest/dg/best-practices.html)。