Amazon Simple Queue Service (Amazon SQS) est un service Web qui vous donne accès aux files d'attente de messages qui stockent les messages en attente de traitement. Avec Amazon SQS, vous pouvez développer rapidement des applications de file d'attente de messages, qui peuvent être exécutées sur n'importe quel ordinateur.

Amazon SQS offre un service de file d'attente hébergé, hautement évolutif, sécurisé et fiable pour le stockage de messages en transit entre différents ordinateurs. Grâce à Amazon SQS, vous pouvez déplacer des données entre différents composants d'application distribués, sans perdre de messages ni avoir besoin que chaque composant soit toujours disponible. Vous pouvez échanger des données sensibles entre différentes applications grâce à l'intégration entre le chiffrement côté serveur (SSE, Server-Side Encryption) d'Amazon SQS et AWS Key Management Service (KMS).

Amazon SQS peut vous aider à développer une application distribuée dotée de composants séparés, fonctionnant en étroite collaboration avec Amazon Elastic Compute Cloud (Amazon EC2) et d'autres services Web d'infrastructure AWS.

Amazon SQS propose deux types de files d'attente pour différents besoins d'applications :

Files d'attente standard
Les files d'attente standard sont proposées par défaut par Amazon SQS. Elles garantissent un nombre quasi-illimité de transactions par seconde. Les files d'attente standard s'assurent qu'un message est délivré au moins une fois. Cependant, il peut arriver (en raison de l'architecture hautement distribuée qui offre un débit élevé) que plusieurs exemplaires d'un message soient livrés dans le désordre. Les files d'attente standard classent au mieux les messages afin de les délivrer en respectant leur ordre d'envoi.

Files d'attente FIFO – nouveau !
Les files d'attentes FIFO complètent les files d'attente standard. Les fonctionnalités les plus importantes de ce type de file d'attente sont la livraison FIFO (« first in first out », ou premier entré, premier sorti) et le traitement unique garanti : l'ordre dans lequel les messages sont envoyés et reçus est strictement préservé, et un message est délivré une seule fois et reste disponible jusqu'à son traitement et sa suppression par un destinataire. Aucun doublon n'est ajouté à la file d'attente. Les files d'attente FIFO prennent également en charge les groupes de messagerie, qui permettent d'utiliser plusieurs flux de tri au sein d'une même file. Les files d'attente FIFO sont limitées à 300 transactions par seconde (TPS) par action d'API, mais offrent toutes les capacités des files d'attente standard.

 

Découvrez gratuitement AWS

Créez un compte gratuit
Vous pouvez également vous connecter à la console

Le niveau gratuit d'AWS comprend 1 million de demandes avec Amazon Simple Queue Service (SQS).

Voir les détails relatifs au niveau gratuit d'AWS »

Capital One explique comment il utilise Amazon SQS pour migrer ses applications bancaires de référence vers le cloud.

sqs_thumb_reInvent2016-migrating-ent-messaging

Vous accéderez facilement à Amazon SQS via AWS Management Console, qui fournit aux utilisateurs une interface Web pointer-cliquer pour installer et gérer Amazon SQS.

Amazon SQS emploie une interface simple,facile à utiliser et très flexible. Les demandes suivantes sont fournies :

Opérations de base liées aux messages

  • SendMessage : ajoute des messages à une file d'attente spécifiée.
  • ReceiveMessage : renvoie un ou plusieurs messages d'une file d'attente spécifiée.
  • DeleteMessage : supprime d'une file d'attente spécifiée un message reçu précédemment.
  • ChangeMessageVisibility : modifie le délai de visibilité (timeout) d'un message reçu précédemment.

Opérations par lot liées aux messages

  • SendMessageBatch : ajoute plusieurs messages à une file d'attente spécifiée.
  • DeleteMessageBatch : supprime plusieurs messages précédemment reçus d'une file d'attente spécifiée.
  • ChangeMessageVisibilityBatch : modifie le délai de visibilité (timeout) de plusieurs messages reçus précédemment.

Gestion de base des files d'attente

  • CreateQueue : Crée des files d'attente pour une utilisation avec votre compte AWS.
  • ListQueues : Liste vos files d'attente existantes.
  • DeleteQueue : Supprime une de vos files d'attente.
  • PurgeQueue : supprime tous les messages d'une file d'attente.

Gestion avancée des files d'attente

  • SetQueueAttributes : contrôle les paramètres de file d'attente tels que le délai de visibilité (timeout) (la période durant laquelle les messages sont verrouillés après lecture pour qu'ils ne puissent pas être relus), une valeur de retard ou des paramètres de file d'attente de lettre morte.
  • GetQueueAttributes : obtient des informations sur une file d'attente telles que le délai de visibilité (timeout), le nombre de messages présents dans la file d'attente ou la taille de message maximale.
  • GetQueueUrl : Renvoie l'URL de la file d'attente.
  • AddPermission : Ajoute un partage sur la file d'attente spécifiée pour un autre compte AWS.
  • RemovePermission : Supprime un compte AWS d'un partage pour la file d'attente spécifiée.
  • ListDeadLetterSourceQueues : répertorie les files d'attente associées à une file d'attente de lettre morte.

Pour en savoir plus, consultez le manuel Amazon SQS API Reference.

Les messages stockés dans Amazon SQS ont un cycle de vie facile à gérer, mais qui garantit le traitement de tous les messages.

  1. Un système qui doit envoyer un message sélectionne une file d'attente Amazon SQS et utilise SendMessage pour lui envoyer un nouveau message.
  2. Un autre système traitant des messages doit traiter plus de messages : il appelle donc ReceiveMessage, et ce message est renvoyé.
  3. Dès lors qu'un message est renvoyé par ReceiveMessage, il ne sera pas renvoyé par une autre demande ReceiveMessage avant que le délai de visibilité ne soit expiré. Ainsi, plusieurs destinataires peuvent traiter le même message simultanément.
  4. Si le système de traitement des messages termine avec succès le traitement de ce message, il appelle DeleteMessage, ce qui supprime le message de la file d'attente pour que personne d'autre ne le traite. Si ce système ne réussit pas à traiter le message, il sera alors lu par un autre appel ReceiveMessage dès que le délai de visibilité sera expiré.
  5. Si vous avez associé une file d'attente de lettre morte à une file d'attente source, les messages seront déplacés vers la file d'attente de lettre morte lorsque le nombre de tentatives d'envoi que vous avez défini aura été atteint.
  • Les développeurs peuvent créer autant de files d'attente Amazon SQS qu'ils le souhaitent avec un nombre illimité de messages.
    • Il est possible de créer une file d'attente dans n'importe quelle région.
    • Le corps du message peut contenir jusqu'à 256 Ko de texte dans n'importe quel format. Chaque « lot » de 64 Ko de données libres est facturé comme 1 demande. Par exemple, un seul appel API avec des données libres de 256 Ko sera facturé comme quatre demandes.
    • Les messages peuvent être envoyés, reçus ou supprimés par lot de 10 messages ou 256 Ko maximum. Il vous en coûtera autant pour un lot que pour un seul message, ce qui signifie que SQS peut être encore plus intéressant financièrement pour les clients qui choisissent le traitement par lots.
    • Pour envoyer des messages de plus de 256 Ko, vous pouvez utiliser Amazon SQS Extended Client Library for Java qui utilise Amazon S3 pour stocker le corps du message.  Une référence au corps du message est envoyée avec SQS.
    • L'attente de longue durée (« long polling ») réduit un polling étranger pour vous aider à minimiser les coûts tout en recevant de nouveaux messages aussi vite que possible. Lorsque votre file d'attente est vide, les demandes d'attente de longue durée (« long polling ») attendent jusqu'à 20 secondes l'arrivée du prochain message. Les demandes d'attente de longue durée (« long polling ») coûtent autant que les demandes standard.
    • Les messages peuvent être retenus dans des files d'attente pendant 14 jours maximum.
    • Les messages peuvent être envoyés et lus simultanément.
  • Lorsqu'un message est reçu, il devient « verrouillé » lors de son traitement. Ceci empêche d'autres ordinateurs de traiter le message simultanément. Si le traitement du message échoue, le verrouillage expirera et le message sera à nouveau disponible. Au cas où l'application a besoin de plus de temps de traitement, le détail d'attente « verrouillage » peut être modifié dynamiquement via la fonction ChangeMessageVisibility.
  • Les développeurs peuvent partager en toute sécurité les files d'attente Amazon SQS de manière anonyme ou avec des comptes AWS spécifiques. Le partage de file d'attente peut aussi être restreint par adresse IP et heure locale.
  • NOUVEAU ! Le chiffrement côté serveur (SSE) vous permet de protéger le contenu des messages présents dans les files d'attente Amazon SQS à l'aide de clés gérées dans AWS Key Management Service (AWS KMS). SSE chiffre les messages dès leur arrivée dans les files d'attente Amazon SQS. Les messages sont stockés sous cette forme chiffrée et Amazon SQS assure leur déchiffrement uniquement lorsqu'ils sont transmis à un client final autorisé.
  • En utilisant Amazon Simple Notification Service (SNS), les développeurs peuvent « distribuer » des messages identiques à plusieurs files d'attente SQS standard. Avec la distribution, un message publié sur une rubrique SNS est diffusé à un certain nombre de files d'attente SQS standard en parallèle.  A l'aide de la distribution, les développeurs peuvent concevoir des applications qui exploitent le traitement parallèle asynchrone.  Par exemple, les développeurs peuvent publier un message sur une rubrique chaque fois qu'une nouvelle image est chargée.  Des processus indépendants, chacun ayant accès à une file d'attente séparée, peuvent générer des miniatures, effectuer une reconnaissance d'image et stocker les métadonnées concernant l'image. SNS ne prend pas actuellement en charge le tri FIFO, la distribution aux queues FIFO est donc impossible.
  • Les développeurs peuvent gérer les messages bloqués (les messages qui n'ont pas été traités par un client) avec les files d'attente de lettre morte. Lorsqu'un message dépasse le nombre maximal de réceptions, il est déplacé vers la file d'attente de lettre morte (DLQ, Dead Letter Queue) associée à la file d'attente d'origine. Les développeurs peuvent établir des processus consommateurs distincts pour la DLQ, qui permettent de mieux analyser les raisons du blocage des messages. Les DLQ doivent être du même type que la file d'attente source (standard ou FIFO).

Vous pouvez utiliser la mise en file d'attente de messages d'Amazon SQS avec d'autres services AWS, tels que Redshift, DynamoDB, RDS, EC2,ECS, Lambda et S3, pour rendre les applications distribuées plus évolutives et fiables. Voici quelques modèles de conception courants :

  • Files d’attente de travail : découpler les composants d’une application distribuée qui peut ne pas traiter la même quantité de travail simultanément.
  • Opérations de tampon et de lot : ajouter de l’évolutivité et de la fiabilité à votre architecture, et fluidifier les pics de volume temporaires sans perdre les messages et sans augmenter la latence.
  • Déchargement de demande : déplacez les opérations lentes des chemins de demande interactive en mettant la demande en file d’attente.
  • Distribution : combinez SQS avec Simple Notification Service (SNS) pour envoyer des copies identiques d'un message à plusieurs files d'attente en parallèle.
  • Priorité : utilisez des files d'attente séparées pour classer les tâches par ordre de priorité.
  • Evolutivité : les files d'attente de messages découplant vos processus, il est facile d'augmenter la vitesse d'envoi et de réception des messages. En effet, il suffit d'ajouter un autre processus. 
  • Résilience : lorsqu'une partie de votre système est défaillante, il n'est pas nécessaire de démonter le système dans son intégralité. Les files d'attente de messages découplent les composants de votre système. Par conséquent, si un processus lisant les messages depuis la file d'attente est défaillant, les messages peuvent toujours être ajoutés à la file d'attente pour être traités lors de la récupération du système.

Votre utilisation de ce service est soumise au Contrat client Amazon Web Services.