實作 Lambda 事件篩選的最佳實務 - AWS 規定指引

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

實作 Lambda 事件篩選的最佳實務

以下設定 Amazon SQS 事件來源的 Lambda 事件篩選的最佳實務:

  • 熟悉 Lambda 服務的篩選規則語法,特別是 Lambda 用於 Amazon SQS 的篩選規則語法。然後,根據您的業務邏輯設計事件篩選條件。任何事件篩選條件的有效性都取決於其僅在應調用 Lambda 函數時的能力。為此,您必須對篩選規則套用正確的語法,以便規則反映應用程式業務邏輯的需求。

  • 在應用程式的業務邏輯需要一系列更複雜的篩選條件的情況下,請確保使用多級篩選。如需詳細資訊和資料物件範例,請參閱《AWS Lambda 開發人員指南》中的多級篩選

  • 透過在 Amazon SQS 請求參數中定義MessageRetentionPeriod值,以限制 Amazon SQS 保留未處理訊息的時間長度。透過識別處理有效訊息通常需要的時間長度,確保您定義的值適合您應用程式的使用案例。如需詳細資訊,請參閱 Amazon SQS API 參考SetQueueAttributes中的。另請參閱本指南的避免不相符的訊息累積一節。

  • 在 Lambda 函數無法使用可能導致無法處理有效訊息的情況下,設定 Amazon SQS 無效字母佇列。此額外的 Amazon SQS 佇列有助於避免在無伺服器應用程式架構中建立 snowball 反模式。如需詳細資訊,請參閱本指南的避免 snowball 反模式一節。

  • 確保啟用 Lambda 服務上的事件篩選功能。當您最初建立 Lambda 函數時,必須啟用此功能。如需指示,請參閱《AWS Lambda 開發人員指南》中的將篩選條件附接至事件來源映射 (主控台)將篩選條件附接至事件來源映射 (AWS CLI)

避免不相符的訊息累積

如果事件篩選條件設計不當,大量不相關訊息可能會很快淹沒 Lambda 函數的 Amazon SQS 佇列。在這種情況下,Lambda 函數會處理初始訊息批次中的所有訊息,即使其中很少有相關訊息。雖然函數需要更長時間處理額外的不相關訊息,但更多不相關訊息會新增至 Amazon SQS 佇列。除非已設定參數,否則這些新訊息會導致函MessageRetentionPeriod數花費更長的時間來處理下一個訊息批次。隨著時間的推移,來源佇列中不相關訊息的數量超過了有效訊息的數量。

MessageRetentionPeriod參數可限制 Amazon SQS 佇列在幾秒鐘內保留未處理訊息的時間長度。例如,3,600 秒的MessageRetentionPeriod值會在一小時後從佇列中移除所有未處理的訊息。

如需相關指示,請參閱 Amazon SQS API 參考SetQueueAttributes中的。