Amazon MQ 訊息代理程式做為管道中的 EventBridge 來源 - Amazon EventBridge

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

Amazon MQ 訊息代理程式做為管道中的 EventBridge 來源

您可以使用 EventBridge 管道接收來自 Amazon MQ 訊息代理程式的記錄。然後,您可以選擇性地篩選或增強這些記錄,然後再將它們傳送到可用的目的地之一進行處理。您可以在設定管道時選擇 Amazon MQ 的特定設定。 EventBridge 當傳送資料至目的地時,管道會維護訊息代理程式的記錄順序。

Amazon MQ 是一項受管訊息代理程式服務,適用於 Apache ActiveMQRabbitMQ。訊息代理程式透過主題或佇列事件目的地,允許軟體應用程式和元件使用不同程式設計語言、作業系統和正式簡訊協定來進行通訊。

Amazon MQ 也可以透過安裝 ActiveMQ 或 RabbitMQ 代理程式,代表您管理 Amazon 彈性運算雲端 (AmazonEC2) 執行個體。安裝代理程式之後,它會為您的執行個體提供不同的網路拓撲和其他基礎結構需求。

Amazon MQ 來源具有下列組態限制:

  • 跨帳戶 — EventBridge 不支援跨帳戶處理。您無法使用 EventBridge 來處理來自不同 AWS 帳戶中 Amazon MQ 訊息代理程式的記錄。

  • 驗證 — 對於 ActiveMQ,僅支援 Ac tiveM SimpleAuthenticationPlugin Q。對於 RabbitMQ,僅支持PLAIN身份驗證機制。若要管理憑證,請使用 AWS Secrets Manager。如需 ActiveMQ 身份驗證的詳細資訊,請參閱 Amazon MQ 開發人員指南中的整合 ActiveMQ 代理程LDAP式與

  • 連線配額:代理程式每個線路層級協定允許的連線數量上限。此配額以代理程式執行個體類型為基礎。如需詳細資訊,請參閱《Amazon MQ 開發人員指南》中的 *Amazon MQ* 中的配額代理程式

  • 連線能力 — 您可以在公有或私有虛擬私有雲 (VPC) 中建立代理程式。對於私人VPCs,您的管道需要存取VPC以接收訊息。

  • 事件目的地:僅支援佇列目的地。然而,您可以使用虛擬主題,當作為佇列在外部與管道互動時,其行為在內部可作為主題。如需詳細資訊,請參閱 Apache ActiveMQ 網站上的虛擬目的地,以及 RabbitMQ 網站上的虛擬主機

  • 網路拓撲:針對 ActiveMQ,管道僅支援單一執行個體或待命代理程式。針對 RabbitMQ,每個管道僅支援單一執行個體代理程式或叢集部署。單一執行個體代理程式需要容錯移轉端點。如需這些代理程式部署模式的詳細資訊,請參閱《Amazon MQ 開發人員指南》中的 Active MQ 代理程式架構Rabbit MQ 代理程式架構

  • 協定:支援的協定取決於您所使用的 Amazon MQ。

    • 如果是 ActiveMQ 整合,請 EventBridge 使用 OpenWire /Java 訊息服務 (JMS) 通訊協定來取用訊息。任何其他通訊協定都不支援訊息消耗。 EventBridge 僅支援通JMS訊協定內的TextMessageBytesMessage作業。如需有關通訊 OpenWire 協定的詳細資訊,請參閱 Apache ActiveMQ 網OpenWire站上的。

    • 對於 RabbitMQ 集成, EventBridge 使用 AMQP 0-9-1 協議來消耗消息。不支援透過其他協定來取用訊息。有關 RabbitMQ 實現 AMQP 0-9-1 協議的更多信息,請參閱 RabbitMQ 網站上的 AMQP0-9-1 完整參考指南。

EventBridge 自動支援 Amazon MQ 支援的最新版本的 ActiveMQ 和 RabbitMQ。如需支援的最新版,請參閱《Amazon MQ 開發人員指南》中的 Amazon MQ 版本備註

注意

根據預設,Amazon MQ 具有每週代理程式維護時段。代理程式在該時段不可用。對於沒有待命的經紀人,在窗口結束之前 EventBridge 不會處理消息。

範例事件

下列範例事件顯示管道接收的資訊。您可以使用此事件來建立和篩選事件模式,或定義輸入轉換。並非所有欄位都可以篩選。如需有關所能篩選欄位的詳細資訊,請參閱 Amazon EventBridge 管道中的事件過濾

ActiveMQ

[ { "eventSource": "aws:amq", "eventSourceArn": "arn:aws:mq:us-west-2:112556298976:broker:test:b-9bcfa592-423a-4942-879d-eb284b418fc8", "messageID": "ID:b-9bcfa592-423a-4942-879d-eb284b418fc8-1.mq.us-west-2.amazonaws.com-37557-1234520418293-4:1:1:1:1", "messageType": "jms/text-message", "data": "QUJDOkFBQUE=", "connectionId": "myJMSCoID", "redelivered": false, "destination": { "physicalname": "testQueue" }, "timestamp": 1598827811958, "brokerInTime": 1598827811958, "brokerOutTime": 1598827811959 }, { "eventSource": "aws:amq", "eventSourceArn": "arn:aws:mq:us-west-2:112556298976:broker:test:b-9bcfa592-423a-4942-879d-eb284b418fc8", "messageID": "ID:b-9bcfa592-423a-4942-879d-eb284b418fc8-1.mq.us-west-2.amazonaws.com-37557-1234520418293-4:1:1:1:1", "messageType": "jms/bytes-message", "data": "3DTOOW7crj51prgVLQaGQ82S48k=", "connectionId": "myJMSCoID1", "persistent": false, "destination": { "physicalname": "testQueue" }, "timestamp": 1598827811958, "brokerInTime": 1598827811958, "brokerOutTime": 1598827811959 } ]

RabbitMQ

[ { "eventSource": "aws:rmq", "eventSourceArn": "arn:aws:mq:us-west-2:111122223333:broker:pizzaBroker:b-9bcfa592-423a-4942-879d-eb284b418fc8", "eventSourceKey": "pizzaQueue::/", "basicProperties": { "contentType": "text/plain", "contentEncoding": null, "headers": { "header1": { "bytes": [ 118, 97, 108, 117, 101, 49 ] }, "header2": { "bytes": [ 118, 97, 108, 117, 101, 50 ] }, "numberInHeader": 10 }, "deliveryMode": 1, "priority": 34, "correlationId": null, "replyTo": null, "expiration": "60000", "messageId": null, "timestamp": "Jan 1, 1970, 12:33:41 AM", "type": null, "userId": "AIDACKCEVSQ6C2EXAMPLE", "appId": null, "clusterId": null, "bodySize": 80 }, "redelivered": false, "data": "eyJ0aW1lb3V0IjowLCJkYXRhIjoiQ1pybWYwR3c4T3Y0YnFMUXhENEUifQ==" } ]

取用者群組

若要與 Amazon MQ 互動,請 EventBridge 建立可從 Amazon MQ 代理程式讀取的消費者群組。使用與管道相同的識別碼建立用戶群組UUID。

對於 Amazon MQ 來源, EventBridge 批次記錄在一起,並在單一承載中將它們傳送到您的函數。要控制行為,您可以設定批次間隔和批次大小。 EventBridge 提取訊息,直到發生下列其中一種情況:

  • 處理過的記錄達到有效負載大小最大 6 MB。

  • 批次化視窗即會到期。

  • 記錄數達到完整批次大小。

EventBridge 將批次轉換為單一有效負載,然後叫用您的函數。訊息不會保存也不會還原序列化。取而代之的是,用戶群組會以位元組BLOB的形式擷取它們。然後,它對它們進行 base64 編碼為有效載荷。JSON如果管道針對批次中的任何訊息傳回錯誤,請 EventBridge 重試整批訊息,直到處理成功或訊息到期為止。

網路組態

根據預設,Amazon MQ 代理程式使用設定為 false 的 PubliclyAccessible 標記建立。只有當 PubliclyAccessible 設定為 true 時,代理程式才會取得公有 IP 地址。要使用管道進行完整訪問,您的代理人必須使用公共端點或提供對VPC.

如果您的 Amazon MQ 代理程式無法公開存取,則 EventBridge 必須能夠存取與代理程式相關聯的 Amazon Virtual Private Cloud (AmazonVPC) 資源。

  • 若要存取 VPC Amazon MQ 代理程式, EventBridge 可以針對來源的子網路使用輸出網際網路存取。對於公用子網路,這必須是受管理的NAT閘道。對於私有子網路,它可以是NAT閘道,也可以是您自己NAT的閘道。確保NAT具有公共 IP 地址並且可以連接到互聯網。

  • EventBridge Pipes 也支援透過事件傳遞 AWS PrivateLink,可讓您將事件從位於 Amazon Virtual Private Cloud (Amazon VPC) 中的事件來源傳送至 Pipes 目標,而無需遍歷公用網際網路。您可以使用管道從 Amazon Managed Streaming for Apache Kafka (Amazon MSK)、自我管理的 Apache Kafka 以及位於私有子網路中的 Amazon MQ 來源進行輪詢,而無需部署網際網路閘道、設定防火牆規則或設定 Proxy 伺服器。

    若要設定VPC端點,請參閱AWS PrivateLink 使用指南中的建立VPC端點。對於服務名稱,請選取com.amazonaws.region.pipes-data

使用下列規則 (至少) 設定您的 Amazon VPC 安全群組:

  • 輸入規則 — 允許針對您的來源指定的安全群組的 Amazon MQ 代理程式連接埠上的所有流量。

  • 傳出規則:針對所有目的地,允許連接埠 443 上的所有流量。允許針對您的來源指定的安全群組的 Amazon MQ 代理程式連接埠上的所有流量。

    代理連接埠包括:

    • 對於明文字而言是 9092

    • 適用於 TLS

    • 適用於 SASL

    • 適用於 IAM

注意

您可以透過 Amazon M API Q 探索您的亞馬遜VPC組態。您不需要在設定期間設定它。