Agente de mensajes de Amazon MQ como origen de canalizaciones de EventBridge - Amazon EventBridge

Agente de mensajes de Amazon MQ como origen de canalizaciones de EventBridge

Puede utilizar las canalizaciones de EventBridge para recibir registros de un agente de mensajes de Amazon MQ. A continuación, si lo desea, puede filtrar o enriquecer estos registros antes de enviarlos a uno de los destinos disponibles para su procesamiento. Al configurar la canalización, puede elegir ajustes específicos de Amazon MQ. Las canalizaciones de EventBridge mantienen el orden de los registros del agente de mensajes al enviar esos datos al destino.

Amazon MQ es un servicio de agente de mensajes administrado para Apache ActiveMQ y RabbitMQ. Un agente de mensajes permite que las aplicaciones de software y los componentes se comuniquen mediante diferentes lenguajes de programación, sistemas operativos y protocolos de mensajería formales con temas o colas como destinos de eventos.

Amazon MQ también puede administrar instancias de Amazon Elastic Compute Cloud (Amazon EC2) en su nombre instalando agentes de ActiveMQ o RabbitMQ. Una vez instalado el agente, este proporciona diferentes topologías de red y cubre otras necesidades de infraestructura para sus instancias.

El origen de Amazon MQ tiene las siguientes restricciones de configuración:

  • Cuentas cruzadas: EventBridge no admite el procesamiento de cuentas cruzadas. No se puede utilizar EventBridge para procesar registros de un agente de mensajes de Amazon MQ que se encuentra en una cuenta de AWS diferente.

  • Autenticación: para ActiveMQ solo se admite ActiveMQ SimpleAuthenticationPlugin. Para RabbitMQ, solo se admite el mecanismo de autenticación PLAIN. Para administrar las credenciales, utilice AWS Secrets Manager. Para obtener más información acerca de la autenticación de ActiveMQ, consulte Integración de agentes de ActiveMQ con LDAP en la Guía para desarrolladores de Amazon MQ.

  • Cuota de conexión: los agentes tienen un número máximo de conexiones permitidas por protocolo de nivel de cable. Esta cuota se basa en el tipo de instancia del broker. Para obtener más información, consulte la sección Agentes de *Cuotas en Amazon MQ* en la Guía para desarrolladores de Amazon MQ.

  • Conectividad: puede crear agentes en una nube privada virtual (VPC) pública o privada. En el caso de las VPC privadas, su canalización necesita acceso a la VPC para recibir mensajes.

  • Destinos de eventos: solo se admiten los destinos de cola. Sin embargo, puede utilizar un tema virtual, que se comporta como un tema internamente y como una cola externamente cuando interactúa con sus canalizaciones. Para obtener más información, consulte Destinos virtuales en el sitio web de Apache ActiveMQ y Virtual Hosts en el sitio web RabbitMQ.

  • Topología de red: para ActiveMQ, solo se admite una instancia única o agente en espera por canalización. Para RabbitMQ, solo se admite una implementación de agente o clúster de una instancia única por cada canalización. Los agentes de instancia única requieren un punto de conexión de conmutación por error. Para obtener más información acerca de estos modos de implementación de agente, consulte Arquitectura de agente Active MQ y Arquitectura de agente de Rabbit MQ en la Guía para desarrolladores de Amazon MQ.

  • Protocolos: los protocolos compatibles dependen de la integración de Amazon MQ que utilice.

    • Para las integraciones de ActiveMQ, EventBridge utiliza el protocolo OpenWire/Servicio de mensajes de Java (JMS) para consumir mensajes. El consumo de mensajes no es compatible con ningún otro protocolo. EventBridge solo admite las operaciones TextMessage y BytesMessage dentro del protocolo JMS. Para obtener más información acerca del protocolo OpenWire, consulte OpenWire en el sitio web de Apache ActiveMQ.

    • Para las integraciones de RabbitMQ, EventBridge utiliza el protocolo AMQP 0-9-1 para consumir mensajes. No se admiten otros protocolos para consumir mensajes. Para obtener más información acerca de la implementación de RabbitMQ del protocolo AMQP 0-9-1, consulte la Guía de referencia completa de AMQP 0-9-1 en el sitio web de RabbitMQ.

EventBridge admite automáticamente las últimas versiones de ActiveMQ y RabbitMQ que admite Amazon MQ. Para obtener las últimas versiones compatibles, consulte Notas de la versión de Amazon MQ en la Guía para desarrolladores de Amazon MQ.

nota

De forma predeterminada, Amazon MQ tiene una ventana de mantenimiento semanal para los agentes. Durante esa ventana de tiempo, los corredores no están disponibles. En el caso de los agentes en espera, EventBridge no procesará los mensajes hasta que finalice el plazo.

Eventos de ejemplo

En el siguiente evento de ejemplo se muestra la información que recibe la canalización. Puede usar este evento para crear y filtrar sus patrones de eventos o para definir la transformación de entrada. No todos los campos se pueden filtrar. Para obtener más información sobre los campos que puede filtrar, consulte Filtrado de eventos de las canalizaciones de 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==" } ]

Grupo de consumidores

Para interactuar con Amazon MQ, EventBridge crea un grupo de consumidores que puede leer de sus agentes de Amazon MQ. El grupo de consumidores se crea con el mismo ID que el UUID de la canalización.

Para los orígenes de Amazon MQ, EventBridge agrupa los registros y los envía a su función en una sola carga. Para controlar el comportamiento, puede configurar el plazo de procesamiento por lotes y el tamaño del lote. EventBridge extrae mensajes hasta que se produce una de las siguientes situaciones:

  • Los registros procesados alcanzan un tamaño máximo de carga de 6 MB.

  • El plazo de procesamiento por lotes caduca.

  • El número de registros alcanza el tamaño total del lote.

EventBridge convierte su lote en una sola carga y, a continuación, invoca la función. Los mensajes no se mantienen ni se deserializan. En su lugar, el grupo de consumidores los recupera como un BLOB de bytes. A continuación, los codifica con base64 en una carga JSON. Si la canalización devuelve un error para cualquiera de los mensajes de un lote, EventBridge intenta volver a procesar todo el lote de mensajes hasta que el procesamiento sea correcto o los mensajes caduquen.

Configuración de red

De forma predeterminada, los agentes de Amazon MQ se crean con el indicador PubliclyAccessible establecido en falso. Solo cuando PubliclyAccessible se establece en verdadero que el agente recibe una dirección IP pública. Para tener acceso completo con su canalización, el agente debe utilizar un punto de conexión público o proporcionar acceso a la VPC.

Si el agente de Amazon MQ no es de acceso público, EventBridge debe tener acceso a los recursos de Amazon Virtual Private Cloud (Amazon VPC) asociados a su agente de Amazon MQ.

  • Para acceder a la VPC de sus agentes de Amazon MQ, EventBridge puede usar el acceso saliente a Internet para las subredes de su origen. Para las subredes públicas, debe ser una puerta de enlace NAT administrada. Para las subredes privadas, puede ser una puerta de enlace NAT o su propia NAT. Asegúrese de que la NAT tiene una dirección IP pública y puede conectarse a Internet.

  • La canalizaciones de EventBridge también admiten la entrega directa de eventos mediante AWS PrivateLink, lo que le permite enviar eventos desde un origen de eventos ubicado en Amazon Virtual Private Cloud (Amazon VPC) a un destino de canalizaciones sin tener que atravesar la red pública de Internet. Puede usar las canalizaciones para sondear desde Amazon Managed Streaming for Apache Kafka (Amazon MSK), Apache Kafka autoadministrado y orígenes de Amazon MQ que residen en una subred privada sin necesidad de implementar una puerta de enlace de Internet, configurar reglas de firewall o configurar servidores proxy.

    Para configurar un punto de conexión de VPC, consulte Crear un punto de conexión de VPC en la Guía del usuario de AWS PrivateLink. En Nombre del servicio, seleccione com.amazonaws.region.pipes-data.

Configure sus grupos de seguridad de Amazon VPC con las siguientes reglas (como mínimo):

  • Reglas de entrada: permiten todo el tráfico en el puerto del agente de Amazon MQ para los grupos de seguridad para su origen.

  • Reglas de salida: permiten todo el tráfico en el puerto 443 para todos los destinos. Permiten todo el tráfico en el puerto del agente de Amazon MQ para los grupos de seguridad especificados para su origen.

    Los puertos del agente incluyen:

    • 9092 para texto sin formato

    • 9094 para TLS

    • 9096 para SASL

    • 9098 para IAM

nota

La configuración de Amazon VPC se puede detectar a través de la API de Amazon MQ. No tiene que configurarla durante la configuración.