DynamoDB Streams 和觸發器 AWS Lambda - Amazon DynamoDB

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

DynamoDB Streams 和觸發器 AWS Lambda

Amazon DynamoDB 已與整合, AWS Lambda 因此您可以建立觸發器 — 可自動回應 DynamoDB Streams 中事件的程式碼片段。您可以利用觸發條件建立對 DynamoDB 資料表資料修改做出反應的應用程式。

如果您在表格上啟用 DynamoDB Streams,則可以將串流 Amazon 資源名稱 (ARN) 與您寫入的 AWS Lambda 函數產生關聯。然後,即可將該 DynamoDB 資料表的所有變動動作擷取為串流上的項目。例如,您可以設定觸發條件,以便在修改資料表中的項目時,新記錄會立即顯示在該資料表的串流中。

注意

您可以訂閱兩個以上的 Lambda 函數。如果您為一個 DynamoDB 串流訂閱兩個以上的 Lambda 函數,則可能會發生讀取節流。

AWS Lambda 服務會以每秒四次的速度輪詢串流以偵測新記錄。當有新的串流記錄可用時,系統會同步叫用 Lambda 函數。對於相同的 DynamoDB 串流,最多可以訂閱兩個 Lambda 函數。如果您訂閱兩個以上的 Lambda 函數到相同的 DynamoDB 串流,可能會發生讀取節流。

Lambda 函數可以傳送通知、啟動工作流程,或執行您指定的其他許多動作。您可以撰寫 Lambda 函數僅將每筆串流紀錄複製到耐久性儲存,例如 Amazon S3 File Gateway (Amazon S3),並在您的資料表中建立永久的寫入活動稽核追蹤。或者,假設您有一個會寫入 GameScores 表的手機遊戲應用程式。每當 TopScore 資料表的 GameScores 屬性更新時,對應的串流紀錄就會寫入資料表串流。然後,這個事件就會觸發在社交媒體網路張貼賀電的 Lambda 函數。(此函數也可以編寫為忽略所有非更新至 GameScores 或不修改 TopScore 屬性的串流紀錄)。

如果函數傳回錯誤,Lambda 會不斷重試批次直到處理成功或資料過期。您還可以設定 Lambda,使用較小批次重試、限制重試次數、在記錄太舊時捨棄,以及其他選項。

作為效能最佳實務,Lambda 函數必須為短期函數。為了避免產生不必要的處理延遲,此函數也不應執行複雜的邏輯。尤其對於高速串流而言,相較於同步長時間執行的 Lambda,觸發非同步後續處理 Step Function 工作流程是較佳的做法。

您無法在不同 AWS 帳戶中使用相同的 Lambda 觸發器。DynamoDB 表和 Lambda 函數都必須屬於相同 AWS 的帳戶。

如需詳細資訊 AWS Lambda,請參閱AWS Lambda 開發人員指南