跳至內容

如何使用 EventBridge Pipes 篩選事件?

3 分的閱讀內容
0

我想使用 Amazon EventBridge Pipes 從 AWS 來源擷取事件並將事件連接到目標。

簡短描述

EventBridge Pipes 會從以下來源接收事件資料:

  • Amazon DynamoDB 串流
  • Amazon Kinesis 串流
  • Amazon MQ
  • Amazon Managed Streaming for Apache Kafka (Amazon MSK) 串流
  • 自我管理 Apache Kafka 串流
  • Amazon Simple Queue Service (Amazon SQS) 佇列

如果您將資料事件從來源傳送到目標,則會產生資源開並帶來額外成本。目標必須處理所有資料事件並實作業務邏輯,以捨棄不必要的事件。最佳做法是只向目標傳送特定資料事件。

若要在將篩選後的事件傳送到目標之前對其進行增強,請使用 API 目的地或以下 AWS 服務:

  • Amazon API Gateway
  • AWS Lambda
  • AWS Step Functions

解決方法

**注意:**EventBridge Pipes 使用事件模式。每個 EventBridge Pipes 來源都有包含核心訊息或資料的欄位。

使用篩選條件降低開銷

若要篩選來源傳送的事件,EventBridge Pipes 會使用下列篩選條件:

  • Metadata 屬性包含以 JSON 格式呈現的來源資訊,說明是哪些來源產生了該資料事件。
  • Data 屬性包含來自來源的資料事件的訊息內文。訊息內文的格式會因來源不同而有所差異。

Amazon SQS 佇列傳送的訊息內文範例:

{    "key": "example-key-1",
    "tag": "eb-pipe-filter",
    "object name": "sampleimage-11.png",
    "sequencer": "617f0837b476e463",
    "Order Status": "Approved"
}

管道接收的事件範例:

{    "messageId": "c9652226-2d8f-49e9-9f06-beeb2a6f55ce",
    "receiptHandle": "AQEBoteuDChpmsb6765tA//hqtPta1W/utSYlmWuw3fjZnVvY+dxOUdj4cEjYZtLKGMGT4LUuvWbQPHb96Wwa+X0zUJo8ZiHC7dbul62hVbFTXjB7+cOKH91RXc3YMllpnd6nB3CNAOGIig6suCpEOGcrhTJ6dC45KoacROua1PIH454Ji8AP51TkQSnhkkeOJHInLHkvrd2sfoBo037kmMKJSo3kDgU7y92jbpJphRmijnNQX6gPQYSVifF3n3ApvSBMGQIUzQb65ZRLl6Mp2VPJQYF2RRjYShdrzhe3uON9H01m9f3LGcpL3yaX6yqFahfoEe3PiT6MMXHvIAaj+dKVSUqmnnk3n7X0n4WX1uFPgyjrI5KuJ64j2lf/dkcPMQEUPorjmagECmYpMrGlkBbZw==",
    "body": {
        "key": "example-key-1",
        "tag": "eb-pipe-filter",
        "object name": "sampleimage-11.png",
        "sequencer": "617f0837b476e463",
        "Order Status": "Approved"
    },
    "attributes": {
        "ApproximateReceiveCount": "1",
        "SentTimestamp": "1690589578649",
        "SenderId": "AIDAIMWXWRRSWVPYSJEH6",
        "ApproximateFirstReceiveTimestamp": "1690589578654"
    },
    "messageAttributes": {
        "Name": {
            "stringValue": "TestMessage",
            "stringListValues": [],
            "binaryListValues": [],
            "dataType": "String"
        }
    },
    "md5OfMessageAttributes": "62bd1c2ea8c5344caa6852a77543892d",
    "md5OfBody": "388e8d9be1776f61c0be0a089807afbc",
    "eventSource": "aws:sqs",
    "eventSourceARN": "arn:aws:sqs:ap-southeast-2:123456789012:test-sqs-source-pipe",
    "awsRegion": "ap-southeast-2"
}

**注意:**在上述範例事件中,您無法使用 eventSourceeventSourceARNawsRegion 建立事件模式,因為 EventBridge 會在輪詢期間新增資料。

查看事件篩選模式範例

事件篩選模式與中繼資料屬性相符

以下的事件篩選模式會比對那些透過管道接,並包含 attributesstringValue 中繼資料屬性的事件:

{  "attributes": {
    "ApproximateReceiveCount": ["1"]
  },
  "messageAttributes": {
    "Name": {
      "stringValue": ["TestMessage"]
    }
  }
}

事件篩選模式與資料屬性相符

以下的事件篩選模式會比對那些透過管道接收,且其 Order Status 資料屬性為 Approved 的事件:

{  "body": {
    "Order Status": ["Approved"]
  }
}

事件篩選模式同時與中繼資料與資料屬性相符

以下的事件篩選模式會比對那些透過管道接收,且包含 Order Status 資料屬性和 SenderId 中繼資料屬性的事件:

{  "attributes": {
    "SenderId": ["AIDAIMWXWRRSWVPYSJEH6"]
  },
  "body": {
    "Order Status": ["Approved"]
  }
}

沒有相符項目的事件篩選模式

以下的事件篩選模式無法比對管道接收的事件,因為它包含 awsRegion 欄位:

{  "body": {
    "Order Status": ["Approved"]
  },
  "awsRegion": ["ap-southeast-2"]
}

**注意:**EventBridge 在輪詢期間新增資料時,會新增 awsRegion 欄位。雖然資料屬性欄位相符,但事件篩選模式失敗。

檢閱成功相符的條件

如果您未正確設定傳入訊息內文和事件篩選模式,則 EventBridge Pipes 會捨棄該訊息。

當您為事件的訊息內文建立事件篩選模式時,該模式必須與來源使用的格式相符。例如,SQS 的訊息內文可以是純字符串,也可以是 JSON 指令碼。Kinesis 流和 DynamoDB 記錄必須採用有效的 JSON 格式。自我管理 Apache Kafka 串流和 Amazon MQ 訊息使用 UTF-8 編碼字串,可以是純字串,也可以是 JSON 格式。

如需來源及其篩選模式的詳細資訊,請參閱 Amazon EventBridge Pipes 中的事件篩選

建立 EventBridge 管道

請完成下列步驟:

  1. 開啟 EventBridge console (EventBridge 主控台)。
  2. 在導覽窗格中,選擇 Pipes (管道)。
  3. 選擇 Create pipe (建立管道),然後輸入管道的名稱。
  4. (選用) 在 Description (描述) 中,請輸入管道的描述。
  5. Build pipe (建置管道) 索引標籤上,選取來源類型,然後設定來源。
  6. Source (來源) 中,輸入參數,然後選擇 Next (下一步)。
  7. Sample event type (範例事件類型) 下,選取 AWS events (AWS 事件) 或 Enter my own (輸入我自己的事件)。
  8. Event pattern (事件模式) 下,輸入必要的事件模式來篩選事件。
  9. (選用) 選擇 Test pattern (測試樣式)。
  10. (選用) 選擇 Next (下一步) 以瀏覽至 Enrichment (擴充)。
  11. 選擇 Next (下一步) 以瀏覽至 Target (目標)。
  12. Details (詳細資訊) 下的 Target service (目標服務) 中,從下拉式清單中選取目標,然後輸入目標資源資訊。
  13. 設定管道設定。
  14. 選擇 Create pipe (建立規則)。

相關資訊

正確篩選 Amazon SQS 訊息

正確篩選適用於 Apache Kafka、自我管理 Apache Kafka 和 Amazon MQ 訊息的 Amazon Managed Streaming

AWS 官方已更新 1 年前