Agent de messages Amazon MQ en tant que source - Amazon EventBridge

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Agent de messages Amazon MQ en tant que source

Vous pouvez utiliser EventBridge Pipes pour recevoir des enregistrements d'un agent de messages Amazon MQ. Ensuite, vous pouvez éventuellement filtrer ou améliorer ces enregistrements avant de les envoyer à l'une des destinations disponibles pour être traités. Vous pouvez choisir des paramètres spécifiques à Amazon MQ lors de la configuration d'un canal. EventBridge Pipes conserve l'ordre des enregistrements de l'agent de messages lors de l'envoi de ces données vers la destination.

Amazon MQ est un service d'agent de messages géré pour Apache ActiveMQ et RabbitMQ. Un agent de messages permet à des applications et composants logiciels de communiquer à l'aide de différents langages de programmation, systèmes d'exploitation et autres protocoles de messagerie formels avec des rubriques ou des files d'attente comme destinations d'événements.

Amazon MQ peut également gérer des instances Amazon Elastic Compute Cloud (Amazon EC2) en votre nom en installant des agents ActiveMQ ou RabbitMQ. Une fois qu'un agent est installé, il fournit différentes topologies de réseau et d'autres besoins en infrastructure à vos instances.

La source Amazon MQ est soumise aux restrictions de configuration suivantes :

  • Traitement entre comptes : EventBridge ne prend pas en charge le traitement entre comptes. Vous ne pouvez pas utiliser EventBridge pour traiter des enregistrements d'un agent de messages Amazon MQ se trouvant dans un autre compte AWS.

  • Authentification : pour ActiveMQ, seul le plug-in SimpleAuthenticationPlugin ActiveMQ est pris en charge. Pour RabbitMQ, seule l'authentification PLAIN est prise en charge. Pour gérer les informations d'identification, utilisez AWS Secrets Manager. Pour plus d'informations sur l'authentification ActiveMQ, consultez Intégration des agents ActiveMQ avec LDAP dans le Guide du développeur Amazon MQ.

  • Quota de connexion : les agents ont un nombre maximal de connexions autorisées pour chaque protocole de niveau filaire. Ce quota est basé sur le type d'instance de l'agent. Pour plus d'informations, consultez la section Agents de Quotas dans Amazon MQ dans le Guide du développeur Amazon MQ.

  • Connectivité : vous pouvez créer des agents dans un cloud privé virtuel (VPC) public ou privé. Pour les VPC privés, votre canal a besoin d'un accès au VPC pour recevoir des messages.

  • Destinations d'événements : seules les destinations de file d'attente sont prises en charge. Toutefois, vous pouvez utiliser une rubrique virtuelle, qui se comporte comme une rubrique en interne et comme une file d'attente en externe, lorsqu'elle interagit avec vos canaux. Pour plus d'informations, consultez Destinations virtuelles (langue française non garantie) sur le site web d'Apache ActiveMQ et Hôtes virtuels (langue française non garantie) sur le site web de RabbitMQ.

  • Topologie réseau : pour ActiveMQ, une seule instance ou un seul agent en veille est pris en charge pour un canal. Pour RabbitMQ, un seul agent d'instance ou un seul déploiement de cluster est pris en charge pour chaque canal. Les agents à instance unique nécessitent un point de terminaison de basculement. Pour plus d'informations sur ces modes de déploiement de l'agent, consultez Architecture d'agent ActiveMQ et Architecture d'agent RabbitMQ dans le Guide du développeur Amazon MQ.

  • Protocoles : les protocoles pris en charge dépendent de l'intégration Amazon MQ que vous utilisez.

    • Pour les intégrations ActiveMQ, EventBridge utilise le protocole OpenWire/Java Message Service (JMS) pour consommer les messages. La consommation de messages n'est prise en charge par aucun autre protocole. EventBridge prend uniquement en charge les opérations TextMessage et BytesMessage dans le cadre du protocole JMS. Pour plus d'informations sur le protocole OpenWire, consultez OpenWire sur le site Apache ActiveMQ.

    • Pour les intégrations RabbitMQ, EventBridge utilise le protocole AMQP 0-9-1 pour consommer les messages. Aucun autre protocole n'est pris en charge pour la consommation de messages. Pour plus d'informations sur l'implémentation par RabbitMQ du protocole AMQP 0-9-1, consultez Guide de référence complet AMQP 0-9-1 sur le site web de RabbitMQ.

EventBridge prend automatiquement en charge les dernières versions d'ActiveMQ et de RabbitMQ qu'Amazon MQ prend en charge. Pour connaître les dernières versions prises en charge, consultez Notes de mise à jour Amazon MQ dans le Guide du développeur Amazon MQ.

Note

Par défaut, Amazon MQ comporte une fenêtre de maintenance hebdomadaire pour les agents. Pendant cette période, les agents ne sont pas disponibles. Pour les agents sans veille, EventBridge ne traitera pas les messages avant la fin de cette période.

Exemples d'événements

L'exemple d'événement suivant montre les informations reçues par le canal. Vous pouvez utiliser cet événement pour créer et filtrer vos modèles d'événements, ou pour définir la transformation d'entrée. Tous les champs ne peuvent pas être filtrés. Pour plus d'informations sur les champs que vous pouvez filtrer, consultez Filtrage Amazon EventBridge Pipes.

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==" } ]

Groupe de consommateurs

Pour interagir avec Amazon MQ, EventBridge crée un groupe de consommateurs qui peut être lu à partir de vos agents Amazon MQ. Le groupe de consommateurs est créé avec le même ID que l'UUID du canal.

Pour les sources Amazon MQ, EventBridge réunit les enregistrements par lots et les envoie à votre fonction dans une seule charge utile. Pour contrôler le comportement, vous pouvez configurer la fenêtre de traitement par lots et la taille du lot. EventBridge extrait des messages jusqu'à ce que l'une des situations suivantes se produise :

  • Les enregistrements traités atteignent la taille de charge utile maximale de 6 Mo.

  • La fenêtre de traitement par lots expire.

  • Le nombre d'enregistrements atteint la taille totale du lot.

EventBridge convertit votre lot en une seule charge utile, puis invoque votre fonction. Les messages ne sont ni conservés ni désérialisés. Au lieu de cela, le groupe de consommateurs les récupère sous la forme d'un objet BLOB d'octets. Ensuite, il les code en base64 dans une charge utile JSON. Si le canal renvoie une erreur pour l'un des messages d'un lot, EventBridge effectue une nouvelle tentative pour le lot de messages complet jusqu'à ce que le traitement réussisse ou que les messages expirent.

Configuration réseau

Par défaut, les agents Amazon MQ sont créés avec l'indicateur PubliclyAccessible défini sur false. Ce n'est que lorsque PubliclyAccessible est défini sur true que l'agent reçoit une adresse IP publique. Pour un accès complet avec votre canal, votre agent doit utiliser un point de terminaison public ou fournir l'accès au VPC.

Si votre agent Amazon MQ n'est pas accessible au public, EventBridge doit avoir accès aux ressources Amazon Virtual Private Cloud (Amazon VPC) associées à votre agent. Pour accéder au VPC de vos agents Amazon MQ, EventBridge requiert un accès Internet sortant pour les sous-réseaux de votre source. Pour les sous-réseaux publics, il doit s'agir d'une passerelle NAT gérée. Pour les sous-réseaux privés, il peut s'agir d'une passerelle NAT ou de votre propre NAT. Assurez-vous que le NAT possède une adresse IP publique et peut se connecter à Internet.

Vous devez configurer vos groupes de sécurité Amazon VPC avec les règles suivantes (au minimum) :

  • Règles entrantes – Pour un agent sans accès public, autorisez tout le trafic sur tous les ports pour le groupe de sécurité spécifié comme source. Pour un agent avec accès public, autorisez tout le trafic sur tous les ports pour toutes les destinations.

  • Règles sortantes – Autorisent tout le trafic sur tous les ports pour toutes les destinations.

Note

Votre configuration Amazon VPC est découvrable via l'API Amazon MQ. Vous n'avez pas besoin de la définir pendant la configuration.