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

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

實作 Lambda 事件篩選的最佳做法

以下是設定的最佳作法亞馬遜 SQS 事件來源的 Lambda 事件篩選:

  • 讓自己熟悉Lambda 服務的篩選規則語法— 具體而言Lambda 用於亞馬遜 SQS 的篩選規則語法。然後,根據您的業務邏輯設計事件篩選器。任何事件篩選器的有效性取決於它只在應該時叫用 Lambda 函數的能力。若要完成此操作,您必須將正確的語法套用至篩選規則,以便規則反映應用程式商務邏輯的需求。

  • 如果應用程式的商務邏輯需要更複雜的一系列篩選條件,請確定您使用多層級篩選。如需詳細資訊和範例資料物件,請參閱多級過濾AWS Lambda開發者指南

  • 限制 Amazon SQS 保留未處理訊息的時間長度,方法是定義MessageRetentionPeriod亞馬遜 SQS 請求參數中的值。確定您定義的值符合應用程式的使用案例,方法是識別通常需要多長時間才能處理有效的訊息。如需詳細資訊,請參閱SetQueueAttributes亞馬遜 SQS API 參考。另請參閱避免不匹配的消息累積本指南的一節。

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

  • 請務必啟用 Lambda 服務上的事件篩選器功能。一開始建立 Lambda 函數時,必須啟用此功能。如需指示,請參閱將篩選條件附加至事件來源對應 (主控台)或者將篩選條件附加至事件來源對應 (AWS CLI)AWS Lambda開發者指南

避免不匹配的消息累積

如果事件篩選器的設計不適當,大量不相關的訊息可能會快速壓倒 Lambda 函數的 Amazon SQS 佇列。在這個案例中,Lambda 函數會處理初始訊息批次中的所有訊息,即使其中很少有相關訊息也是如此。雖然函數需要更長的時間來處理其他不相關的訊息,但更不相關的訊息會新增至 Amazon SQS 佇列。這些新訊息會導致函數花費更長的時間來處理下一個訊息批次,除非MessageRetentionPeriod參數已配置。隨著時間的推移,來源佇列中不相關的訊息數目會超過有效訊息。

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

如需指示,請參閱SetQueueAttributes亞馬遜 SQS API 參考