本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
從 Amazon MQ 事件來源篩選事件
您可以使用事件篩選來控制 Lambda 將哪些記錄從串流或佇列中傳送至函數。如需事件篩選運作方式的一般資訊,請參閱控制 Lambda 將哪些事件傳送至您的函數。
本節重點介紹 Amazon MQ 事件來源的事件篩選。
注意
Amazon MQ 事件來源映射僅支援對data
金鑰進行篩選。
Amazon MQ 事件篩選基本概念
假設您的 Amazon MQ 訊息佇列包含有效 JSON 格式或純字串的訊息。範例記錄如下所示,資料在 data
欄位中會轉換為 Base64 編碼字串。
對於 Active MQ 和 Rabbit MQ 代理程式,您可以使用事件篩選透過 data
索引鍵來篩選記錄。假設您的 Amazon MQ 佇列包含以下 JSON 格式的訊息。
{ "timeout": 0, "IPAddress": "203.0.113.254" }
若要僅篩選 timeout
欄位大於 0 的記錄,FilterCriteria
物件將如下所示。
{ "Filters": [ { "Pattern": "{ \"data\" : { \"timeout\" : [ { \"numeric\": [ \">\", 0] } } ] } }" } ] }
補充說明,此處是篩選條件的 Pattern
在純文字 JSON 中擴展的值。
{ "data": { "timeout": [ { "numeric": [ ">", 0 ] } ] } }
您可以使用 主控台 AWS CLI 或 AWS SAM 範本來新增篩選條件。
使用 Amazon MQ,您也可以篩選訊息為純字串的記錄。假設您只想處理訊息以「結果:」開頭的記錄。FilterCriteria
物件如下所示。
{ "Filters": [ { "Pattern": "{ \"data\" : [ { \"prefix\": \"Result: \" } ] }" } ] }
補充說明,此處是篩選條件的 Pattern
在純文字 JSON 中擴展的值。
{ "data": [ { "prefix": "Result: " } ] }
您可以使用 主控台 AWS CLI 或 AWS SAM 範本來新增篩選條件。
Amazon MQ 訊息必須是 UTF-8 編碼的字串,可以是純字串或 JSON 格式。這是因為 Lambda 會在套用篩選條件之前,將 Amazon MQ 位元組陣列解碼成 UTF-8。如果您的訊息使用其他編碼方式 (例如 UTF-16 或 ASCII),或者訊息格式與 FilterCriteria
格式不相符,則 Lambda 只會處理中繼資料篩選條件。下表摘要說明特定行為:
傳入訊息 格式 | 訊息屬性的篩選條件模式格式 | 產生的動作 |
---|---|---|
純文字的字串 |
純文字的字串 |
根據您的篩選條件標準之 Lambda 篩選條件。 |
純文字的字串 |
資料屬性沒有篩選條件模式 |
Lambda 篩選條件 (僅限其他中繼資料屬性) 會根據您的篩選條件標準而定。 |
純文字的字串 |
有效的 JSON |
Lambda 篩選條件 (僅限其他中繼資料屬性) 會根據您的篩選條件標準而定。 |
有效的 JSON |
純文字的字串 |
Lambda 篩選條件 (僅限其他中繼資料屬性) 會根據您的篩選條件標準而定。 |
有效的 JSON |
資料屬性沒有篩選條件模式 |
Lambda 篩選條件 (僅限其他中繼資料屬性) 會根據您的篩選條件標準而定。 |
有效的 JSON |
有效的 JSON |
根據您的篩選條件標準之 Lambda 篩選條件。 |
非 UTF-8 編碼字串 |
JSON、純字串或沒有模式 |
Lambda 篩選條件 (僅限其他中繼資料屬性) 會根據您的篩選條件標準而定。 |