如何在 Lambda 函數中對 DynamoDB 串流進行疑難排解?

2 分的閱讀內容
0

我想透過 AWS Lambda 函數使用或對 Amazon DynamoDB 串流進行疑難排解。

解決方案

以下是將 DynamoDB 串流與 Lambda 函數搭配使用時的常見問題:

當 DynamoDB 串流為觸發條件,為什麼我的 Lambda 函數無法擴展?

當您在 DynamoDB 資料表啟用 DynamoDB 串流時,Amazon DynamoDB 會為每個分割區關聯一個分區。例如,如果您的 DynamoDB 資料表有 10 個分割區並在此資料表啟用 DynamoDB 串流,那麼您會有 10 個分區。

如果資料表的分割區數量增加,那麼串流的分區數量也會增加。

DynamoDB 資料表的每個分割區最多可處理 3000 個讀取容量單位 (RCU)、1000 個寫入容量單位 (WCU) 以及 10 GB 的資料。超過其中任何一個參數會導致以下情況:

  • 在資料表中新增新的分割區。
  • 在 DynamoDB 串流建立新的分區。

如何控制從 DynamoDB 串流進行的資料處理?

批次大小和批次時間段有助於控制串流的資料處理。

**批次時間段:**設定在叫用之前等待記錄的時間長度。批次時間段可用於控制從 DynamoDB 串流進行的資料處理。請注意,此行為取決於串流內的資料可用性。

批次大小: 設定批次的記錄上限。

除非符合下列條件,否則不會叫用 Lambda 函數:

  • 承載大小達到 6 MB (同步叫用限制)。
  • 批次時間段達到其最大值 (在此範例中為 60 秒)。
  • 批次大小達到其最大值。

平行化因子如何用於加快資料處理速度?

平行化因子透過允許更多並行執行數來快速處理大量記錄。您可以設定平行化因子 (預設值為: 1,最大值為 10),以增加處理的分區數量。啟用平行化因子時,請務必使用隨機或唯一的分割區索引鍵,以達到最高的輸送量。

計算方式: 平行化因子 (每個分區的並行批次)\ * 分區 = 並行執行數

BisectBatchonFunctionError 設定是什麼?

如果 Lambda 函數失敗,則當 BisectBatchonFunctionError 選項設定為 true 時,批次將分為兩部分。然後這些分割批次將進行重試,直到找到問題記錄為止。重試是根據最大重試和記錄存留期設定進行處理。

如果重試嘗試選項設為 0,則不會嘗試對失敗的記錄進行重試。在這種情況下,DynamoDB 串流會捨棄失敗的記錄,或將其傳送至無效字母佇列 (DLQ) (若有設定)。

範例 1

在下面的範例,'p' 代表問題記錄而重試嘗試設定為 0

批次記錄: [1,2,3p,4,5p]

分割 1: [3p,4,5p]

分割 2:[3p] [4,5p] 重試捨棄 [3p],因為它被識別為問題記錄。或者,它會傳送至 DLQ (若有設定)。

分割 3: [4] 已處理。[5p] 已捨棄或被傳送至 DLQ (若有設定)。

範例 2

在下列範例,'x' 代表問題記錄。重試嘗試設定為 -1

插入的批次記錄:[1,2,3x,4,5x]

[3x,4,5x]

[3x,4,5x]

[3x,4,5x]

[3x,4,5x]

為什麼 DynamoDB 串流的 Lambda 的迭代器存留期會增加?

以下是 Lambda 的迭代器存留期增加的常見原因:

  • DynamoDB 串流有不正確的記錄。
  • 對串流進行大量的寫入操作 (PutItemBatchWriteItem)。Lambda 函數可能無法跟上處理高寫入量的速度。如果發生這種情況,請增加 DynamoDB 資料表佈建容量,以增加每 1000 個 WCU 的分割區計數。增加佈建容量會增加並行 Lambda 執行的數量。如需詳細資訊,請參閱當 DynamoDB 串流為觸發條件,為什麼我的 Lambda 函數無法擴展?
  • DynamoDB 分割區的數量減少,例如移轉至新帳戶或新資料表。
  • Lambda 函數中存在限流或函數錯誤。AWS Lambda 會重試記錄,直到整個批次成功處理或記錄的有效期到期為止。此外,DynamoDB 串流的保留期為 24 小時。若要避免資料遺失,最佳做法是設定 DLQ。如果已設定 DLQ,則 AWS Lambda 會在淘汰完成或記錄保留期到期後,將失敗記錄批次傳送至 DLQ。
    若要解決 Lambda 函數錯誤,請檢查 Amazon CloudWatch Logs以取得錯誤的詳細資訊。
  • Lambda 函數持續時間增加。
  • 您必須最佳化錯誤處理和平行化因子。

如需詳細資訊,請參閱為什麼我的 Lambda 迭代器存留期會增加,以及如何減少它?

AWS 官方
AWS 官方已更新 1 年前