Amazon MQ 訊息代理程式做為來源 - Amazon EventBridge

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

Amazon MQ 訊息代理程式做為來源

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

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

Amazon MQ 還可以透過安裝 ActiveMQ 或 RabbitMQ 代理程式,來代表您管理 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體。安裝代理程式之後,它會為您的執行個體提供不同的網路拓撲和其他基礎結構需求。

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) 中建立代理程式。若是私有 VPC,您的管道需要存取 VPC 才能接收訊息。

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

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

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

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

    • 對於 RabbitMQ 集成, EventBridge 使用 AMQP 0-9-1 協議來消耗消息。不支援透過其他協定來取用訊息。如需 RabbitMQ 實作 AMQP 0-9-1 協定的詳細資訊,請參閱 RabbitMQ 網站上的 AMQP 0-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.rproxy.goskope.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.rproxy.goskope.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 相同的 ID。

對於 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 (Amazon VPC) 資源。

  • 若要存取 Amazon MQ 代理程式的 VPC, 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 的 9094

    • 9096 (適用於特殊證券)

    • 9098 適用於 IAM

注意

您的 Amazon VPC 組態可透過 Amazon MQ API 來探索。您不需要在設定期間設定它。