Foire aux questions sur Amazon SQS

Présentation

Amazon SQS offre plusieurs avantages par rapport au développement de votre propre logiciel de gestion de files d'attente de messages ou par rapport à l'utilisation de systèmes de file d'attente de messages commerciaux ou open source, dont le développement et la configuration nécessitent un investissement considérable en temps. 

Ces alternatives nécessitent des ressources en maintenance du matériel et en administration des systèmes. La complexité de la configuration et de la gestion de ces systèmes est aggravée par la nécessité de mettre en place un stockage redondant des messages, afin d'éviter que les messages soient perdus en cas de défaillance du matériel.

Par opposition, Amazon SQS ne suppose aucuns frais généraux administratifs et nécessite peu de configuration. Amazon SQS fonctionne à très grande échelle et traite des milliards de messages par jour. Vous pouvez augmenter ou réduire la quantité de trafic envoyée à Amazon SQS sans la moindre configuration. Amazon SQS permet également aux messages de bénéficier d'une durabilité extrêmement élevée, ce qui renforce votre confiance et celle de vos parties prenantes.

Amazon SNS permet aux applications d'envoyer des messages à caractère urgent à plusieurs abonnés par le biais d'un mécanisme « push », en éliminant le besoin de rechercher périodiquement des mises à jour ou de les « interroger ». Amazon SQS est un service de file d'attente de messages utilisé par les applications distribuées pour échanger des messages par le biais d'un modèle d'interrogation et il peut être utilisé pour découpler des éléments d'envoi et de réception. 

Si vous utilisez une messagerie avec des applications existantes et que vous souhaitez faire migrer votre messagerie sur le cloud facilement et rapidement, nous vous recommandons d'utiliser Amazon MQ. Ce service prend en charge les API et les protocoles aux normes de l'industrie. Vous pouvez ainsi passer de n'importe quel agent de messages basé sur les normes à Amazon MQ, sans devoir réécrire le code de messagerie dans vos applications. Si vous créez de toutes nouvelles applications dans le cloud, nous vous recommandons d'utiliser Amazon SQS ou Amazon SNS. Amazon SQS et SNS sont des services de file d'attente de messages et de rubriques légers et entièrement gérés qui se mettent à l'échelle à l'infini et qui fournissent des API simples et faciles d'utilisation. 

Oui. Les files d'attente FIFO (premier entré, premier sorti) préservent l'ordre exact selon lequel les messages sont envoyés et reçus. Si vous utilisez une file d'attente FIFO, il est inutile d'ajouter des informations de séquençage dans vos messages. Pour plus d'informations, consultez Logique de remise FIFO dans le guide du développeur Amazon SQS.

Les files d'attente standard proposent une fonctionnalité FIFO libre, qui tente de préserver l'ordre des messages. Cependant, dans la mesure où ces files d'attente standard sont conçues pour être extrêmement évolutives à travers une architecture hautement distribuée, il n'est pas garanti que la réception des messages aura lieu précisément selon leur ordre d'envoi.

Les files d'attente standard proposent une fonctionnalité de remise au moins une fois, qui garantit au moins une remise pour chaque message.

Les files d'attente FIFO fournissent un traitement en une seule fois, ce qui signifie que chaque message est délivré une fois et reste disponible tant qu'un consommateur ne l'a pas traité et supprimé. Aucun doublon n'est jamais inséré dans la file d'attente.

Amazon SQS propose une file d'attente hébergée fiable et hautement évolutive pour stocker les messages qui transitent entre des applications ou des microservices. Il déplace des données entre composants d'applications distribuées et vous permet de découpler ces composants. Amazon SQS offre des structures intergicielles courantes, telles que des files d'attente de lettre morte, et la gestion des pilules empoisonnées (« poison pill »). Il fournit également une API générale de services Web, accessible par n'importe quel langage de programmation pris en charge par le SDK d'AWS. Amazon SQS prend en charge à la fois les files d'attente standard et les files d'attente FIFO.

Amazon Kinesis Streams assure le traitement en temps réel des données de Big Data diffusées en continu et permet de lire et relire les enregistrements de diverses applications Amazon Kinesis. La bibliothèque client Amazon Kinesis (KCL) envoie tous les enregistrements associés à une clé de partition donnée vers un même processeur d'enregistrements. Il est ainsi très simple de créer plusieurs applications ayant accès au même flux Amazon Kinesis, ce qui peut s'avérer utile pour combiner des tâches de décompte, d'agrégation ou encore de filtrage.

Pour plus d'informations, consultez la documentation Amazon Kinesis.

Oui. Les développeurs chez Amazon utilisent Amazon SQS pour diverses applications traitant quotidiennement un grand nombre de messages. Des processus d'entreprise clés sur Amazon.com et AWS utilisent Amazon SQS.

Facturation

Vous payez uniquement en fonction de ce que vous utilisez et il n'y a pas de frais minimum.

Le coût d'Amazon SQS est calculé par requête, auquel s'ajoutent des frais de transfert pour les données transférées en dehors d'Amazon SQS (sauf si elles sont transférées vers des instances Amazon Elastic Compute Cloud (EC2) ou des fonctions AWS Lambda au sein de la même région). Pour connaître le détail des prix par type de file d'attente et par région, reportez-vous à la section Tarification Amazon SQS.

L'offre gratuite d'Amazon SQS permet d'exécuter 1 million de requêtes par mois gratuitement.

De nombreuses applications à petite échelle sont en mesure de fonctionner entièrement en restant dans les limites de l'offre gratuite. Toutefois, des frais de transfert des données peuvent tout de même s'appliquer. Pour en savoir plus, consultez la page Tarification Amazon SQS.

L'offre gratuite est une offre mensuelle. L'utilisation gratuite ne se cumule pas sur plusieurs mois.

Oui, pour toutes les requêtes qui sortent du cadre gratuit. Toutes les requêtes Amazon SQS sont payantes et facturées au même tarif.

Non. Les opérations par lot (SendMessageBatch, DeleteMessageBatch et ChangeMessageVisbilityBatch) coûtent le même prix que les autres requêtes Amazon SQS. Regrouper les messages par lots vous permet de réduire les coûts d'Amazon SQS.

L'utilisation d'Amazon SQS n'est soumise à aucuns frais initiaux. A la fin du mois, votre carte de crédit est automatiquement débitée en fonction de votre utilisation au cours du mois.

Vous pouvez consulter les frais encourus sur la période de facturation actuelle à tout moment, à partir du site Web d'AWS :

  1. Connectez-vous à votre compte AWS.
  2. Sous Vos comptes de services Web, sélectionnez Activité du compte.

Vous pouvez appliquer des balises de répartition des coûts à vos files d'attente afin de suivre la gestion des ressources et des coûts. Une balise est une étiquette de métadonnées composée d'une paire clé-valeur. Par exemple, vous pouvez baliser vos files d'attente par centre de coût, puis classer et suivre vos coûts en fonction de ces centres de coûts.

Pour plus d'informations, consultez la section Balisage de vos files d'attente Amazon SQS du Guide du développeur Amazon SQS. Pour plus d'informations sur les balises de répartition des coûts pour les ressources AWS, consultez la section Utilisation des balises de répartition des coûts du guide de l'utilisateur AWS Billing and Cost Management.

Sauf indication contraire, nos prix n'incluent pas les taxes et redevances applicables, telles que la TVA et les taxes sur les ventes applicables.

Pour les clients dont l'adresse de facturation est située au Japon, l'utilisation d'AWS (dans n'importe quelle région) est soumise à la taxe sur la consommation applicable dans ce pays. Pour en savoir plus, consultez la FAQ sur la taxe à la consommation pour l'offre Amazon Web Services.

Caractéristiques, fonctionnalités et interfaces

Oui. Vous pouvez rendre vos applications plus flexibles et plus évolutives en utilisant Amazon SQS avec des services de calcul comme Amazon EC2, Amazon Elastic Container Service (ECS) et AWS Lambda, ainsi qu'avec des services de stockage et de base de données comme Amazon Simple Storage Service (Amazon S3) et Amazon DynamoDB.

Vous pouvez accéder à Amazon SQS avec la console de gestion AWS, afin de créer des files d'attente Amazon SQS et d'envoyer des messages facilement.

Amazon SQS offre également une API de services web. Enfin, ce service est intégré aux kits SDK AWS, afin de travailler dans le langage de programmation de votre choix.

Pour en savoir plus sur les opérations pour les files d'attente de messages, consultez la référence sur l'API Amazon SQS.

Seul le propriétaire d'un compte AWS (ou un compte AWS auquel le propriétaire du compte a délégué des droits) peut effectuer des opérations sur une file d'attente de messages Amazon SQS.

Tous les messages possèdent un ID unique à l'échelle mondiale, que renvoie Amazon SQS lorsque le message est remis à la file d'attente de messages. L'ID n'est pas requis pour effectuer d'autres actions sur le message, mais il est utile pour suivre la réception d'un message particulier dans la file d'attente de messages.

Lorsque vous recevez un message de la file d'attente de messages, la réponse inclut une gestion des reçus que vous devez fournir lors de la suppression du message.

Pour plus d'informations, consultez Identifiants de files d'attente et de messages dans le guide du développeur Amazon SQS.

Dans Amazon SQS, vous pouvez utiliser l'API ou la console pour configurer des files d'attente de lettres mortes qui reçoivent des messages provenant d'autres files d'attente sources. Lorsque vous configurez une file d'attente de lettres mortes, vous devez définir les autorisations appropriées pour la redirection de la file d'attente de lettres mortes en utilisant RedriveAllowPolicy.

RedriveAllowPolicy comprend les paramètres de l'autorisation de redirection de la file d'attente des lettres mortes. Il définit les files d'attente sources qui peuvent spécifier les files d'attente de lettres mortes comme objet JSON.

Une fois que vous créez une file d'attente de lettres mortes, elle reçoit des messages dont le nombre maximal de tentatives de traitement a été atteint. Vous pouvez utiliser les files d'attente de lettres mortes pour isoler les messages qui ne peuvent pas être traités, afin de les analyser ultérieurement.

Pour plus d'informations, consultez la section Utilisation des files d'attente de lettres mortes Amazon SQS dans le guide du développeur Amazon SQS.

Le délai de visibilité (timeout) est la période durant laquelle Amazon SQS empêche les autres composants de consommation de recevoir et de traiter un message. Pour plus d'informations, consultez Délai de visibilité dans le guide du développeur Amazon SQS.

Oui. Un message Amazon SQS peut contenir jusqu'à 10 attributs de métadonnées. Vous pouvez utiliser les attributs de message pour séparer le corps d'un message et les métadonnées qui le décrivent. Cela vous aide à traiter et à stocker les informations plus rapidement et plus efficacement, car vos applications n'ont plus besoin d'inspecter le message entier pour comprendre comment le traiter.

Les attributs de message Amazon SQS prennent la forme de combinaisons nom-type-valeur. Parmi les types pris en charge, on trouve les chaînes, les binaires et les nombres (notamment les nombres entiers, les nombres à virgule flottante et les doubles binaires). Pour plus d'informations, consultez la section Utilisation des attributs de messages Amazon SQS dans le guide du développeur Amazon SQS.

Pour déterminer la valeur du temps d'attente, vous pouvez demander l'attribut SentTimestamp lorsque vous recevez un message. En soustrayant cette valeur de l'heure actuelle, vous obtenez la valeur du temps d'attente.

Les latences auxquelles vous pouvez vous attendre pour les demandes d'API SendMessage, ReceiveMessage et DeleteMessage se comptent en dizaines ou en quelques centaines de millisecondes.

Lorsque l'ID de compte AWS n'est pas disponible (par exemple, lorsqu'un utilisateur anonyme envoie un message), Amazon SQS fournit l'adresse IP.

La fonction d'attente active de longue durée d'Amazon SQS est une méthode de scrutation longue, plus connue sous le nom de « long polling », qui permet d'extraire des messages de vos files d'attente Amazon SQS. Tandis que l'interrogation classique de « short polling » (attente active de courte durée) renvoie des résultats immédiatement (même si la file d'attente de messages interrogée est vide), la fonction d'attente active de longue durée ne renvoie aucune réponse tant qu'aucun message n'arrive dans la file d'attente de messages ou que le délai d'attente de longue durée n'est pas arrivé à expiration.

La fonction d'attente active de longue durée est une solution peu coûteuse permettant l'extraction des messages de votre file d'attente Amazon SQS, dès leur mise à disposition. L'utilisation de la fonction d'attente active de longue durée ou « long polling » est susceptible de réduire le coût d'utilisation de SQS, car vous pouvez réduire le nombre de réceptions vides. Pour plus d'informations, consultez Attente active de longue durée d'Amazon SQS dans le guide du développeur Amazon SQS.

Non. Les appels ReceiveMessage d'attente active de longue durée sont facturés de la même manière que les appels ReceiveMessage d'attente active de courte durée.

Dans pratiquement tous les cas, la fonction d'attente active de longue durée d'Amazon SQS est préférable. Les requêtes de longue durée permettent aux clients présents dans votre file d'attente de recevoir des messages dès qu'ils arrivent dans votre file d'attente, tout en réduisant le nombre d'instances ReceiveMessageResponse vides renvoyées.

La fonction d'attente active de longue durée d'Amazon SQS permet donc, dans la plupart des cas d'utilisation, d'obtenir de meilleures performances à moindre coût. Toutefois, si votre application attend une réponse immédiate après un appel ReceiveMessage, il est possible que vous ne puissiez pas tirer profit de la fonction d'attente active de longue durée sans apporter quelques modifications à votre application.

Ainsi, si votre application utilise un seul thread pour interroger plusieurs files d'attente, il est peu probable que vous puissiez passer directement d'une attente active de courte durée (« short polling ») à une de longue durée (« long polling »). En effet, le thread unique attendra l'expiration du délai de l'attente longue pour toutes les éventuelles files d'attente vides, ce qui retardera le traitement des autres files d'attente pouvant contenir des messages.

Pour une telle application, une bonne pratique consiste à utiliser un thread unique pour traiter une seule file d'attente, en permettant à l'application de tirer parti des avantages de la fonction d'attente active de longue durée d'Amazon SQS.

En général, vous devriez indiquer un délai d'expiration de 20 secondes maximum pour une fonction d'attente active de longue durée. Plus la valeur du délai d'expiration pour la fonction d'attente active de longue durée est élevée, plus le nombre d'instances ReceiveMessageResponse vides reçues est faible. Essayez donc de définir un délai d'expiration le plus élevé possible.

Si le délai maximum de 20 secondes ne fonctionne pas pour votre application (voir l'exemple dans la question précédente) définissez un délai d'expiration inférieur pour la fonction d'attente active de longue durée (1 seconde minimum).

Tous les kits SDK AWS fonctionnent, par défaut, avec des délais d'attente active de longue durée de 20 secondes. Si vous n'utilisez pas un kit SDK AWS pour accéder à Amazon SQS, ou si vous avez configuré votre kit SDK AWS pour que le délai soit plus court, vous devrez peut-être modifier votre client Amazon SQS pour autoriser les requêtes plus longues ou pour utiliser un délai d'attente active de longue durée plus court.

Le client AmazonSQSBufferedAsyncClient for Java implémente l'interface AmazonSQSAsyncClient et ajoute plusieurs fonctionnalités importantes :

  • traitement automatisé par lots des requêtes SendMessage, DeleteMessage ou ChangeMessageVisibility, sans modification nécessaire de l'application ;
  • pré-analyse des messages dans un tampon local qui permet à votre application de traiter automatiquement les messages issus d'Amazon SQS sans attendre que les messages soient récupérés.

Le traitement par lots, associé à la pré-analyse, offre un débit accru et une plus faible latence au niveau de votre application, tout en réduisant vos coûts grâce à un nombre plus restreint de requêtes Amazon SQS. Pour plus d'informations, consultez Activation de la mise en tampon côté client et du traitement par lots des requêtes dans le guide du développeur Amazon SQS.

Vous pouvez télécharger le client AmazonSQSBufferedAsyncClient dans le cadre du kit AWS SDK pour Java.

Non. Le client AmazonSQSBufferedAsyncClient for Java est implémenté pour remplacer le client AmazonSQSAsyncClient existant.

Si vous mettez à jour votre application afin d'utiliser le dernier kit SDK AWS et modifiez votre client afin d'utiliser le client AmazonSQSBufferedAsyncClient for Java au lieu du client AmazonSQSAsyncClient, votre application bénéficiera des avantages supplémentaires conférés par le traitement automatisé par lots et la pré-analyse.

  1. Dans la console Amazon SQS, sélectionnez une file d'attente standard Amazon SQS.
  2. Sous Actions de la file d'attente, sélectionnez Abonner la file d'attente à une rubrique SNS dans la liste déroulante.
  3. Dans la boîte de dialogue, sélectionnez la rubrique qui vous intéresse dans la liste déroulante Choisir une rubrique, puis cliquez sur le bouton Abonner.

Pour plus d'informations, consultez Abonnement d'une file d'attente à une rubrique Amazon SNS dans le guide du développeur Amazon SQS.

Oui. Vous pouvez supprimer tous les messages d'une file d'attente de messages Amazon SQS en utilisant l'action PurgeQueue.

Lorsque vous effacez une file d'attente de messages, tous les messages précédemment envoyés vers la file d'attente de messages seront supprimés. Comme votre file d'attente de messages et ses attributs subsistent, il n'est pas nécessaire de reconfigurer la file d'attente de messages ; vous pouvez continuer à l'utiliser.

Pour supprimer uniquement certains messages précis, utilisez les actions DeleteMessage ou DeleteMessageBatch.

Pour en savoir plus, consultez le didacticiel Purge des messages d'une file d'attente Amazon SQS.

Files d'attente FIFO

Les files d'attente FIFO sont disponibles dans toutes les régions AWS où Amazon SQS est disponible. Cliquez ici pour en savoir plus sur la disponibilité par région d'Amazon SQS.

Les files d'attente FIFO sont conçues de manière à ne jamais introduire de messages en double. Néanmoins, votre producteur de message peut introduire des doublons dans certains cas : par exemple, s'il envoie un message, ne reçoit pas de réponse, puis renvoie le même message. Les API d'Amazon SQS offrent une fonctionnalité de déduplication qui empêche votre producteur de message d'envoyer des doublons. Ainsi, chaque doublon introduit par le producteur est supprimé dans un délai de déduplication de 5 minutes.

Pour les files d'attente standard, il peut parfois arriver que vous receviez un deuxième exemplaire d'un message (remise au moins une fois). Si vous utilisez une file d'attente standard, vous devez concevoir vos applications afin qu'elles soient idempotentes (c.-à-d. qu'elles ne doivent pas être affectées si le même message est traité plus d'une fois).

Pour plus d'informations, consultez la rubrique Traitement unique dans le guide du développeur Amazon SQS.

Non. Les files d'attente standard d'Amazon SQS (le nouveau nom des files d'attente existantes) ne changent pas, et vous pouvez toujours créer des files d'attente standard. Ces files d'attente continuent d'offrir le plus haut débit et la plus grande évolutivité. Cependant, l'ordre des messages n'est pas garanti, et des doublons risquent de survenir.

Les files d'attente standard sont adaptées à de nombreux scénarios, notamment pour la distribution des tâches avec plusieurs consommateurs idempotents.

Non. Vous devez choisir le type de file d'attente lors de sa création. Cependant, il est possible de passer sur une file d'attente FIFO. Pour plus d'informations, consultez la section Transformation d'une file d'attente Standard en une file d'attente FIFO dans le guide du développeur Amazon SQS.

Vous devez utiliser le dernier kit SDK AWS pour pouvoir profiter des files d'attente FIFO.

Les files d'attente FIFO utilisent les mêmes actions d'API que les files d'attente standard, et les mécanismes de réception et de suppression de messages et de modification du délai de visibilité (timeout) sont identiques. Cependant, vous devez spécifier un ID de groupe de messagerie pendant l'envoi de messages. Pour plus d'informations, consultez Logique de remise FIFO dans le guide du développeur Amazon SQS.

Certains services AWS ou externes qui envoient des notifications à Amazon SQS peuvent ne pas être compatibles avec les files d'attente FIFO, même s'ils vous permettent de configurer une file d'attente FIFO en tant que cible.

Les fonctions suivantes des services AWS ne sont actuellement pas compatibles avec les files d'attente FIFO :

Pour en savoir plus sur la compatibilité des autres services avec les files d'attente FIFO, consultez votre documentation de service.

Les files d'attente FIFO ne sont actuellement pas compatibles avec le client asynchrone de mise en mémoire tampon Amazon SQS.

Les files d'attente FIFO sont compatibles avec la bibliothèque Amazon SQS Extended Client Library for Java et le client de service de messagerie Java (JMS) Amazon SQS.

Les files d'attente FIFO prennent en charge toutes les métriques compatibles avec les files d'attente standard. Avec les files d'attente FIFO, toutes les métriques approximatives renvoient des résultats précis. Les métriques AWS CloudWatch suivantes sont notamment prises en charge :

  • ApproximateNumberOfMessagesDelayed – nombre de messages dans la file d'attente qui sont retardés et qui ne peuvent pas être lus immédiatement.
  • ApproximateNumberOfMessagesVisible – nombre de messages disponibles dans cette file d'attente.
  • ApproximateNumberOfMessagesNotVisible – nombre de messages en transit (messages envoyés à un client, mais qui n'ont pas encore été supprimés ou n'ont pas dépassé leur période de visibilité).

Les messages sont répartis dans des « lots » distincts et classés au sein d'une file d'attente FIFO. Pour chaque ID de groupe de messagerie, tous les messages sont envoyés et reçus en suivant rigoureusement l'ordre établi. Cependant, les messages aux ID de groupe de messagerie différents pourront être envoyés et reçus dans le désordre. Vous devez associer un ID de groupe de messagerie à un message. Si vous ne spécifiez pas d'ID de groupe de messagerie, l'action échoue.

Si plusieurs hôtes (ou différents threads dans un même hôte) envoient des messages portant le même ID de groupe de messagerie à une file d'attente FIFO, Amazon SQS délivre les messages dans l'ordre de leur arrivée pour traitement. Afin de garantir qu'Amazon SQS préserve l'ordre dans lequel les messages sont envoyés et reçus, veillez à ce que les expéditeurs envoient chaque message avec un ID de groupe de messagerie unique.

Pour plus d'informations, consultez Logique de remise FIFO dans le guide du développeur Amazon SQS.

Oui. Une même file d'attente FIFO peut recevoir des messages d'un ou plusieurs producteurs. Les messages sont stockés dans l'ordre de leur réception par Amazon SQS.

Si plusieurs producteurs envoient des messages en parallèle sans atteindre la confirmation des actions SendMessage ou SendMessageBatch, l'ordre entre les producteurs risque de ne pas être préservé. La réponse des actions SendMessage ou SendMessageBatch contient l'ordre final utilisé par les files d'attente FIFO pour placer les messages d'attente dans la file, afin que votre code à plusieurs producteurs parallèles puisse déterminer l'ordre final des messages dans la file.

Les files d'attente FIFO d'Amazon SQS sont pensées pour ne pas envoyer les messages du même groupe de messagerie à plus d'un consommateur à la fois. Cependant, si votre file d'attente FIFO comporte plusieurs groupes de messagerie, vous pouvez profiter de la mise en parallèle des consommateurs pour permettre à Amazon SQS de transmettre les messages de différents groupes de messagerie à différents consommateurs.

Par défaut, les files d'attente FIFO prennent en charge jusqu'à 3 000 messages par seconde avec le traitement par lot ou jusqu'à 300 messages par seconde (300 actions d'envoi, de réception ou de suppression par seconde) sans traitement par lot. Si vous avez besoin d'un débit plus élevé, vous pouvez activer le mode de débit élevé pour FIFO dans la console Amazon SQS, qui prendra en charge jusqu'à 70 000 messages par seconde sans traitement par lot et encore plus avec le traitement par lot. Pour obtenir une ventilation détaillée des quotas du mode de débit élevé FIFO par région, consultez la documentation AWS.

Le nom d'une file d'attente FIFO doit se terminer par le suffixe .fifo. Le suffixe est pris en compte dans la limite de 80 caractères du nom d'une file d'attente. Pour déterminer si une file d'attente est FIFO, vous pouvez vérifier si son nom se termine par le suffixe.

Sécurité et fiabilité

Amazon SQS stocke toutes les files d'attente de messages et tous les messages dans une seule région AWS hautement disponible, comprenant plusieurs zones de disponibilité (AZ) redondantes afin qu'aucune défaillance d'ordinateur, de réseau ou de zone de disponibilité ne puisse empêcher l'accès aux messages. Pour plus d'informations, consultez Régions et zones de disponibilité dans le Guide de l'utilisateur Amazon du service de base de données relationnelle.

Des mécanismes d'authentification veillent à ce que les messages stockés dans les files d'attente de messages Amazon SQS soient sécurisés contre tout accès non autorisé. Vous pouvez contrôler qui peut envoyer des messages à une file d'attente de messages et qui peut recevoir des messages depuis une file d'attente de messages. Pour plus de sécurité, vous pouvez développer votre application afin de chiffrer les messages avant qu'ils ne soient placés dans une file d'attente de messages.

Amazon SQS possède son propre système d'autorisations basé sur les ressources, qui utilise des stratégies écrites dans le même langage de programmation que les stratégies d'AWS Identity and Access Management (IAM) : par exemple, vous pouvez utiliser des variables, tout comme dans les stratégies d'IAM. Pour plus d'informations, consultez Exemples de stratégie Amazon SQS dans le guide du développeur Amazon SQS.

Amazon SQS est compatible avec les protocoles HTTPS (HTTP over SSL) et TLS (Transport Layer Security). La plupart des clients peuvent automatiquement utiliser des versions plus récentes du protocole TLS sans modification du code ni de la configuration. Amazon SQS est compatible avec les versions 1.0, 1.1 et 1.2 du protocole TLS (Transport Layer Security) dans toutes les régions.

Quand Amazon SQS vous renvoie un message, ce message reste dans la file d'attente de messages, que vous le receviez ou non. Vous êtes responsable de la suppression du message ; la demande de suppression confirme que vous avez terminé de traiter le message.

Si vous ne supprimez pas le message, le service Amazon SQS le livrera à nouveau lorsqu'une nouvelle demande de réception lui sera adressée. Pour plus d'informations, consultez Délai de visibilité dans le guide du développeur Amazon SQS.

Non. Les files d'attente FIFO ne génèrent jamais de doublons de messages.

Pour une file d'attente standard, et bien que cela arrive rarement, il est possible que vous receviez une seconde fois un message qui a déjà été supprimé. 

Lorsque vous émettez une demande DeleteMessage sur un message supprimé précédemment, Amazon SQS renvoie une réponse de réussite.

Chiffrement côté serveur (SSE)

Le SSE vous permet de transférer des données sensibles dans des files d'attente chiffrées. Le chiffrement côté serveur protège 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). La fonctionnalité 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é.

Pour en savoir plus, consultez Protection des données à l'aide du chiffrement côté serveur (SSE) et d'AWS KMS dans le guide du développeur Amazon SQS.

Oui. Pour cela, vous devez activer la compatibilité entre les services AWS (par exemple Amazon CloudWatch Events, Amazon S3, and Amazon SNS) et les files d'attente avec SSE. Pour obtenir des instructions détaillées, consultez la section relative à la compatibilité du guide du développeur SQS.  

Le chiffrement côté serveur (SSE) pour Amazon SQS est disponible dans toutes les régions dans lesquelles Amazon SQS est disponible. Cliquez ici pour en savoir plus sur la disponibilité par région d'Amazon SQS.

Pour activer le chiffrement SSE pour une nouvelle file d'attente ou une file d'attente existante à l'aide de l'API Amazon SQS, spécifiez l'ID de la clé principale client (CMK), c'est-à-dire l'alias, l'ARN d'alias, l'ID de clé ou l'ARN d'une clé CMK gérée par AWS ou personnalisée, en définissant l'attribut KmsMasterKeyId de l'action CreateQueue ou SetQueueAttributes.

Pour obtenir des instructions détaillées, consultez les sections Création d'une file d'attente Amazon SQS avec Chiffrement côté serveur (SSE) et Configuration du Chiffrement côté serveur (SSE) pour une file d'attente Amazon SQS existante du guide du développeur Amazon SQS.

Le chiffrement SSE est pris en charge aussi bien par les files d'attente standard que FIFO.

Avant d'utiliser le chiffrement SSE, vous devez configurer les stratégies de clé AWS KMS afin de permettre le chiffrement des files d'attente, ainsi que le chiffrement et le déchiffrement des messages.

Pour activer le chiffrement SSE pour une file d'attente, vous pouvez utiliser la clé principale client (CMK) gérée par AWS pour Amazon SQS ou une clé CMK personnalisée. Pour en savoir plus, consultez la section Clés principales client du guide du développeur AWS KMS.

Pour envoyer des messages à une file d'attente chiffrée, le producteur de données doit disposer des autorisations kms:GenerateDataKey et kms:Decrypt pour la clé CMK.

Pour recevoir des messages d'une file d'attente chiffrée, le consommateur doit disposer de l'autorisation kms:Decrypt pour toute clé CMK utilisée pour chiffrer les messages dans la file d'attente spécifiée. Si la file d'attente joue le rôle de file d'attente de lettres mortes, le consommateur doit également disposer de l'autorisation kms:Decrypt pour toute clé CMK utilisée pour chiffrer les messages dans la file d'attente d'origine.

Pour plus d'informations, consultez Quelles sont les autorisations nécessaires pour utiliser SSE ? dans le guide du développeur Amazon SQS.

Nous ne facturons aucuns frais Amazon SQS supplémentaires. Cependant, des frais sont appliqués pour les appels d'Amazon SQS vers AWS KMS. Pour plus d'informations, consultez Tarification d'AWS Key Management Service.

Les frais d'utilisation d'AWS KMS dépendent de la période de réutilisation des clés de données configurée pour vos files d'attente. Pour plus d'informations, consultez Comment estimer mes frais d'utilisation AWS KMS ? dans le guide du développeur Amazon SQS.

La fonctionnalité SSE chiffre le corps d'un message dans la file d'attente Amazon SQS.

Le chiffrement SSE ne s'applique pas aux éléments suivants :

  • Métadonnées de file d'attente (nom et attributs de la file d'attente)
  • Métadonnées de message (ID, horodatage et attributs du message)
  • Métriques par file d'attente

Amazon SQS génère des clés de données basées sur la clé principale client (CMK) gérée par AWS pour Amazon SQS ou une clé CMK personnalisée. Cela permet le chiffrement d'enveloppe et le déchiffrement des messages pendant une durée que vous pouvez configurer (entre 1 minute et 24 heures).

Pour plus d'informations, consultez Quels sont les éléments chiffrés par la fonctionnalité SSE pour Amazon SQS ? dans le guide du développeur Amazon SQS.

La fonctionnalité SSE utilise l'algorithme AES-GCM 256.

Le chiffrement SSE ne limite pas le débit (TPS) d'Amazon SQS. Le nombre de files d'attente SSE que vous pouvez créer est limité en fonction des facteurs suivants :

  • La période de réutilisation des clés de données (1 minute à 24 heures).
  • Le quota AWS KMS défini pour chaque compte (100 TPS par défaut).
  • Le nombre de comptes ou d'utilisateurs IAM qui accèdent aux files d'attente.
  • L'existence de beaucoup de backlogs (plus il y a de backlogs, plus il en faut d'appels AWS KMS).

Prenons l'exemple suivant :

  • Vous définissez une période de réutilisation des clés de données de 5 minutes (300 secondes).
  • Le quota de TPS AWS KMS est de 100 TPS par défaut pour votre compte KMS.
  • Vous utilisez une file d'attente Amazon SQS sans message en souffrance, avec 1 utilisateur IAM effectuant les actions SendMessage ou ReceiveMessage pour l'ensemble des files d'attente.

Dans ce cas, vous pouvez calculer le nombre maximal théorique de files d'attente Amazon SQS avec chiffrement SSE de la manière suivante :

300 secondes × 100 TPS / 1 utilisateur IAM = 30 000 files d'attente

Afin de prévoir les coûts et de mieux comprendre votre facture AWS, vous souhaiterez peut-être connaître la fréquence à laquelle Amazon SQS utilise votre clé CMK.

Remarque : Bien que la formule suivante puisse vous donner une bonne estimation des coûts à prévoir, les coûts réels pourront être plus élevés en raison de la nature distribuée d'Amazon SQS.

Pour calculer le nombre de requêtes d'API par file d'attente (R), utilisez la formule suivante :

R = B / D * (2 * P + C)

B correspond à la période de facturation (en secondes)

D est la période de réutilisation des clés de données (en secondes)

P correspond au nombre d'éléments Principal producteurs envoyant des données à la file d'attente Amazon SQS.

C correspond au nombre d'éléments Principal consommateurs recevant des données de la file d'attente Amazon SQS.

Important : En règle générale, les éléments Principal producteurs sont facturés le double des éléments Principal consommateurs. Pour plus d'informations, consultez Fonctionnement de la période de réutilisation des clés de données dans le Guide du développeur Amazon SQS.

Si le producteur et le consommateur ont recours à des utilisateurs IAM différents, le coût augmente.

Pour plus d'informations, consultez Comment estimer mes frais d'utilisation AWS KMS ? dans le guide du développeur Amazon SQS

Conformité

Oui. Amazon SQS est conforme à la norme PCI DSS de niveau 1. Pour plus d'informations, consultez Conformité PCI.

Oui, AWS a étendu son programme de conformité HIPAA et comprend désormais Amazon SQS comme service éligible HIPAA. Si vous disposez d'un accord de partenariat (BAA) exécuté avec AWS, vous pouvez utiliser Amazon SQS pour développer vos applications conforme HIPAA, stocker des messages en transit et transmettre des messages y compris les messages contenant des informations de santé protégées (PHI).

Si vous disposez déjà d'un BAA exécuté avec AWS, vous pouvez utiliser Amazon SQS immédiatement. Si vous n'avez pas de BAA ou si vous avez d'autres questions sur l'utilisation d'AWS avec des applications conformes HIPAA, contactez-nous pour obtenir plus d'informations.

Remarque : Si vous préférez ne pas transférer les informations de santé protégées via Amazon SQS (ou si vous avez des messages dont la taille excède 256 Ko), vous pouvez également envoyer les charges utiles de message Amazon SQS via Amazon S3 à l'aide de la bibliothèque client étendue d'Amazon SQS pour Java (Amazon S3 est un service éligible HIPAA, à l'exception d'Amazon S3 Transfer Acceleration). Pour plus d'informations, consultez la section Utilisation de la bibliothèque client étendue d’Amazon SQS pour Java dans le guide du développeur Amazon SQS.

Limites et restrictions

Une période de rétention des messages plus longue procure une plus grande flexibilité en vous permettant de disposer d'intervalles plus longs entre la production et la consommation de messages.

Vous pouvez configurer la période de rétention des messages Amazon SQS en choisissant une durée entre 1 minute et 14 jours. La durée par défaut est de 4 jours. Une fois le quota de rétention des messages atteint, vos messages sont automatiquement supprimés.

Pour configurer la durée de rétention des messages, définissez l'attribut MessageRetentionPeriod à l'aide de la console ou de la méthode Distributiveness. Utilisez cet attribut pour spécifier le nombre de secondes durant lesquelles un message sera conservé dans Amazon SQS.

Vous pouvez utiliser l'attribut MessageRetentionPeriod pour configurer la période de rétention des messages de 60 secondes (1 minute) à 1 209 600 secondes (14 jours). Pour en savoir plus sur l'utilisation de cet attribut de message, consultez la page Amazon SQS API Reference.

Pour configurer la taille de message maximale, utilisez la console ou la méthode SetQueueAttributes pour configurer l'attribut MaximumMessageSize. Cet attribut définit le nombre d'octets pouvant être contenus dans un message Amazon SQS. Définissez cet attribut sur une valeur comprise entre 1 024 octets (1 Ko) et 262 144 octets (256 Ko). Pour plus d'informations, consultez la section Utilisation des attributs de messages Amazon SQS dans le guide du développeur Amazon SQS.

Pour envoyer des messages de plus de 256 Ko, utilisez la bibliothèque client étendue Amazon SQS pour Java. Cette bibliothèque vous permet d'envoyer un message Amazon SQS contenant une référence à un corps de message stocké dans Amazon S3 et dont la taille peut aller jusqu'à 2 Go.

Les messages Amazon SQS peuvent contenir jusqu'à 256 Ko de données sous forme de texte, y compris XML, JSON et du texte non formaté. Les caractères Unicode suivants sont acceptés :

#x9 | #xA | #xD | [#x20 à #xD7FF] | [#xE000 à #xFFFD] | [#x10000 à #x10FFFF]

Pour plus d'informations, consultez Spécifications du langage XML 1.0.

Une file d'attente de messages Amazon SQS peut contenir une infinité de messages. Cependant, il existe un quota de 120 000 messages en vol pour une file d'attente standard, et de 20 000 messages en vol pour une file d'attente FIFO. Les messages sont considérés comme étant « en vol » lorsqu'un composant utilisateur les a reçus à partir de la file d'attente, mais qu'ils n'ont pas encore été supprimés de cette dernière.

Vous pouvez créer une infinité de files d'attente de messages.

Les noms de files d'attente sont limités à 80 caractères.

Vous pouvez utiliser des caractères alphanumériques, des tirets (-) et des traits de soulignement (_).

Le nom d'une file d'attente de messages doit être unique au sein d'un compte et d'une région AWS. Vous pouvez réutiliser le nom d'une file d'attente de messages si vous supprimez la file d'attente de messages en question.

Partage de file d'attente

Vous pouvez associer une déclaration de stratégie d'accès (et spécifier les autorisations accordées) à la file d'attente à partager. Amazon SQS fournit des API pour créer et gérer les déclarations de stratégie d'accès :

  • AddPermission
  • RemovePermission
  • SetQueueAttributes
  • GetQueueAttributes

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

Le propriétaire de la file d'attente de messages paie l'accès à la file d'attente de messages partagée.

L'API Amazon SQS utilise le numéro de compte AWS pour identifier les utilisateurs AWS.

Pour partager une file d'attente de messages avec un utilisateur AWS, fournissez-lui l'URL complète de la file d'attente de messages que vous souhaitez partager. Les opérations CreateQueue et ListQueues renvoient cette URL dans leur réponse.

Oui. Vous pouvez configurer une stratégie d'accès permettant à des utilisateurs anonymes d'accéder à une file d'attente de messages.

L'API d'autorisations vous offre une interface pour partager l'accès à une file d'attente de messages avec des développeurs. Toutefois, cette API ne peut pas être utilisée pour accorder un accès conditionnel ou pour prendre en charge des cas d'utilisation plus avancés.

L'opération SetQueueAttributes prend en charge le langage de stratégie d'accès total. Par exemple, vous pouvez utiliser le langage de stratégie pour restreindre l'accès à une file d'attente de messages en fonction de l'adresse IP et du moment de la journée. Pour plus d'informations, consultez Exemples de stratégie Amazon SQS dans le guide du développeur Amazon SQS.

Accès au service et régions

Pour connaître la disponibilité du service par région, consultez le tableau des régions de l'infrastructure mondiale d'AWS.

Non. Chaque file d'attente de messages Amazon SQS est indépendante au sein de chaque région.

La tarification d'Amazon SQS est la même pour toutes les régions, sauf la Chine (Pékin). Pour en savoir plus, consultez la page Tarification Amazon SQS.

Vous pouvez transférer des données entre Amazon SQS et Amazon EC2 ou AWS Lambda gratuitement au sein de la même région.

Lorsque vous transférez des données entre Amazon SQS et Amazon EC2 ou AWS Lambda dans différentes régions, l'opération vous sera facturée au tarif de transfert de données normal. Pour en savoir plus, consultez la page Tarification Amazon SQS.

Files d'attente de lettres mortes

La file d'attente de lettres mortes est une file d'attente Amazon SQS à laquelle une file d'attente source peut envoyer des messages si l'application de la file d'attente source n'arrive pas à consommer les messages. Les files d'attente de lettres mortes facilitent la gestion des échecs de consommation des messages et la gestion du cycle de vie des messages non consommés. Vous pouvez configurer une alarme pour tous les messages transmis à une file d'attente de lettres mortes, consulter les journaux pour voir les exceptions qui ont pu provoquer leur envoi dans cette file d'attente et analyser le contenu des messages afin de diagnostiquer les problèmes liés à l'application. Une fois que vous récupérez votre application consommateur, vous pouvez rediriger les messages de la file d'attente de lettres mortes vers la file d'attente source.

Lorsque vous créez votre file d'attente source, Amazon SQS vous permet de spécifier une file d'attente de lettres mortes et la condition dans laquelle SQS doit déplacer les messages vers cette file d'attente de lettres mortes. Cette condition correspond au nombre de fois que le consommateur peut recevoir un message de la file d'attente, comme défini dans maxReceiveCount. Cette configuration de la file d'attente de lettres mortes avec une file d'attente source et un maxReceiveCount prend le nom de politique de redirection. Lorsque la valeur ReceiveCount d'un message dépasse la valeur maxReceiveCount de la file d'attente, Amazon SQS est conçu pour déplacer le message vers une file d'attente de lettres mortes (avec son ID de message d'origine). Par exemple, si la file d'attente source est dotée d'une politique de redirection avec un maxReceiveCount de cinq et que le consommateur de la file d'attente source reçoit un message six fois sans réussir à le consommer, SQS déplace le message vers la file d'attente de lettres mortes.

La politique de redirection gère la première partie du cycle de vie des messages non consommés en les déplaçant de la file d'attente source queue vers une file d'attente de lettres mortes. Ensuite, la file d'attente de lettres mortes complète le cycle en redéplaçant ces messages dans leur file d'attente source, comme illustré ci-dessous.

Fonctionnement d'AWS Local Zones

Tout d'abord, elle vous permet d'examiner un échantillon des messages disponibles dans la file d'attente de lettres mortes en vous montrant les attributs et les métadonnées associées au message. Une fois que vous avez examiné les messages, vous pouvez les déplacer vers leur file d'attente source. Vous pouvez également sélectionnez la vitesse de la redirection afin de configurer à quelle fréquence Amazon SQS déplace les messages de la file d'attente de lettres mortes vers la file d'attente source.

Oui. Cependant, vous devez utiliser une file d'attente dead letter queue FIFO avec une file d'attente FIFO. (De même, vous ne pouvez utiliser qu'une file d'attente de lettres mortes standard avec une file d'attente standard.)