Amazon Simple Queue Service en tant que source dans EventBridge Pipes - 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.

Amazon Simple Queue Service en tant que source dans EventBridge Pipes

Vous pouvez utiliser EventBridge Pipes pour recevoir des enregistrements d'une SQS file d'attente Amazon. Ensuite, vous pouvez éventuellement filtrer ou améliorer ces enregistrements avant de les envoyer à une destination disponible pour être traités.

Vous pouvez utiliser un canal pour traiter les messages dans une file d'attente Amazon Simple Queue Service (AmazonSQS). EventBridge Les tuyaux supportent les files d'attente standard et les files d'attente « premier entré, premier sorti » () FIFO. Avec AmazonSQS, vous pouvez décharger des tâches d'un composant de votre application en les envoyant dans une file d'attente et en les traitant de manière asynchrone.

EventBridge interroge la file d'attente et invoque votre canal de manière synchrone avec un événement contenant des messages de file d'attente. EventBridge lit les messages par lots et invoque votre canal une fois pour chaque lot. Lorsque votre canal traite avec succès un lot, il EventBridge supprime ses messages de la file d'attente.

Par défaut, EventBridge interroge simultanément jusqu'à 10 messages dans votre file d'attente et envoie ce lot à votre canal. Pour éviter d’invoquer le canal avec un petit nombre d’enregistrements, vous pouvez indiquer à la source d’événement de les mettre en mémoire tampon pendant cinq minutes maximum en configurant une fenêtre de traitement par lots. Avant d'appeler le canal, EventBridge continue à interroger les messages de la file d'attente SQS standard d'Amazon jusqu'à ce que l'un des événements suivants se produise :

  • La fenêtre de traitement par lots expire.

  • Le quota de taille de la charge utile d’invocation est atteint.

  • La taille de lot maximale configurée est atteinte.

Note

Si vous utilisez une fenêtre de traitement par lots et que votre SQS file d'attente Amazon contient peu de trafic, vous EventBridge pouvez attendre jusqu'à 20 secondes avant d'appeler votre canal. C’est le cas même si vous définissez une fenêtre de traitement par lots inférieure à 20 secondes. Pour les FIFO files d'attente, les enregistrements contiennent des attributs supplémentaires liés à la déduplication et au séquençage.

Lors de la EventBridge lecture d'un lot, les messages restent dans la file d'attente mais sont masqués pendant la durée du délai de visibilité de la file d'attente. Si votre canal traite le lot avec succès, EventBridge supprime les messages de la file d'attente. Par défaut, si votre canal rencontre une erreur lors du traitement d’un lot, tous les messages de ce lot redeviennent visibles dans la file d’attente. Pour cette raison, le code de votre canal doit pouvoir traiter le même message plusieurs fois sans effets secondaires involontaires. Vous pouvez modifier ce comportement de retraitement en incluant les défaillances d’éléments de lot dans la réponse de votre canal. L'exemple suivant présente un événement pour un lot de deux messages.

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 des événements dans Amazon EventBridge Pipes.

File d’attente standard

[ { "messageId": "059f36b4-87a3-44ab-83d2-661975830a7d", "receiptHandle": "AQEBwJnKyrHigUMZj6rYigCgxlaS3SLy0a...", "body": "Test message.", "attributes": { "ApproximateReceiveCount": "1", "SentTimestamp": "1545082649183", "SenderId": "AIDAIENQZJOLO23YVJ4VO", "ApproximateFirstReceiveTimestamp": "1545082649185" }, "messageAttributes": {}, "md5OfBody": "e4e68fb7bd0e697a0ae8f1bb342846b3", "eventSource": "aws:sqs", "eventSourceARN": "arn:aws:sqs:us-east-2:123456789012:my-queue", "awsRegion": "us-east-2" }, { "messageId": "2e1424d4-f796-459a-8184-9c92662be6da", "receiptHandle": "AQEBzWwaftRI0KuVm4tP+/7q1rGgNqicHq...", "body": "Test message.", "attributes": { "ApproximateReceiveCount": "1", "SentTimestamp": "1545082650636", "SenderId": "AIDAIENQZJOLO23YVJ4VO", "ApproximateFirstReceiveTimestamp": "1545082650649" }, "messageAttributes": {}, "md5OfBody": "e4e68fb7bd0e697a0ae8f1bb342846b3", "eventSource": "aws:sqs", "eventSourceARN": "arn:aws:sqs:us-east-2:123456789012:my-queue", "awsRegion": "us-east-2" } ]

FIFOfile d'attente

[ { "messageId": "11d6ee51-4cc7-4302-9e22-7cd8afdaadf5", "receiptHandle": "AQEBBX8nesZEXmkhsmZeyIE8iQAMig7qw...", "body": "Test message.", "attributes": { "ApproximateReceiveCount": "1", "SentTimestamp": "1573251510774", "SequenceNumber": "18849496460467696128", "MessageGroupId": "1", "SenderId": "AIDAIO23YVJENQZJOL4VO", "MessageDeduplicationId": "1", "ApproximateFirstReceiveTimestamp": "1573251510774" }, "messageAttributes": {}, "md5OfBody": "e4e68fb7bd0e697a0ae8f1bb342846b3", "eventSource": "aws:sqs", "eventSourceARN": "arn:aws:sqs:us-east-2:123456789012:fifo.fifo", "awsRegion": "us-east-2" } ]

Dimensionnement et traitement

Pour les files d'attente standard, EventBridge utilise un long sondage pour interroger une file d'attente jusqu'à ce qu'elle devienne active. Lorsque des messages sont disponibles, EventBridge lit jusqu'à cinq lots et les envoie à votre canal. Si les messages sont toujours disponibles, EventBridge augmente le nombre de processus lisant des lots de 300 instances supplémentaires par minute. Le nombre maximal de lots qui peuvent être traités simultanément par un canal est de 1 000.

Pour les FIFO files d'attente, EventBridge envoie des messages à votre canal dans l'ordre dans lequel il les reçoit. Lorsque vous envoyez un message à une FIFO file d'attente, vous spécifiez un ID de groupe de messages. Amazon SQS facilite l'envoi de messages d'un même groupe à EventBridge, dans l'ordre. EventBridge trie les messages reçus en groupes et n'envoie qu'un seul lot à la fois pour un groupe. Si votre canal renvoie une erreur, le canal tente toutes les tentatives sur les messages concernés avant de EventBridge recevoir des messages supplémentaires du même groupe.

Configuration d'une file d'attente à utiliser avec EventBridge Pipes

Créez une SQS file d'attente Amazon qui servira de source pour votre canal. Configurez ensuite la file d'attente pour laisser le temps à votre canal de traiter chaque lot d'événements et de réessayer en réponse EventBridge à des erreurs de régulation à mesure qu'il prend de l'ampleur.

Pour laisser à votre canal le temps de traiter chaque lot d’enregistrements, définissez le délai de visibilité de la file d’attente source sur au moins six fois le temps d’exécution combiné de l’enrichissement du canal et des composants cibles. Le temps supplémentaire permet de EventBridge réessayer si votre tuyau est étranglé lors du traitement d'un lot précédent.

Si votre canal ne parvient pas à traiter un message plusieurs fois, Amazon SQS peut l'envoyer dans une file d'attente de lettres mortes. Lorsque votre canal renvoie une erreur, il le EventBridge conserve dans la file d'attente. Une fois le délai de visibilité expiré, EventBridge reçoit à nouveau le message. Pour envoyer des messages à une deuxième file d’attente après plusieurs réceptions, configurez une file d’attente de lettres mortes sur votre file d’attente source.

Note

Assurez-vous que vous configurez la file d’attente de lettres mortes dans la file d’attente source, mais pas sur le canal. La file d’attente de lettres mortes que vous configurez sur un canal est utilisée pour la file d’attente d’invocation asynchrone du canal, mais pas pour les files d’attente sources.

Si votre canal renvoie une erreur ou ne peut pas être invoqué, car il a atteint le niveau de simultanéité maximal, le traitement peut aboutir avec des tentatives supplémentaires. Pour donner plus de chances aux messages d’être traités avant de les envoyer dans la file d’attente de lettres mortes, définissez maxReceiveCount sur 5 au minimum dans la stratégie de réacheminement de la file d’attente source.

Signalement des échecs d’articles par lots

Lorsqu'il EventBridge consomme et traite des données en streaming à partir d'une source, il vérifie par défaut le numéro de séquence le plus élevé d'un lot, mais uniquement lorsque le lot est totalement réussi. Pour éviter de retraiter les messages dont le traitement a réussi dans un lot ayant échoué, vous pouvez configurer votre enrichissement ou votre cible de sorte à renvoyer un objet en indiquant les messages qui ont réussi et ceux qui ont échoué. C’est ce que l’on appelle une réponse partielle de lot.

Pour plus d’informations, consultez Défaillance partielle d’un lot.

Conditions de réussite et d’échec

Si vous renvoyez l'un des éléments suivants, EventBridge considère un lot comme une réussite totale :

  • Une liste batchItemFailure vide

  • Une liste batchItemFailure nulle

  • Une EventResponse vide

  • Une EventResponse nulle

Si vous renvoyez l'un des éléments suivants, EventBridge considère un lot comme un échec total :

  • Une chaîne itemIdentifier vide

  • Un itemIdentifier nul

  • Un itemIdentifier avec un nom de clé incorrect

EventBridge les nouvelles tentatives échouent en fonction de votre stratégie de relance.