DynamoDB 串流和 AWS Lambda 觸發程序 - Amazon DynamoDB

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

DynamoDB 串流和 AWS Lambda 觸發程序

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

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

注意

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

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 開發人員指南