Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente...

200
Amazon Simple Queue Service Guide du développeur

Transcript of Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente...

Page 1: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue ServiceGuide du développeur

Page 2: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeur

Amazon Simple Queue Service: Guide du développeurCopyright © Amazon Web Services, Inc. and/or its affiliates. All rights reserved.

Les marques commerciales et la présentation commerciale d'Amazon ne peuvent pas être utilisées en relation avecun produit ou un service extérieur à Amazon, d'une manière susceptible d'entraîner une confusion chez les clients, oud'une manière qui dénigre ou discrédite Amazon. Toutes les autres marques commerciales qui ne sont pas la propriétéd'Amazon sont la propriété de leurs propriétaires respectifs, qui peuvent ou non être affiliés ou connectés à Amazon,ou sponsorisés par Amazon.

Page 3: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeur

Table of ContentsQu'est-ce qu'Amazon SQS ? ................................................................................................................ 1

Avantages offerts par l'utilisation Amazon SQS ............................................................................... 1Différences entre Amazon SQS, Amazon MQ et Amazon SNS .......................................................... 2Types de requête ....................................................................................................................... 2Tâches courantes pour commencer à utiliser Amazon SQS ............................................................... 3Tarification pour Amazon SQS ..................................................................................................... 3

Configuration de ................................................................................................................................. 4Étape 1 : Créer un Compte AWS .................................................................................................. 4Étape 2 : Création d'un utilisateur IAM ........................................................................................... 4Étape 3 : Obtenir votre ID de clé d'accès et votre clé d'accès secrète ................................................. 5Étape 4 : Préparez-vous à utiliser l'exemple de code ........................................................................ 6Étapes suivantes ........................................................................................................................ 7

Mise en route .................................................................................................................................... 8Prerequisites .............................................................................................................................. 8Étape 1  : Créer une file d'attente ................................................................................................... 8Étape 2  : Envoyer un message ..................................................................................................... 8Étape 3 : Réception et suppression de votre message ...................................................................... 9Étape 4 : Supprimer votre file d'attente ......................................................................................... 10Étapes suivantes ...................................................................................................................... 10

Configuration Amazon SQS ................................................................................................................ 11Présentation de la console Amazon SQS ..................................................................................... 11Création d'une file d'attente ........................................................................................................ 12Modification d'une file d'attente ................................................................................................... 13Configuration de paramètres de file d'attente ................................................................................ 14Configuration de la stratégie d'accès ........................................................................................... 15Configuration du chiffrement SSE pour une file d'attente ................................................................. 16Configuration d'une file d'attente de lettre morte ............................................................................ 16Configuration des balises pour une file d'attente ............................................................................ 17Abonnement d'une file d'attente à une rubrique ............................................................................. 18Configuration d'un déclencheur Lambda ....................................................................................... 18

Prerequisites .................................................................................................................... 19Gestion des files d'attente .................................................................................................................. 20

Envoi de messages ................................................................................................................... 20Attributs de message ................................................................................................................. 21Réception et suppression d'un message ....................................................................................... 22Purge d'une file d'attente ........................................................................................................... 22Suppression d'une file d'attente ................................................................................................... 23Confirmer qu'une file d'attente est vide ......................................................................................... 23

Fonctionnement Amazon SQS ............................................................................................................ 25Architecture basique .................................................................................................................. 25

Files d'attente distribuées ................................................................................................... 25Cycle de vie des messages ................................................................................................ 26

Files d'attente standard .............................................................................................................. 28Ordre des messages ......................................................................................................... 28Diffusion au moins une fois ................................................................................................ 28

Files d'attente FIFO ................................................................................................................... 28Ordre des messages ......................................................................................................... 29Termes clés ..................................................................................................................... 30Logique de remise FIFO .................................................................................................... 30Traitement en une seule fois .............................................................................................. 31Passage d'une file d'attente standard à une file d'attente FIFO ................................................. 32Débit élevé pour les files d'attente FIFO ............................................................................... 32Compatibility ..................................................................................................................... 38

Identificateurs de files d'attente et de messages ............................................................................ 38

iii

Page 4: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeur

Identifiants pour les files d'attente standard et FIFO ............................................................... 38Identifiants supplémentaires pour les files d'attente FIFO ........................................................ 39

Métadonnées de message ......................................................................................................... 40Attributs de message ......................................................................................................... 40Attributs de système de message ........................................................................................ 43

Ressources requises pour traiter les messages ............................................................................. 43Répertorier la pagination ............................................................................................................ 44Balises de répartition des coûts .................................................................................................. 44Attente active de courte durée et de longue durée ......................................................................... 45

Consommation des messages à l'aide de l'interrogation courte ................................................. 45Consommation des messages à l'aide de l'interrogation longue ................................................ 46Différences entre les interrogations courtes et longues ............................................................ 46

Files d'attente de lettres mortes .................................................................................................. 47Fonctionnement des files d'attente de lettres mortes ............................................................... 47Quels sont les avantages des files d'attente de lettres mortes ? ............................................... 48Comment les divers types de file d'attente gèrent-ils les échecs de messages ? .......................... 48Quand utiliser une file d'attente de lettres mortes ? ................................................................ 49Dépannage des files d'attente de lettres mortes ..................................................................... 49

Délai de visibilité ....................................................................................................................... 50Messages en transit .......................................................................................................... 51Définition du délai de visibilité ............................................................................................. 52Modification du délai de visibilité d'un message ..................................................................... 52Désactivation du délai de visibilité d'un message ................................................................... 52

Files d'attente à retardement ...................................................................................................... 53Files d'attente temporaires ......................................................................................................... 53

Files d'attente virtuelles ...................................................................................................... 54Modèle de messagerie demande-réponse (files d'attente virtuelles) ........................................... 55Exemple de scénario Traitement d'une demande de connexion ................................................ 56Nettoyage des files d'attente ............................................................................................... 57

Temporisateurs de messages ..................................................................................................... 57Bonnes pratiques .............................................................................................................................. 59

Recommandations pour les files d'attente standard et FIFO ............................................................. 59Utilisation des messages .................................................................................................... 59Réduction des coûts .......................................................................................................... 62Passage d'une file d'attente standard à une file d'attente FIFO ................................................. 62

Recommandations supplémentaires pour les files d'attente FIFO ...................................................... 63Utilisation de l'ID de déduplication du message ..................................................................... 63Utilisation de l'ID de groupe de messagerie .......................................................................... 64Utilisation de l'ID de tentative de demande de réception .......................................................... 65

Exemples Java ................................................................................................................................. 66Utilisation du chiffrement côté serveur .......................................................................................... 66

Ajout de SSE à une file d'attente existante ........................................................................... 66Désactivation du SSE pour une file d'attente ......................................................................... 67Création d'une file d'attente avec SSE ................................................................................. 67Extraction des attributs SSE ............................................................................................... 68

Configuration des balises ........................................................................................................... 68Étiquettes de liste ............................................................................................................. 68Ajout ou modification de balises .......................................................................................... 68Suppression de balises ...................................................................................................... 69

Attributs de message ................................................................................................................. 69Définition des attributs ....................................................................................................... 69Envoi d'un message avec des attributs ................................................................................ 71

Gestion de messages volumineux ............................................................................................... 71Prerequisites .................................................................................................................... 71Exemple : Utilisation d'Amazon S3 pour gérer les messages Amazon SQS volumineux ................. 72

Utilisation de JMS ............................................................................................................................. 75Prerequisites ............................................................................................................................ 75

iv

Page 5: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeur

Démarrer avec la bibliothèque de messagerie Java ........................................................................ 76Création d'une connexion JMS ............................................................................................ 76Création d'une file d'attente Amazon SQS ............................................................................ 77Envoi de messages de façon synchrone .............................................................................. 78Réception des messages de façon synchrone ....................................................................... 78Réception des messages de façon asynchrone ..................................................................... 80Utilisation du mode de reconnaissance du client .................................................................... 80Utilisation du mode de reconnaissance indépendamment de l'ordre de réception ......................... 81

Utilisation du client JMS avec d'autres clients Amazon SQS ............................................................ 82Exemple d'utilisation de Java pour l'utilisation de JMS avec des files d'attente Amazon SQS Standard ..... 83

ExampleConfiguration.java ................................................................................................. 83TextMessageSender.java ................................................................................................... 85SyncMessageReceiver.java ................................................................................................ 86AsyncMessageReceiver.java ............................................................................................... 87SyncMessageReceiverClientAcknowledge.java ...................................................................... 88SyncMessageReceiverUnorderedAcknowledge.java ................................................................ 91SpringExampleConfiguration.xml ......................................................................................... 93SpringExample.java ........................................................................................................... 94ExampleCommon.java ....................................................................................................... 96

Implémentations JMS 1.1 prises en charge ................................................................................... 97Interfaces courantes prises en charge .................................................................................. 97Types de messages pris en charge ..................................................................................... 97Modes de reconnaissance des messages pris en charge ........................................................ 97En-têtes définis par JMS et propriétés réservées ................................................................... 98

Didacticiels ....................................................................................................................................... 99Création d'une file d'attente Amazon SQS (AWS CloudFormation) .................................................... 99Envoi d'un message à partir d'un VPC ....................................................................................... 100

Étape 1 : Création d'une key pair Amazon EC2 .................................................................... 101Étape 2 : CréerAWSresources ........................................................................................... 101Étape 3 : Confirmer que votre instance EC2 n'est pas accessible publiquement ......................... 102Étape 4 : Créer un point de terminaison Amazon VPC pour Amazon SQS ................................ 103Étape 5 : Envoyer un message à votre file d'attente Amazon SQS .......................................... 103

Quotas ........................................................................................................................................... 105Quotas liés aux files d'attente ................................................................................................... 105Quotas liés aux messages ....................................................................................................... 106Quotas liés aux stratégies ........................................................................................................ 109

Automatisation et dépannage ............................................................................................................ 110Automatisation des notifications à l'aide de EventBridge ................................................................ 110Résolution des files d'attente à l'aide de X-Ray ............................................................................ 110

Sécurité ......................................................................................................................................... 111Protection des données ............................................................................................................ 111

Chiffrement des données .................................................................................................. 112Confidentialité du trafic inter-réseaux .................................................................................. 119

Identity and Access Management .............................................................................................. 120Authentication ................................................................................................................. 120Contrôle d'accès ............................................................................................................. 122Présentation ................................................................................................................... 122Utilisation de stratégies basées sur l'identité ........................................................................ 128Utilisation de stratégies personnalisées avec le langage d'access policy ................................... 136Utilisation d'informations d'identification de sécurité temporaires ............................................. 147Référence des autorisations d'API ..................................................................................... 148

Journalisation et surveillance .................................................................................................... 150Journalisation des appels d'API à l'aide de CloudTrail ........................................................... 151Surveillance de files d'attente avec CloudWatch ................................................................... 155

Validation de la conformité ....................................................................................................... 163Résilience .............................................................................................................................. 163

Files d'attente distribuées ................................................................................................. 164

v

Page 6: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeur

Sécurité de l'infrastructure ........................................................................................................ 164Bonnes pratiques .................................................................................................................... 165

Bonnes pratiques en matière de prévention ......................................................................... 165Utilisation des API ........................................................................................................................... 168

Envoi de requêtes d'API Query ................................................................................................. 168Constitution d'un point de terminaison ................................................................................ 168Envoi de requête GET ..................................................................................................... 169Envoi de requête POST ................................................................................................... 169Authentification des requêtes ............................................................................................ 170Interprétation des réponses .............................................................................................. 173

Actions de traitement par lots ................................................................................................... 174Activation de la mise en tampon côté client et du traitement par lots des requêtes ...................... 175Augmentation du débit à l'aide de la mise à l'échelle horizontale et du traitement par lots desactions ........................................................................................................................... 179

Ressources connexes ...................................................................................................................... 189Historique de la documentation ......................................................................................................... 190AWSGlossaire ................................................................................................................................ 193................................................................................................................................................... cxciv

vi

Page 7: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurAvantages offerts par l'utilisation Amazon SQS

Qu'est-ce qu'Amazon Simple QueueService ?

Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durableet disponible qui vous permet d'intégrer et de découpler les systèmes et les composants de logicielsdistribués. Amazon SQS propose des constructions communes telles queFiles d'attente de lettresmortes (p. 47)andBalises de répartition des coûts (p. 44). Il fournit une API de services Webgénérique à laquelle vous pouvez accéder en utilisant n'importe quel langage de programmation queleAWSPrise en charge de SDK.

Amazon SQS prend en charge les deuxStandard (p. 28)andFiles d'attente FIFO (p. 28). Pour de plusamples informations, veuillez consulter Types de requête (p. 2).

Rubriques• Avantages offerts par l'utilisation Amazon SQS (p. 1)• Différences entre Amazon SQS, Amazon MQ et Amazon SNS (p. 2)• Types de requête (p. 2)• Tâches courantes pour commencer à utiliser Amazon SQS (p. 3)• Tarification pour Amazon SQS (p. 3)

Avantages offerts par l'utilisation Amazon SQS• Sécurité–Vous pouvez contrôler (p. 120)qui peut envoyer des messages et recevoir des messages à

partir d'une file d'attente Amazon SQS.

chiffrement côté serveur (SSE) (p. 112)vous permet de transmettre des données sensibles enprotégeant le contenu des messages présents dans des files d'attente à l'aide de clés gérées dansAWSKey Management Service(AWS KMS).

• Durabilité— Pour la sécurité de vos messages, Amazon SQS les stocke sur plusieurs serveurs. Supportdes files d'attente standardDiffusion au moins une fois (p. 28)et la prise en charge des files d'attenteFIFOtraitement des messages exacts une seule fois (p. 31).

• Disponibilité en— Amazon SQSInfrastructure redondante (p. 25)pour fournir un accès extrêmementsimultané aux messages et une haute disponibilité pour la production et la consommation des messages.

• Evolutivité— Amazon SQS peut traiter chaqueDemande mise en tampon (p. 175)de manièreindépendante, en se mettant à l'échelle de manière transparente pour gérer les augmentations et les picsde charge sans aucune instruction de mise en service.

• Fiabilité— Amazon SQS verrouille vos messages pendant le traitement afin que plusieurs producteurspuissent envoyer des messages et plusieurs consommateurs puissent recevoir des messages en mêmetemps.

• Personnalisation de l'— Vos files d'attente n'ont pas besoin d'être parfaitement identiques—par exemple,vous pouvezdéfinir un délai par défaut dans une file d'attente (p. 53). Vous pouvez stocker le contenudes messages de plus de 256 KoUtilisation Amazon Simple Storage Service (Amazon S3) (p. 71)ouAmazon DynamoDB, avec Amazon SQS tenant un pointeur vers l'objet Amazon S3, ou vous pouvezfractionner un message volumineux en messages de plus petite taille.

1

Page 8: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurDifférences entre Amazon SQS,

Amazon MQ et Amazon SNS

Différences entre Amazon SQS, Amazon MQ etAmazon SNS

Amazon SQS etAmazon SNSsont des services de file d'attente et de rubrique hautement évolutifs, simplesà utiliser et ne nécessitant pas de configuration des agents de messages. Nous recommandons cesservices pour les nouvelles applications qui peuvent bénéficier d'une évolutivité presque illimitée et d'APIsimples.

Amazon MQest un service d'agent de messages géré qui fournit une compatibilité avec de nombreuxagents de messages populaires. Nous recommandons Amazon MQ pour la migration d'applications depuisdes agents de messages existants qui s'appuient sur une compatibilité avec des API (comme JMS) ou desprotocoles (comme AMQP, MQTT, OpenWire et STOMP).

Types de requêteLe tableau suivant décrit les capacités des files d'attente standard et des files d'attente FIFO.

File d'attente standard File d'attente FIFO

Débit illimité— Les files d'attente standardprennent en charge un nombre presqueillimité d'appels d'API par seconde, par actiond'API (SendMessage,ReceiveMessage,ouDeleteMessage).

Remise au moins une fois— Un message est remisau moins une fois, mais il peut arriver qu'il soitremis en plusieurs exemplaires.

Commande au meilleur effort— Parfois, lesmessages sont remis dans un ordre différent decelui de leur envoi.

Débit élevé— Si vous utilisezTraitementpar lot (p. 174), les files d'attenteFIFO prennent en charge jusqu'à 3 000messages par seconde, par méthode d'API(SendMessageBatch,ReceiveMessage,ouDeleteMessageBatch). Les 3 000 messagespar seconde représentent 300 appels d'API,chacun avec un lot de 10 messages. Pourdemander une augmentation de quota, envoyezune demande de support. Sans traitement parlots, les files d'attente FIFO prennent en chargejusqu'à 300 appels d'API par seconde, par méthoded'API (SendMessage, ReceiveMessage ouDeleteMessage).

Traitement unique— Un message est remis unefois et reste disponible jusqu'à son traitement et sasuppression par un utilisateur. Aucun doublon n'estajouté à la file d'attente.

Livraison du premier entré, premier sorti— L'ordredans lequel les messages sont envoyés et reçusest rigoureusement conservé.

Envoyez les données entre les applications lorsquele débit est important, par exemple :

• Découplez les demandes utilisateur en directet le travail intensif en arrière-plan : permettez

Envoyez les données entre les applicationslorsque l'ordre des événements est important, parexemple :

2

Page 9: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurTâches courantes pour commencer à utiliser Amazon SQS

File d'attente standard File d'attente FIFOaux utilisateurs de charger un support pendant leredimensionnement ou le codage.

• Allouez des tâches à plusieurs nœuds de travail :traitez un grand nombre de demandes devalidations de cartes de crédit.

• Organisez les messages en lots pour untraitement futur : planifiez l'ajout des entréesmultiples dans une base de données.

• Assurez-vous que les commandes entréespar l'utilisateur sont exécutées dans l'ordreapproprié.

• Afficher le prix correct du produit en envoyant lesmodifications de prix dans le bon ordre.

• Empêcher un étudiant de s'inscrire à un coursavant d'avoir créé un compte.

Tâches courantes pour commencer à utiliserAmazon SQS

• Pour créer votre première file d'attente avec Amazon SQS, et envoyer, recevoir et supprimer unmessage, consultezPremiers pas avec Amazon SQS (p. 8).

• Pour déclencher une fonction Lambda, consultez Configuration d'une file d'attente pour déclencherunAWS LambdaFonction (console) (p. 18).

• Pour en savoir plus sur la fonctionnalité et l'architecture d'Amazon SQS, consultezFonctionnementAmazon SQS (p. 25).

• Pour obtenir des conseils et des mises en garde qui vous aideront à tirer le meilleur d'Amazon SQS,consultezBonnes pratiques pour Amazon SQS (p. 59).

• Explorez les exemples Amazon SQS pour l'un desAWSSDK, tels que leAWS SDK for Java 2.xManuel dudéveloppeur.

• Pour en savoir plus sur les actions Amazon SQS, consultez leRéférence d'API Amazon Simple QueueService.

• Pour en savoir plus sur Amazon SQSAWS CLI, consultez le AWS CLIRéférence des commandes.

Tarification pour Amazon SQSAmazon SQS n'a pas de coûts initiaux. Le premier million de demandes mensuelles sont gratuites. Aprèscela, vous payez en fonction du nombre et du contenu des demandes, et des interactions avec Amazon S3et leAWS Key Management Service.

Pour plus d'informations, consultezTarification Amazon SQS.

3

Page 10: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurÉtape 1 : Créer un Compte AWS

Configuration d'Amazon SQSRubriques

• Étape 1 : Créer un Compte AWS (p. 4)• Étape 2 : Création d'un utilisateur IAM (p. 4)• Étape 3 : Obtenir votre ID de clé d'accès et votre clé d'accès secrète (p. 5)• Étape 4 : Préparez-vous à utiliser l'exemple de code (p. 6)• Étapes suivantes (p. 7)

Avant de pouvoir utiliser Amazon SQS pour la première fois, vous devez suivre la procédure ci-dessous.

Étape 1 : Créer un Compte AWSPour accéder à n'importe quelAWS, vous devez d'abord créer un Compte AWS , un compte Amazon.comqui peut utiliserAWSProduits . Vous pouvez utiliser votre Compte AWS Pour afficher vos rapports d'activitéet d'utilisation, et gérer l'authentification et les accès.

Pour éviter d'utiliser votre Compte AWS Pour les actions Amazon SQS, il est recommandé de créer unutilisateur IAM pour chaque personne ayant besoin d'un accès administratif à Amazon SQS.

Pour créer un compte

1. Ouvrez https://portal.aws.amazon.com/billing/signup.2. Suivez les instructions en ligne.

Dans le cadre de la procédure d'inscription, vous recevrez un appel téléphonique et vous saisirez uncode de vérification en utilisant le clavier numérique du téléphone.

Étape 2 : Création d'un utilisateur IAMPour créer un administrateur pour vous-même et ajouter l'utilisateur à un groupe d'administrateurs(console)

1. Connectez-vous à la console IAM en tant que propriétaire du compte en choisissant Root user(Utilisateur racine) et en saisissant l'adresse e-mail de votre Compte AWS . Sur la page suivante,saisissez votre mot de passe.

Note

Nous vous recommandons vivement de respecter la bonne pratique qui consiste à avoirrecours à l'utilisateur IAM Administrator suivant et protéger les informations d'identificationde l'utilisateur racine. Connectez-vous en tant qu'utilisateur racine pour effectuer certainestâches de gestion des comptes et des services.

2. Dans le panneau de navigation, choisissez Utilisateurs, puis Add user (Ajouter un utilisateur).3. Dans User name (Nom d'utilisateur), entrez Administrator.

4

Page 11: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurÉtape 3 : Obtenir votre ID de clé

d'accès et votre clé d'accès secrète

4. Cochez la case à côté de AWS Management Console access (accès à la console). Puis, sélectionnezCustom password (Mot de passe personnalisé, et entrez votre nouveau mot de passe dans la zone detexte.

5. (Facultatif) Par défaut, AWS oblige le nouvel utilisateur à créer un nouveau mot de passe lors de sapremière connexion. Décochez la case en regard de User must create a new password at next sign-in(L'utilisateur doit créer un nouveau mot de passe à sa prochaine connexion) pour autoriser le nouvelutilisateur à réinitialiser son mot de passe une fois qu'il s'est connecté.

6. Choisissez Next (Suivant) Permissions (Autorisations).7. Sous Set permissions (Accorder des autorisations), choisissez Add user to group (Ajouter un utilisateur

au groupe).8. Choisissez Create group.9. Dans la boîte de dialogue Create group (Créer un groupe), pour Group name (Nom du groupe), tapez

Administrators.10. Choisissez Filter policies (Filtrer les stratégies), puis sélectionnez AWS managed - job function

(Fonction professionnelle gérée par AWS) pour filtrer le contenu de la table.11. Dans la liste des stratégies, cochez la case AdministratorAccess. Choisissez ensuite Create group.

Note

Vous devez activer l'accès des rôles et utilisateurs IAM à la facturation avant de pouvoirutiliser les autorisations AdministratorAccess pour accéder à la console AWS Billing andCost Management. Pour ce faire, suivez les instructions de l'étape 1 du didacticiel portant surcomment déléguer l'accès à la console de facturation.

12. De retour dans la liste des groupes, activez la case à cocher du nouveau groupe. Choisissez Refreshsi nécessaire pour afficher le groupe dans la liste.

13. Choisissez Next (Suivant) Tags (Balises).14. (Facultatif) Ajoutez des métadonnées à l'utilisateur en associant les balises sous forme de paires

clé-valeur. Pour de plus amples informations sur l'utilisation des balises dans IAM, veuillez consulterBalisage des utilisateurs et des rôles IAM dans le Guide de l'utilisateur IAM.

15. Choisissez Next (Suivant) VérificationPour afficher la liste des membres du groupe à ajouter au nouvelutilisateur. Une fois que vous êtes prêt à continuer, choisissez Create user.

Vous pouvez utiliser ce même processus pour créer d'autres groupes et utilisateurs et pour accorder à vosutilisateurs l'accès aux ressources de votre Compte AWS . Pour savoir comment utiliser des stratégiesqui limitent les autorisations d'accès des utilisateurs à des ressources AWS spécifiques, veuillez consulterGestion des accès et Exemples de stratégies.

Étape 3 : Obtenir votre ID de clé d'accès et votre cléd'accès secrète

Pour utiliser les actions Amazon SQS (par exemple, à l'aide de Java ou de l'AWS Command LineInterface), vous avez besoin d'un ID de clé d'accès et d'une clé d'accès secrète.

Note

L' ID de clé d'accès et la clé d'accès secrète sont spécifiques à AWS Identity and AccessManagement. Ne les confondez pas avec les informations d'identification d'autresAWS, commeles paires de clés Amazon EC2.

Les clés d'accès se composent d'un ID de clé d'accès et d'une clé d'accès secrète, qui permettent designer les requêtes programmées auprès deAWS. Si vous n'avez pas de clés d'accès, vous pouvez les

5

Page 12: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurÉtape 4 : Préparez-vous à utiliser l'exemple de code

créer à partir de laAWS Management Console. À titre de bonne pratique, n'utilisez pas la Compte AWS Lesclés d'accès utilisateur racine pour toute tâche où elle n'est pas requise. C'est laCréer un utilisateur IAMadministrateuravec des clés d'accès pour vous-même.

La seule fois où vous pouvez afficher ou télécharger la clé d'accès secrète est lors de la création des clés.Vous ne pourrez pas les récupérer plus tard. Toutefois, vous pouvez créer de nouvelles clés d'accès àtout moment. Vous devez également disposer des autorisations permettant d'effectuer les opérations IAMrequises. Pour de plus amples informations, veuillez consulterAutorisations requises pour accéder auxautres ressources IAMdans leIAM User Guide.

Pour créer des clés d'accès pour un utilisateur IAM

1. Connectez-vous à la AWS Management Console et ouvrez la console IAM à l'adresse https://console.aws.amazon.com/iam/.

2. Dans le volet de navigation, sélectionnez Users.3. Choisissez le nom utilisateur dont vous souhaitez créer les clés d'accès, puis choisissez leInformations

d'identification sécuritéOnglet.4. DansClés d'accèssection, choisissezCréer une clé d'accès.5. Pour afficher la nouvelle key pair d'accès, choisissezAfficher. Vous ne pourrez pas accéder à la clé

d'accès secrète à nouveau une fois que cette boîte de dialogue se sera fermée. Vos informationsd'identification s'afficheront comme suit :

• ID de clé d'accès : AKIAIOSFODNN7EXAMPLE• Clé d'accès secrète : wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY

6. Pour télécharger la paire de clés, choisissez Télécharger le fichier .csv. Stockez les clés dans unemplacement sûr. Vous ne pourrez pas accéder à la clé d'accès secrète à nouveau une fois que cetteboîte de dialogue se sera fermée.

Préservez la confidentialité des clés afin de protéger votre compte Compte AWS et ne les envoyezjamais par e-mail. Ne les divulguez à personne hors de votre entreprise, même si vous recevez unedemande qui semble provenir d'AWS ou d'Amazon.com. Aucun véritable représentant d'Amazon nevous demandera jamais de lui fournir votre clé secrète.

7. Après avoir téléchargé le.csv, choisissezFermer. Lorsque vous créez une clé d'accès, la paire de clésest activée par défaut et vous pouvez utiliser la paire immédiatement.

Voir aussi

• En quoi consiste IAM ?dans leIAM User Guide• AWSInformations d'identification de sécuritéinAWSRéférence générale

Étape 4 : Préparez-vous à utiliser l'exemple de codeCe guide comprend des exemples qui utilisent leAWSSDK for Java. Pour exécuter l'exemple de code,suivez les instructions de configuration dansDémarrer avecAWSSDK for Java 2.0.

Vous pouvez développerAWSdans d'autres langages de programmation, tels que Go, JavaScript, Pythonet Ruby. Pour de plus amples informations, veuillez consulterOutils de développement et de gestiond'applications surAWS.

Note

Vous pouvez explorer Amazon SQS sans écrire de code avec des outils comme leAWS CommandLine Interface(AWS CLI) ou Windows PowerShell. Vous pouvez trouverAWS CLIDans leSectionAmazon SQSde laAWS CLIRéférence des commandes. Vous pouvez trouver des exemples de

6

Page 13: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurÉtapes suivantes

Windows PowerShell dans la section Amazon Simple File d'attente Service deAWS Tools forPowerShellRéférence Cmdlet.

Étapes suivantesVous êtes maintenant prêt à passer.Mise en route (p. 8)avec la gestion des files d'attente et desmessages Amazon SQS à l'aide de l'outilAWS Management Console.

7

Page 14: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurPrerequisites

Premiers pas avec Amazon SQSCette section vous aide à vous familiariser avec Amazon SQS en vous montrant comment gérer des filesd'attente et des messages à l'aide d'Amazon SQS.

Rubriques• Prerequisites (p. 8)• Étape 1 : Créer une file d'attente (p. 8)• Étape 2 : Envoyer un message (p. 8)• Étape 3 : Réception et suppression de votre message (p. 9)• Étape 4 : Supprimer votre file d'attente (p. 10)• Étapes suivantes (p. 10)

PrerequisitesAvant de commencer, complétez les étapes détaillées dans Configuration d'Amazon SQS (p. 4).

Étape 1 : Créer une file d'attenteLa tâche la plus importante et la plus courante d'Amazon SQS consiste à créer des files d'attente. Cetteprocédure indique comment créer et configurer une file d'attente FIFO.

1. Ouvrez la console Amazon SQS à l'adressehttps://console.aws.amazon.com/sqs/.2. Choisissez Create queue (Créer une file d'attente).3. Dans la pageCréation d'une file, spécifiez la région correcte.4. Dans laStandardLe type de file d'attente est sélectionné par défaut. ChoisissezFILES D'ATTENTE.

Vous ne pouvez pas modifier le type de file d'attente après avoir créé une file d'attente.5. Saisissez une valeurNomPour votre file d'attente. Le nom d'une file d'attente FIFO doit se terminer par

l'attribut.fifosuffixe.6. Pour créer votre file d'attente avec les paramètres par défaut, faites défiler vers le bas et

choisissezCréation d'une file. Amazon SQS crée la file d'attente et affiche laDétails.

Amazon SQS propage des informations sur la nouvelle file d'attente dans tout le système. Étant donnéqu'Amazon SQS est un système distribué, vous pouvez rencontrer un léger retard avant que la filed'attente ne soit affichée sur leFiles d'attente.

Étape 2 : Envoyer un messageUne fois que vous avez créé votre file d'attente, vous pouvez lui envoyer un message.

1. Dans le volet de navigation de gauche, choisissezFiles d'attente. Sélectionnez la file d'attente dans laliste des files d'attente que vous avez créée.

2. DeActions, choisissezEnvoyer et recevoir des messages.

8

Page 15: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurÉtape 3 : Réception et suppression de votre message

La console affiche le paramètreEnvoyer et recevoir des messages.3. Entrez du texte dans le champCorps du message4. Saisissez une valeurID de groupe de messagesPour la file d'attente. Pour plus d'informations,

consultez Logique de remise FIFO (p. 30).5. (Facultatif) Entrez une valeurID de déduplication du message. Si vous activez la déduplication

basée sur le contenu, l'ID de déduplication des messages n'est pas requis. Pour plus d'informations,consultez Logique de remise FIFO (p. 30).

6. Cliquez sur Send Message (Envoyer un message).

Votre message est envoyé et la console affiche un message de réussite. ChoisissezView details(Afficher les détails)pour afficher des informations sur le message envoyé.

Étape 3 : Réception et suppression de votremessage

Une fois que vous avez envoyé un message à une file d'attente, vous pouvez le récupérer à partir de celle-ci. Lorsque vous demandez à récupérer des messages à partir d'une file d'attente, vous ne pouvez passpécifier le message que vous voulez récupérer. Au lieu de cela, vous spécifiez le nombre maximal demessages (jusqu'à 10) que vous souhaitez récupérer.

1. À partir de laFiles d'attente, sélectionnez une file d'attente.2. DeActions de file, sélectionnezEnvoyer et recevoir des messages.

La console affiche le paramètreEnvoyer et recevoir des messages.3. ChoisissezSondage pour les messages.

Amazon SQS commence à interroger les serveurs pour trouver des messages dans la file d'attente.La barre de progression sur le côté droit de l'ongletRéception de messagesaffiche la durée del'interrogation.

9

Page 16: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurÉtape 4 : Supprimer votre file d'attente

Dans laMessagesaffiche une liste des messages reçus. Pour chaque message, la liste affiche l'ID dumessage, la date d'envoi, la taille et le nombre de réceptions.

4. Pour supprimer des messages, sélectionnez les messages que vous souhaitez supprimer, puischoisissezSupprimer.

5. DansSuppression des messages, choisissezSupprimer.

Étape 4 : Supprimer votre file d'attente1. Sélectionnez la file d'attente dans la liste des files d'attente que vous avez créée.2. À partir de laFiles d'attente, sélectionnez la file d'attente à supprimer.3. ChoisissezSuppression de la.

La console affiche le paramètreSuppression de laboîte de dialogue.4. DansSuppression de la, confirmez la suppression en saisissantdelete.5. Sélectionnez Delete.

Étapes suivantesMaintenant que vous avez créé une file d'attente, et appris à envoyer, recevoir et supprimer des messages,et à supprimer une file d'attente, vous souhaiterez peut-être essayer les opérations suivantes :

• Configurer les files d'attente, y compris SSE et d'autres fonctionnalités (p. 11).• Envoyer un message avec des attributs. (p. 21)• Envoyer un message à partir d'un VPC. (p. 100)• En savoir plus sur les flux et les processus Amazon SQS : LisezFonctionnement des files

d'attente (p. 25),Bonnes pratiques (p. 59), etQuotas (p. 105). Vous pouvez également explorerleArticles et didacticiels Amazon SQS. Si vous avez des questions, parcourez leFAQ Amazon SQSouparticiper à laForums pour développeurs Amazon SQS.

• Découvrez comment interagir avec Amazon SQS par programmation : LisezUtilisation desAPI (p. 168)et explorez leExemples de code et de bibliothèqueset les centres de développement :• Java• JavaScript• PHP• Python• Ruby• Windows & .NET

• Découvrez comment surveiller les coûts et les ressources dans la section Automatisation et dépannagedes files d'attente Amazon SQS (p. 110).

• Découvrez comment protéger vos données et y accéder dans la section Sécurité (p. 111).

10

Page 17: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurPrésentation de la console Amazon SQS

Configuration des files d'attenteAmazon SQS (console)

Utilisez la console Amazon SQS (Amazon SQS) pour configurer et gérer les files d'attente et lesfonctionnalités Amazon Simple Queue Service (Amazon SQS). Vous pouvez également utiliser la consolepour configurer des fonctionnalités telles que le chiffrement côté serveur, associer une file d'attente delettres mortes à votre file d'attente ou définir un déclencheur pour appeler unAWS Lambda.

Rubriques• Présentation de la console Amazon SQS (p. 11)• Création d'une file d'attente Amazon SQS (console) (p. 12)• Modification d'une file d'attente Amazon SQS (console) (p. 13)• Configuration des paramètres de file d'attente (console) (p. 14)• Configuration de la stratégie d'accès (console) (p. 15)• Configuration du chiffrement côté serveur (SSE) pour une file d'attente (console) (p. 16)• Configuration d'une file d'attente de lettres mortes (console) (p. 16)• Configuration des balises de répartition des coûts pour une file d'attente Amazon SQS

(console) (p. 17)• Abonnement d'une file d'attente Amazon SQS à une rubrique Amazon SNS (console) (p. 18)• Configuration d'une file d'attente pour déclencher unAWS LambdaFonction (console) (p. 18)

Présentation de la console Amazon SQSLorsque vous ouvrez la console, choisissezFiles d'attenteDans le volet de navigation pour afficher leFilesd'attente. La .Files d'attentefournit des informations sur toutes vos files d'attente dans la région active.

L'entrée de chaque file d'attente affiche le type de file d'attente et d'autres informations sur la file d'attente.La .TypeVous permet de distinguer les files d'attente standard des files d'attente FIFO (premier entré,premier sorti).

De laFiles d'attente, il existe deux façons d'effectuer des actions sur une file d'attente. Vous pouvez choisirl'option située en regard du nom de la file d'attente, puis l'action que vous souhaitez exécuter sur la filed'attente.

11

Page 18: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurCréation d'une file d'attente

Vous pouvez également choisir le nom de la file d'attente, qui ouvre leDétailspour la file d'attente.La .Détailsinclut les mêmes actions que laFiles d'attente. De plus, vous pouvez choisir l'un des ongletssitués sous leDétailspour afficher les détails et les actions de configuration supplémentaires.

Création d'une file d'attente Amazon SQS (console)Vous pouvez utiliser la console Amazon SQS pour créerfiles d'attente standard (p. 28)andFiles d'attenteFIFO (p. 28). La console fournit des valeurs par défaut pour tous les paramètres, à l'exception du nomde la file d'attente.

Pour créer une file d'attente Amazon SQS (console)

1. Ouvrez la console Amazon SQS à l'adressehttps://console.aws.amazon.com/sqs/.2. Choisissez Create queue (Créer une file d'attente).3. PourType, leStandardtype de file d'attente est défini par défaut. Pour créer une file d'attente FIFO,

choisissezFIFO.Note

Vous ne pouvez pas modifier le type de file d'attente une fois que vous créez la file d'attente.4. Saisissez unNomPour votre file d'attente. Le nom d'une file d'attente FIFO doit se terminer par la

liste.fifosuffixe.5. (Facultatif) La console définit les valeurs par défaut de la file d'attenteParamètres de

configuration (p. 14). UNDERConfiguration, vous pouvez définir de nouvelles valeurs pour lesparamètres suivants :

a. PourDélai de visibilité, entrez la durée et les unités. La plage est de 0 secondes à 12 heures. Lavaleur par défaut est de 30 secondes.

b. PourPériode de conservation des messages, entrez la durée et les unités. La plage est de 1minute à 14 jours. La valeur par défaut est de 4 jours.

12

Page 19: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurModification d'une file d'attente

c. PourRetard de livraison, entrez la durée et les unités. La plage est comprise entre 0 secondes et15 minutes. La valeur par défaut est 0 secondes.

d. PourTaille maximum de message, entrez une valeur. La plage est de 1 Ko à 256 Ko. La valeur pardéfaut est 256 Ko.

e. PourDurée d'attente pour recevoir un message, entrez une valeur. La plage est de 0 à 20secondes. La valeur par défaut est 0 secondes, ce qui définitinterrogation courte (p. 45). Toutevaleur non nulle définit l'interrogation longue.

f. Pour une file d'attente FIFO, choisissezActiver la déduplication basée sur le contenuPour activerla déduplication basée sur le contenu. Le paramètre par défaut est désactivé.

g. (Facultatif) Pour une file d'attente FIFO, pour activer un débit plus élevé pour l'envoi et la réceptionde messages dans la file d'attente, sélectionnezActiver la FIFO à débit élevé.

Le choix de cette option modifie les options associées (Étendue de déduplicationandLimite dedébit FIFO) aux paramètres requis pour activer un débit élevé pour les files d'attente FIFO.Si vous modifiez l'un des paramètres requis pour utiliser FIFO à haut débit, le débit normalest en vigueur pour la file d'attente et la déduplication se produit comme spécifié. Pour plusd'informations, consultez Débit élevé pour les files d'attente FIFO (p. 32) et Quotas liés auxmessages (p. 106).

6. (Facultatif) Définissez unStratégie d'accès. La .stratégie d'accès (p. 144)Définit les comptes, lesutilisateurs et les rôles qui peuvent accéder à la file d'attente. La stratégie d'accès définit également lesactions (telles queSendMessage,ReceiveMessage, ouDeleteMessage) à laquelle les utilisateurspeuvent accéder. La stratégie par défaut permet uniquement au propriétaire de la file d'attented'envoyer et de recevoir des messages.

Pour définir la stratégie d'accès, procédez de l'une des manières suivantes :

• ChoisissezBasePour configurer qui peut envoyer des messages à la file d'attente et qui peutrecevoir des messages de la file d'attente. La console crée la stratégie en fonction de vos choix etaffiche la stratégie d'accès résultante dans le panneau JSON en lecture seule.

• ChoisissezAdvanced (Avancé)pour modifier directement la stratégie d'accès JSON. Cela vouspermet de spécifier un ensemble personnalisé d'actions que chaque principal (compte, utilisateur ourôle) peut effectuer.

7. (Facultatif) Pour configurerChiffrement (p. 16)pour la file d'attente, développezChiffrement.8. (Facultatif) Pour configurer unFile d'attente de lettres mortes (p. 16)pour recevoir des messages

non livrables, développezFile d'attente de lettres mortes.9. (Facultatif) Pour ajouterbalises. (p. 17)à la file d'attente, développezTags (Balises).10. Choisissez Create queue (Créer une file d'attente). Amazon SQS crée la file d'attente et affiche

laDétails.

Amazon SQS propage des informations sur la nouvelle file d'attente dans tout le système. Étant donnéqu'Amazon SQS est un système distribué, vous risquez de rencontrer un léger retard avant que la consolen'affiche la file d'attente sur leFiles d'attente.

Après avoir créé une file d'attente, vous pouvezenvoyer des messages (p. 20)à elle, etrecevoir etsupprimer des messages (p. 22). Vous pouvez égalementModifier (p. 13)tous les paramètres deconfiguration de la file d'attente sauf le type de file d'attente.

Modification d'une file d'attente Amazon SQS(console)

Vous pouvez utiliser la console Amazon SQS pour modifier tous les paramètres de configuration de la filed'attente (à l'exception du type de file d'attente) et ajouter ou supprimer des fonctionnalités de file d'attente.

13

Page 20: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurConfiguration de paramètres de file d'attente

Pour modifier une file d'attente Amazon SQS (console)

1. Ouverture d'Page Files d'attentede la console Amazon SQS.2. Sélectionnez une file d'attente, puis choisissezModifier.3. (Facultatif) SousConfiguration, mettez à jour laParamètres de configuration (p. 14).4. (Facultatif) Pour mettre à jourstratégie d'accès (p. 15), sousStratégie d'accès, modifiez la stratégie

JSON.5. (Facultatif) Pour ajouter, mettre à jour ou supprimerChiffrement (p. 16), développezChiffrement.6. (Facultatif) Pour ajouter, mettre à jour ou supprimer unfile d'attente de lettres mortes (p. 16)(qui

vous permet de recevoir des messages non livrables), développezFile d'attente de lettres mortes.7. (Facultatif) Pour ajouter, mettre à jour ou supprimerbalises. (p. 17)pour la file d'attente,

développezTags (Balises).8. Choisissez Save (Enregistrer).

La console affiche leDétailspour la file d'attente.

Configuration des paramètres de file d'attente(console)

Lorsque vouscreate (p. 12)ouediter (p. 13)Une file d'attente, vous pouvez configurer les paramètressuivants :

• Délai de visibilité— Durée pendant laquelle un message reçu d'une file d'attente (par un consommateur)ne sera pas visible pour les autres consommateurs de messages. Pour de plus amples informations,veuillez consulterDélai de visibilité (p. 50).

Note

L'utilisation de la console pour configurer le délai d'expiration de visibilité configure la valeur dudélai d'attente pour tous les messages de la file d'attente. Pour configurer le délai d'expirationpour un ou plusieurs messages, vous devez utiliser l'un desAWSKits SDK.

• Période de conservation des messages— Durée pendant laquelle Amazon SQS conserve les messagesqui restent dans la file d'attente. Par défaut, la file d'attente conserve les messages pendant quatre jours.Vous pouvez configurer une file d'attente pour conserver les messages jusqu'à 14 jours. Pour de plusamples informations, veuillez consulterPériode de conservation des messages.

• Retard de livraison— Laps de temps pendant lequel Amazon SQS va retarder avant de remettre unmessage ajouté à la file d'attente. Pour de plus amples informations, veuillez consulterRetard delivraison (p. 53).

• Taille maximum du message— Taille maximale du message pour cette file d'attente. Pour de plusamples informations, veuillez consulterTaille maximum du message (p. 71).

• Délai de réception du message— Durée maximale pendant laquelle Amazon SQS attend que lesmessages deviennent disponibles une fois que la file d'attente reçoit une demande de réception. Pourplus d'informations, consultez Interrogation courte et longue d'Amazon SQS (p. 45).

• Activer la déduplication basée sur le contenu— Amazon SQS peut créer automatiquement des ID dedéduplication en fonction du corps du message. Pour plus d'informations, consultez Files d'attenteAmazon SQS FIFO (premier entré, premier sorti) (p. 28).

• Activer la FIFO à débit élevé— Permet d'activer le débit élevé pour les messages dans la file d'attente.Le choix de cette option modifie les options associées (Étendue de déduplicationandLimite de débitFIFO) aux paramètres requis pour activer un débit élevé pour les files d'attente FIFO. Pour plusd'informations, consultez Débit élevé pour les files d'attente FIFO (p. 32) et Quotas liés auxmessages (p. 106).

14

Page 21: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurConfiguration de la stratégie d'accès

Pour configurer les paramètres de file d'attente pour une file d'attente existante (console)

1. Ouvrez la console Amazon SQS à l'adressehttps://console.aws.amazon.com/sqs/.2. Dans le volet de navigation, choisissez Queues (Files d'attente). Choisissez une file d'attente et

choisissezModifier.3. Scroll to theConfigurationSection.4. PourDélai de visibilité, entrez la durée et les unités. La plage est comprise entre 0 secondes et 12

heures. La valeur par défaut est de 30 secondes.5. PourPériode de conservation des messages, entrez la durée et les unités. La plage est comprise entre

1 minute et 14 jours. La valeur par défaut est 4 jours.6. PourRetard de livraison, entrez la durée et les unités. La plage est comprise entre 0 secondes et 15

minutes. La valeur par défaut est 0 secondes.7. PourTaille maximum du message, entrez une valeur. La plage est de 1 Ko à 256 Ko. La valeur par

défaut est 256 Ko.8. Pour une file d'attente standard, entrez une valeur pourDélai de réception du message. La plage est

comprise entre 0 et 20 secondes. La valeur par défaut est 0 secondes, ce qui définitinterrogationcourte (p. 45). Toute valeur non nulle définit l'interrogation longue.

9. Pour une file d'attente FIFO, choisissezActiver la déduplication basée sur le contenupour activer ladéduplication basée sur le contenu. Le paramètre par défaut est désactivé.

10. (Facultatif) Pour une file d'attente FIFO, pour activer un débit plus élevé pour l'envoi et la réception demessages dans la file d'attente, sélectionnezActiver la FIFO à débit élevé.

Le choix de cette option modifie les options associées (Étendue de déduplicationandLimite de débitFIFO) aux paramètres requis pour activer un débit élevé pour les files d'attente FIFO. Si vous modifiezl'un des paramètres requis pour utiliser FIFO à haut débit, le débit normal est en vigueur pour la filed'attente et la déduplication se produit comme spécifié. Pour plus d'informations, consultez Débit élevépour les files d'attente FIFO (p. 32) et Quotas liés aux messages (p. 106).

11. Lorsque vous avez fini de configurer les paramètres de file d'attente, choisissezEnregistrer.

Configuration de la stratégie d'accès (console)Lorsque vousediter (p. 13)une file d'attente, vous pouvez configurer sa stratégie d'accès.

La stratégie d'accès définit les comptes, les utilisateurs et les rôles qui peuvent accéder à la file d'attente.La stratégie d'accès définit également les actions (telles queSendMessage,ReceiveMessage,ouDeleteMessage) à laquelle les utilisateurs peuvent accéder. La stratégie par défaut permet uniquementau propriétaire de la file d'attente d'envoyer et de recevoir des messages.

Pour configurer la stratégie d'accès pour une file d'attente existante (console)

1. Ouvrez la console Amazon SQS à l'adressehttps://console.aws.amazon.com/sqs/.2. Dans le volet de navigation, choisissez Queues (Files d'attente).3. Choisissez une file d'attente et choisissezModifier.4. Faites défiler le menuStratégie d'accèsSection.5. Modifiez les instructions de stratégie d'accès dans la zone de saisie.6. Lorsque vous avez terminé de configurer la stratégie d'accès, sélectionnezEnregistrer.

15

Page 22: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurConfiguration du chiffrement SSE pour une file d'attente

Configuration du chiffrement côté serveur (SSE)pour une file d'attente (console)

Pour protéger les données contenues dans les messages d'une file d'attente, vous pouvez activerle chiffrement côté serveur (SSE) pour une file d'attente. Amazon SQS s'intègre avec leAWS KeyManagement Service(AWS KMS) pour gérerClés principales client(CMK) pour le chiffrement côté serveur(SSE). Pour plus d'informations sur l'utilisation d'SSE, consultezChiffrement au repos (p. 112).

Le CMK que vous affectez à votre file d'attente doit avoir une stratégie de clé qui inclut des autorisationspour toutes les entités autorisées à utiliser la file d'attente. Pour plus d'informations, consultezGestion desclés (p. 115).

Si vous n'êtes pas le propriétaire de la clé CMK ou si vous connectez avec un compte n'ayantpaskms:ListAliasesandkms:DescribeKey, vous ne pouvez pas afficher les informations relatives auCMK sur la console Amazon SQS. Demandez au propriétaire du CMK de vous accorder ces autorisations.Pour de plus amples informations, veuillez consulterGestion des clés (p. 115).

Lorsque vouscreate (p. 12)ouediter (p. 13)une file d'attente, vous pouvez configurer SSE.

Pour configurer SSE pour une file d'attente existante (console)

1. Ouvrez la console Amazon SQS à l'adressehttps://console.aws.amazon.com/sqs/.2. Dans le volet de navigation, choisissez Queues (Files d'attente).3. Choisissez une file d'attente et choisissezModifier.4. Scroll to StoChiffrementSection.5. DansChiffrementSection, choisissezActivépour activer SSE.

La console affiche la cléDescription, leCompte, et leARN DE CLÉ CMKde la clé CMK.6. Spécifiez l'ID CMK de la file d'attente. Pour plus d'informations, consultez Termes clés (p. 113).

a. Cliquez sur l'ongletChoisir un alias CMKoption.b. La clé par défaut est la cléAWSGestion de la clé CMK pour Amazon SQS. Pour utiliser cette clé,

sélectionnez-la dans la listeclé principale clientListe.c. Pour utiliser un CMK personnalisé à partir de votre Compte AWS Choisissez-le dans la listeclé

principale clientListe. Pour obtenir des instructions pour la création de clés CMK personnalisées,consultezCréation de clésdans leAWS Key Management ServiceManuel du développeur.

d. Pour utiliser un CMK personnalisé n'étant pas dans la liste ou un CMK personnalisé à partir d'unautre Compte AWS , choisissezEntrez l'alias CMKet entrez l'Amazon Resource Name (ARN) de laclé CMK.

7. (Facultatif) PourPériode de réutilisation des clés de données, spécifiez une valeur comprise entre1 minute et 24 heures. La valeur par défaut est de 5 minutes. Pour plus d'informations, consultezPrésentation de la période de réutilisation des clés de données (p. 117).

8. Lorsque vous avez terminé la configuration du chiffrement SSE, choisissezEnregistrer.

Configuration d'une file d'attente de lettres mortes(console)

AFile d'attente de lettres mortesest une file d'attente qu'une ou plusieurs files d'attente source peuventutiliser pour les messages qui ne sont pas consommés correctement. Pour plus d'informations, consultezFiles d'attente Amazon SQS (p. 47).

16

Page 23: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurConfiguration des balises pour une file d'attente

Amazon SQSpasCréer automatiquement la file d'attente de lettres mortes. Vous devez d'abord créer la filed'attente avant de l'utiliser en tant que file d'attente de lettres mortes.

La file d'attente de lettres mortes d'une file d'attente FIFO doit également être une file d'attente FIFO. Demême, la file d'attente de lettres mortes d'une file d'attente standard doit également être une file d'attentestandard.

Lorsque vouscreate (p. 12)ouediter (p. 13)Une file d'attente, vous pouvez configurer une file d'attentede lettres mortes.

Configuration d'une file d'attente de lettres mortes pour une file d'attente existante (console)

1. Ouvrez la console Amazon SQS à l'adressehttps://console.aws.amazon.com/sqs/.2. Dans le volet de navigation, choisissez Queues (Files d'attente).3. Choisissez une file d'attente et choisissezModifier.4. Scroll to la sectionFile d'attente de lettres mortes, puis choisissezActivé.5. Choisissez l'Amazon Resource Name (ARN) d'un fichier existantFile d'attente Lettre Morteque vous

souhaitez associer à cette file d'attente source.6. Pour configurer le nombre de fois qu'un message peut être reçu avant d'être envoyés à une file

d'attente de lettres mortes, définissezNombre maximum de reçusÀ une valeur comprise entre 1 et1000.

7. Lorsque vous avez fini de configurer la file d'attente de lettres mortes, sélectionnezEnregistrer.

Après avoir enregistré la file d'attente, la console affiche leDétailsPour votre file d'attente. Dans lapageDétails, la pageFile d'attente de lettres mortesaffiche l'ongletRéçoit maximumandFile d'attenteLettre MorteARN dans le documentFile d'attente de lettres mortes.

Configuration des balises de répartition des coûtspour une file d'attente Amazon SQS (console)

Pour organiser vos files d'attente Amazon SQS et identifier vos files d'attente Amazon SQS, vous pouvez yajouter des balises de répartition des coûts. Pour plus d'informations, consultez Balises de répartition descoûts Amazon SQS (p. 44).

Dans la pageDétailspour une file d'attente, la pageBalisageaffiche les balises de la file d'attente.

Lorsque vouscreate (p. 12)oueditable (p. 13)une file d'attente, vous pouvez configurer des balisespour elle.

Pour configurer des balises pour une file d'attente existante (console)

1. Ouvrez la console Amazon SQS à l'adressehttps://console.aws.amazon.com/sqs/.2. Dans le volet de navigation, choisissez Queues (Files d'attente).3. Choisissez une file d'attente et choisissezModifier.4. Faites défiler jusqu'à laBalisesSection.5. Ajouter, modifier ou supprimer les balises de file d'attente :

a. Pour ajouter une balise, choisissezAjouter une balise, entrez uneKeyandValue, puischoisissezAjouter une balise.

b. Pour mettre à jour une balise, modifiez les valeursKeyandValue.c. Pour supprimer une balise, choisissezSupprimezÀ côté de sa paire clé-valeur.

6. Lorsque vous avez terminé de configurer les balises, choisissezEnregistrer.

17

Page 24: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurAbonnement d'une file d'attente à une rubrique

Abonnement d'une file d'attente Amazon SQS à unerubrique Amazon SNS (console)

Vous pouvez abonner une ou plusieurs files d'attente Amazon SQS à une rubrique Amazon SimpleNotification Service (Amazon SNS). Lorsque vous publiez un message dans une rubrique, AmazonSNS envoie le message à chacune des files d'attente qui y sont abonnées. Amazon SQS gèrel'abonnement et toutes les autorisations nécessaires. Pour de plus amples informations sur Amazon SNS,consultezPrésentation d'Amazon Simple Notification Service ?dans leAmazon Simple Notification Service.

Lorsque vous abonnez une file d'attente Amazon SQS à une rubrique SNS, Amazon SNS utilise leprotocole HTTPS pour transmettre des messages à Amazon SQS. Pour plus d'informations sur l'utilisationd'Amazon SNS avec des files d'attente Amazon SQS chiffrées, consultezConfigurer les autorisations deKMS pour les services AWS (p. 115).

Pour abonner une file d'attente à une rubrique SNS (console)

1. Ouvrez la console Amazon SQS à l'adressehttps://console.aws.amazon.com/sqs/.2. Dans le volet de navigation, choisissez Queues (Files d'attente).3. Dans la liste des files d'attente, choisissez la file d'attente pour vous abonner à la rubrique SNS.4. DeActions, choisissezVous pouvez vous abonner à la rubrique Amazon SNS.5. À partir de laSpécifiez une rubrique Amazon SNS disponible pour cette file d'attente, choisissez la

rubrique SNS de votre file d'attente.

Si la rubrique SNS n'est pas répertoriée dans le menu, choisissezEntrez l'Amazon SNS de la rubriqueARN, puis entrez l'Amazon Resource Name (ARN) de la rubrique.

6. Choisissez Save (Enregistrer).7. Pour vérifier le résultat de l'abonnement, publiez dans la rubrique, puis consultez le message que

celle-ci envoie à la file d'attente. Pour de plus amples informations, veuillez consulterPublication d'unmessage dans une rubrique Amazon SNSdans leAmazon Simple Notification Service.

Si votre file d'attente Amazon SQS et votre rubrique SNS sont dans différents Comptes AWS , lepropriétaire de la rubrique doit d'abord confirmer l'abonnement. Pour de plus amples informations, veuillezconsulterConfirmez votre abonnementdans leAmazon Simple Notification Service.

Pour plus d'informations sur l'abonnement à une rubrique SNS interrégionale, consultezEnvoyer desmessages Amazon SNS à une file d'attente Amazon SQS ouAWS LambdaDans une autre régiondansleAmazon Simple Notification Service

Configuration d'une file d'attente pour déclencherunAWS LambdaFonction (console)

Vous pouvez utiliser unAWS LambdaPour traiter les messages d'une file d'attente Amazon SQS. Lambdainterroge la file d'attente et appelle la fonction Lambda de façon synchrone avec un événement contenantdes messages de file d'attente. Vous pouvez spécifier une autre file d'attente pour agir en tant quefiled'attente de lettres mortespour les messages que votre fonction Lambda ne peut pas traiter.

Une fonction Lambda peut traiter des éléments de plusieurs files d'attente (en utilisant une sourced'événement Lambda pour chaque file d'attente). Vous pouvez utiliser la même file d'attente avec plusieursfonctions Lambda.

18

Page 25: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurPrerequisites

Si vous associez une file d'attente chiffrée à une fonction Lambda mais que Lambda ne recherche pas demessages, ajoutez le paramètrekms:Decryptà votre rôle d'exécution Lambda.

Notez les restrictions suivants :

• Votre file d'attente et la fonction Lambda doivent se trouver dans le mêmeAWSRégion .• Unfile d'attente chiffrée (p. 112)utilisant la clé par défaut (AWSCMK géré pour Amazon SQS) ne peut

pas appeler une fonction Lambda dans un autre Compte AWS .

Pour plus d'informations sur l'implémentation de la fonction Lambda, consultezUtiliserAWS LambdaAvecAmazon SQSdans leAWS LambdaManuel du développeur.

PrerequisitesPour configurer des déclencheurs de fonction Lambda, vous devez remplir les conditions suivantes :

• Si vous utilisez un utilisateur IAM, votre rôle Amazon SQS doit inclure les autorisations suivantes :• lambda:CreateEventSourceMapping

• lambda:ListEventSourceMappings

• lambda:ListFunctions

• Le rôle d'exécution Lambda doit inclure les autorisations suivantes :• sqs:DeleteMessage

• sqs:GetQueueAttributes

• sqs:ReceiveMessage

• Si vous associez une file d'attente chiffrée à une fonction Lambda, ajoutez leparamètrekms:Decryptsur le rôle d'exécution Lambda.

Pour plus d'informations, consultez Présentation de la gestion de l'accès dans Amazon SQS (p. 122).

Pour configurer une file d'attente pour déclencher une fonction Lambda (console)

1. Ouvrez la console Amazon SQS à l'adressehttps://console.aws.amazon.com/sqs/.2. Dans le volet de navigation, choisissez Queues (Files d'attente).3. Dans la pageFiles d'attente, choisissez la file d'attente à configurer.4. Sur la page de la file d'attente, choisissez l'optionDéclencheur Lambda.5. Dans la pageDéclencheur Lambda, choisissez un déclencheur Lambda.

Si la liste n'inclut pas le déclencheur Lambda dont vous avez besoin, choisissezConfiguration dedéclencheur de fonction Lambda. Entrez l'Amazon Resource Name (ARN) de la fonction Lambda ouchoisissez une ressource existante. Ensuite, choisissez Enregistrer.

6. Choisissez Save (Enregistrer). La console enregistre la configuration et affiche leDétailspour la filed'attente.

Dans la pageDétails, la pageDéclencheur Lambdaaffiche la fonction Lambda et son état. L'associationde la fonction Lambda à votre file d'attente peut prendre environ 1 minute.

7. Pour vérifier les résultats de la configuration,Envoyer un message à votre file d'attente (p. 20), puisaffichez la fonction Lambda déclenchée dans la console Lambda.

19

Page 26: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurEnvoi de messages

Gestion des files d'attente AmazonSQS (console)

Après avoir créé et configuré votre file d'attente, vous pouvez utiliser la console Amazon SQS pour envoyerdes messages à la file d'attente et les récupérer à partir de la file d'attente.

Rubriques• Envoi de messages à une file d'attente (console) (p. 20)• Envoi d'un message avec des attributs (console) (p. 21)• Réception et suppression de messages (console) (p. 22)• Purge des messages d'une file d'attente Amazon SQS (console) (p. 22)• Suppression d'une file d'attente Amazon SQS (p. 23)• Confirmer qu'une file d'attente est vide (p. 23)

Envoi de messages à une file d'attente (console)Après avoir créé votre file d'attente, vous pouvez lui envoyer des messages.

Pour envoyer un message (console)

1. Ouvrez la console Amazon SQS à l'adressehttps://console.aws.amazon.com/sqs/.2. Dans le volet de navigation, choisissez Queues (Files d'attente).3. Dans la pageFiles d'attente, choisissez une file d'attente.4. DeActions, choisissezEnvoyer et recevoir des messages.

La console affiche leEnvoyer et recevoir des messages.5. DansCorps du message, entrez le texte du message.6. Pour une file d'attente FIFO (premier entré, premier sorti), entrez unID de groupe de messages. Pour

plus d'informations, consultez Logique de remise FIFO (p. 30).7. (Facultatif) Pour une file d'attente FIFO, vous pouvez entrer unID de déduplication du message. Si

vous avez activé la déduplication basée sur le contenu pour la file d'attente, l'ID de déduplication dumessage n'est pas requis. Pour plus d'informations, consultez Logique de remise FIFO (p. 30).

8. (Facultatif) Pour une file d'attente standard, vous pouvez entrer une valeur pourRetard de livraisonetchoisissez les unités. Par exemple, entrez60et choisissezsecondes. Les files d'attente FIFO neprennent pas en charge les minuteries sur les messages individuels. Pour plus d'informations,consultez Timisateurs de message Amazon SQS (p. 57).

9. Cliquez sur Send Message (Envoyer un message).

20

Page 27: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurAttributs de message

Lorsque votre message est envoyé, la console affiche un message de réussite. ChoisissezView details(Afficher les détails)pour afficher des informations sur le message envoyé.

Envoi d'un message avec des attributs (console)Pour les files d'attente standard et FIFO, vous pouvez inclure des métadonnées structurées (telles que deshorodatages, des données géospatiales, des signatures et des identifiants) avec des messages. Pour plusd'informations, consultez Attributs de message Amazon SQS (p. 40).

Pour envoyer un message avec des attributs à une file d'attente (console)

1. Ouvrez la console Amazon SQS à l'adressehttps://console.aws.amazon.com/sqs/.2. Dans le volet de navigation, choisissez Queues (Files d'attente).3. Dans la pageFiles d'attente, choisissez une file d'attente.4. DeActions, choisissezEnvoyer et recevoir des messages.5. Entrez les paramètres d'attribut du message.

a. Dans la zone de texte Nom, entrez un nom unique composé de 256 caractères maximum.b. Pour le type d'attribut, choisissezChaîne,Numéro, ouBinaire.c. (Facultatif) Entrez un type de données personnalisé. Par exemple, vous pouvez ajouter

desbyte,int, oufloaten tant que types de données personnalisés pourNuméro.d. Dans la zone de texte Valeur, entrez la valeur d'attribut du message.

6. Pour ajouter un autre attribut de message, choisissezAdd Attributes.

7. Vous pouvez modifier les valeurs d'attribut à tout moment avant d'envoyer le message.8. Pour supprimer un attribut, choisissez.Supprimez. Pour supprimer le premier attribut, fermez.Attributs

de message.9. Lorsque vous avez fini d'ajouter des attributs au message, choisissez.Envoyer un message. Votre

message est envoyé et la console affiche un message de réussite. Pour afficher des informationssur les attributs de message du message envoyé, choisissezView details (Afficher les détails).ChoisissezTerminéPour fermer l'Détails du messageBoîte de dialogue.

21

Page 28: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurRéception et suppression d'un message

Réception et suppression de messages (console)Après avoir envoyé des messages à une file d'attente, vous pouvez les recevoir et les supprimer. Lorsquevous demandez à récupérer des messages d'une file d'attente, vous ne pouvez pas préciser les messagesque vous voulez récupérer. Au lieu de cela, vous spécifiez le nombre maximal de messages (jusqu'à 10)que vous souhaitez récupérer.

Note

Amazon SQS étant un système distribué, une file d'attente contenant très peu de messages peutafficher une réponse vide à une demande de réception. Dans ce cas, réexécutez la demande pourobtenir votre message. En fonction des besoins de votre application, vous pouvez avoir besoind'utiliserinterrogation courte ou longue (p. 45)pour recevoir des messages.

Amazon SQS ne supprime pas automatiquement le message après l'avoir récupéré pour vous, si vous nerecevez pas le message (si les consommateurs échouent ou si vous perdez la connexion). Pour supprimerun message, vous devez envoyer une demande distincte qui permet de confirmer que vous avez récupéréet traité le message. Notez que vous devez recevoir un message avant de pouvoir le supprimer.

Pour recevoir et supprimer un message (console)

1. Ouvrez la console Amazon SQS à l'adressehttps://console.aws.amazon.com/sqs/.2. Dans le volet de navigation, choisissez Queues (Files d'attente).3. Dans la pageFiles d'attente, choisissez une file d'attente.4. DeActions, choisissezEnvoyer et recevoir des messages.

La console affiche leEnvoyer et recevoir des messages.5. ChoisissezInterrogation de messages.

Amazon SQS commence à interroger les messages dans la file d'attente. La barre de progressionsituée sur le côté droit de la boîte de dialogueRéception de messagesaffiche la durée del'interrogation.

Dans laMessagesaffiche une liste des messages reçus. Pour chaque message, la liste affiche l'ID dumessage, la date d'envoi, la taille et le nombre de réceptions.

6. Pour supprimer des messages, choisissez les messages que vous souhaitez supprimer etchoisissezSupprimer.

7. DansSupprimer des messages, choisissezSupprimer.

Purge des messages d'une file d'attente AmazonSQS (console)

Si vous ne voulez pas supprimer une file d'attente Amazon SQS, mais que vous devez supprimer tous lesmessages de celle-ci, purger la file d'attente. Le processus de suppression des messages peut prendre

22

Page 29: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurSuppression d'une file d'attente

jusqu'à 60 secondes. Nous vous recommandons d'attendre 60 secondes, quelle que soit la taille de votrefile d'attente.

Important

Lorsque vous purgez une file d'attente, vous ne pouvez récupérer aucun des messagessupprimés.

Pour purger une file d'attente (console)

1. Ouvrez la console Amazon SQS à l'adressehttps://console.aws.amazon.com/sqs/.2. Dans le volet de navigation, choisissez Queues (Files d'attente).3. Dans la pageFiles d'attente, choisissez la file d'attente à purger.4. ChoisissezPURGE.5. DansPURGE file d'attente, confirmez la purge en entrantpurgeet en choisissantPURGE.

Tous les messages sont purgés de la file d'attente. La console affiche une bannière de confirmation.

Suppression d'une file d'attente Amazon SQSSi vous n'utilisez plus une file d'attente Amazon SQS et que vous ne prévoyez pas l'utiliser dans un procheavenir, nous vous recommandons de la supprimer.

Tip

Si vous souhaitez vérifier qu'une file d'attente est vide avant de la supprimer, consultezConfirmerqu'une file d'attente est vide (p. 23).

Vous pouvez supprimer une file d'attente, même lorsqu'elle n'est pas vide. Pour supprimer les messagesd'une file d'attente, mais pas la file d'attente elle-même,Purge de la file d'attente (p. 22).

Pour supprimer une file d'attente (console)

1. Ouvrez la console Amazon SQS à l'adressehttps://console.aws.amazon.com/sqs/.2. Dans le volet de navigation, choisissez Queues (Files d'attente).3. Dans la pageFiles d'attente, choisissez la file d'attente à supprimer.4. Sélectionnez Delete (Supprimer).5. DansSuppression, confirmez la suppression en saisissantdelete.6. Sélectionnez Delete (Supprimer).

Pour supprimer une file d'attente (AWS CLI AWSAPI)

Vous pouvez utiliser l'une des commandes suivantes pour supprimer une file d'attente :

• AWS CLI: aws sqs delete-queue• API AWS : DeleteQueue

Confirmer qu'une file d'attente est videDans la plupart des cas, vous pouvez utiliserinterrogation longue (p. 46)Pour déterminer si une filed'attente est vide. Dans de rares cas, vous pouvez recevoir des réponses vides même lorsqu'une filed'attente contient toujours des messages, surtout si vous avez spécifié une valeur faible pourDurée

23

Page 30: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurConfirmer qu'une file d'attente est vide

d'attente pour réception des messagesLorsque vous avez créé la file d'attente. Cette section expliquecomment confirmer qu'une file d'attente est vide.

Pour confirmer qu'une file d'attente est vide (console)

1. Empêchez tous les producteurs d'envoyer des messages.2. Ouvrez la console Amazon SQS à l'adressehttps://console.aws.amazon.com/sqs/.3. Dans le volet de navigation, choisissez Queues (Files d'attente).4. Dans la pageFiles d'attente, choisissez une file d'attente.5. Sélectionnez l'onglet Surveillance.6. En haut à droite des tableaux de bord Surveillance, sélectionnez la flèche vers le bas en regard du

symbole Actualiser. Dans le menu déroulant, choisissezActualisation automatique. Quitter laIntervalled'actualisationà1 minute.

7. Observez les tableaux de bord suivants :

• Nombre approximatif de messages retardés• Nombre approximatif de messages non visibles• Nombre approximatif de messages visibles

Quand tous les montrent0Pendant plusieurs minutes, la file d'attente est vide.

Pour confirmer qu'une file d'attente est vide (AWS CLI,AWSAPI)

1. Empêchez tous les producteurs d'envoyer des messages.2. Exécutez à plusieurs reprises l'une des commandes suivantes :

• AWS CLI: get-queue-attributes• API AWS : GetQueueAttributes

3. Observez les métriques pour les attributs suivants :

• ApproximateNumberOfMessagesDelayed

• ApproximateNumberOfMessagesNotVisible

• ApproximateNumberOfMessagesVisible

Quand ils sont tous0Pendant plusieurs minutes, la file d'attente est vide.

Si vous comptez sur les mesures Amazon CloudWatch, assurez-vous de voir plusieurs points de donnéeszéro consécutifs avant de considérer cette file d'attente vide. Pour de plus amples informations sur lesmétriques CloudWatch, veuillez consulterMétriques CloudWatch disponibles pour Amazon SQS (p. 158).

24

Page 31: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurArchitecture basique

Fonctionnement Amazon SQSCette section décrit les types de file d'attente Amazon SQS et leurs propriétés de base. Elle décritégalement les identifiants des files d'attente et des messages, ainsi que différents flux de travail de gestiondes files d'attente et des messages.

Rubriques• Architecture Amazon SQS (p. 25)• Files d'attente Amazon SQS (p. 28)• Files d'attente Amazon SQS FIFO (premier entré, premier sorti) (p. 28)• Identifiants de files d'attente et de messages Amazon SQS (p. 38)• Métadonnées de message (p. 40)• Ressources requises pour traiter les messages Amazon SQS (p. 43)• Répertorier la pagination (p. 44)• Balises de répartition des coûts Amazon SQS (p. 44)• Interrogation courte et longue d'Amazon SQS (p. 45)• Files d'attente Amazon SQS (p. 47)• Délai de visibilité Amazon SQS (p. 50)• Files d'attente Amazon SQS (p. 53)• Files d'attente temporaires Amazon SQS (p. 53)• Timisateurs de message Amazon SQS (p. 57)

Architecture Amazon SQS

Cette section décrit les composants d'un système de messagerie distribué et explique le cycle de vie d'unmessage Amazon SQS.

Files d'attente distribuéesUn système de messagerie distribué comprend trois éléments principaux : les composants de votresystème distribué, votre file d'attente (distribuée sur des serveurs Amazon SQS) et les messages de la filed'attente.

Dans le scénario suivant, votre système a plusieursProducteurs(composants qui envoient des messagesà la file d'attente) etConsommateurs(composants qui reçoivent des messages de la file d'attente). La filed'attente (qui contient les messages A à E) stocke les messages de manière redondante sur plusieursserveurs Amazon SQS.

25

Page 32: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurCycle de vie des messages

Cycle de vie des messagesLe scénario suivant décrit le cycle de vie d'un message Amazon SQS dans une file d'attente, de sa créationà sa suppression.

26

Page 33: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurCycle de vie des messages

Un producteur (composant 1) envoie un message A à une file d'attente, et le message est distribué defaçon redondante entre les serveurs Amazon SQS.

Lorsqu'un consommateur (composant 2) est prêt à traiter des messages, il consomme les messagesdans la file d'attente et le message A est renvoyé. Pendant son traitement, le message A reste dans lafile d'attente et n'est pas renvoyé aux demandes de réception suivantes pendant la durée du délai devisibilité (p. 50).

Le consommateur (composant 2) supprime le message A de la file d'attente afin d'éviter que le messagene soit de nouveau reçu et traité à l'expiration du délai de visibilité.

Note

Amazon SQS supprime automatiquement les messages qui ont été dans une file d'attente pendantune durée supérieure à la période maximale de conservation des messages. La période deconservation des messages par défaut est de 4 jours. Cependant, vous pouvez configurer lapériode de rétention des messages sur une valeur allant de 60 secondes à 1 209 600 secondes(14 jours) avec SetQueueAttributes

27

Page 34: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurFiles d'attente standard

Files d'attente Amazon SQSOffres Amazon SQSStandardcomme type de file d'attente par défaut. Les files d'attente standard prennenten charge un nombre presque illimité d'appels d'API par seconde, par action d'API (SendMessage,ReceiveMessage ou DeleteMessage). Les files d'attente standard prennent en charge la remise aumoins une fois des messages. Cependant, il peut arriver (en raison de l'architecture hautement distribuéequi permet un débit presque illimité) que plusieurs copies d'un message soient diffusées dans le désordre.Les files d'attente standard classent au mieux les messages, ce qui garantit qu'ils sont généralementdiffusés dans l'ordre de leur envoi.

Pour plus d'informations sur la façon de créer et de configurer des files d'attente à l'aide de la consoleAmazon SQS, consultezCréation d'une file d'attente Amazon SQS (console) (p. 12). Pour obtenir desexemples Java, voirExemples de SDK Java Amazon SQS (p. 66).

Vous pouvez utiliser des files d'attente standard dans de nombreux scénarios, tant que votre applicationpeut traiter des messages qui arrivent plusieurs fois et dans le désordre, par exemple :

• Dédoublez les demandes utilisateur en direct et le travail intensif en arrière-plan— Permet auxutilisateurs de charger un support pendant le redimensionnement ou le codage.

• Allouer des tâches à plusieurs nœuds de travail— Traite un grand nombre de demandes de validationsde cartes de crédit.

• Messages Batch pour traitement ultérieur— Planifie l'ajout des entrées multiples dans une base dedonnées.

Pour connaître les quotas liés aux files d'attente standard, consultezQuotas liés aux filesd'attente (p. 105).

Pour connaître les bonnes pratiques d'utilisation des files d'attente standard, consultezRecommandationspour les files d'attente Amazon SQS et FIFO (p. 59).

Ordre des messagesUne file d'attente standard permet de conserver au mieux l'ordre des messages, mais plusieurs copiesd'un message peuvent être remises dans le désordre. Si votre système exige que cette commandesoit préservée, nous vous recommandons d'utiliser unFile d'attente FIFO (premier entré, premiersorti) (p. 28)ou en ajoutant des informations de séquencement dans chaque message afin que vouspuissiez réorganiser les messages lors de leur réception.

Diffusion au moins une foisAmazon SQS stocke des copies de vos messages sur plusieurs serveurs pour une redondance et unehaute disponibilité. Dans de rares occasions, l'un des serveurs qui stockent la copie d'un message peutêtre indisponible lors de la réception ou de la suppression d'un message.

Dans ce cas, la copie du message n'est pas supprimée sur le serveur indisponible, et il est possible qu'ilsoit à nouveau copié lorsque vous recevez des messages. Concevez les applications afin qu'elles soientidempotentes (c.-à-d. qu'elles ne doivent pas être affectées si le même message est traité plus d'une fois).

Files d'attente Amazon SQS FIFO (premier entré,premier sorti)

Les files d'attente FIFO ont toutes les fonctionnalités dufile d'attente standard (p. 28).

28

Page 35: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurOrdre des messages

FIFO (premier entré, premier sorti)Les files d'attente sont conçues pour améliorer l'échange de messagesentre applications lorsque l'ordre des opérations et des événements est essentiel ou lorsque les doublonsne peuvent être tolérés. Voici des exemples de situations dans lesquelles vous pouvez utiliser les filesd'attente FIFO :

• Pour que les commandes entrées par l'utilisateur soient exécutées dans l'ordre approprié.• Afficher le prix correct du produit en envoyant les modifications de prix dans le bon ordre.• Empêcher un étudiant de s'inscrire à un cours avant d'avoir créé un compte.

Les files d'attente FIFO fournissent également un traitement en une seule fois, mais pour un nombrelimité de transactions par seconde (TPS). Pour obtenir des informations sur les quotas de débit, veuillezconsulterQuotas liés aux messages (p. 106).

Note

Le nom d'une file d'attente FIFO doit se terminer par le.fifosuffixe. Le suffixe comptedans le quota de nom de file d'attente de 80 caractères. Pour déterminer si une file d'attenteestFIFO (p. 28), vous pouvez vérifier si le nom de la file d'attente se termine par le suffixe.

Les files d'attente FIFO Amazon SQS sont disponibles dans toutes les régions où Amazon SQS estdisponible.

Pour plus d'informations sur la façon de créer et de configurer des files d'attente à l'aide de la consoleAmazon SQS, consultezCréation d'une file d'attente Amazon SQS (console) (p. 12). Pour obtenir desexemples Java, voirExemples de SDK Java Amazon SQS (p. 66).

Pour connaître les bonnes pratiques d'utilisation des files d'attente FIFO, consultezRecommandationssupplémentaires pour les files d'attente FIFO Amazon SQS (p. 63)andRecommandations pour les filesd'attente Amazon SQS et FIFO (p. 59).

Pour plus d'informations sur la compatibilité des clients et des services avec les files d'attente FIFO,consultezCompatibility (p. 38).

Rubriques• Ordre des messages (p. 29)• Termes clés (p. 30)• Logique de remise FIFO (p. 30)• Traitement en une seule fois (p. 31)• Passage d'une file d'attente standard à une file d'attente FIFO (p. 32)• Débit élevé pour les files d'attente FIFO (p. 32)• Compatibility (p. 38)

Ordre des messagesLa file d'attente FIFO améliore et complète lefile d'attente standard (p. 28). Les fonctionsles plus importantes de ce type de file d'attente sontLivraison FIFO (premier entré, premiersorti) (p. 30)andTraitement en une seule fois (p. 31) :

• L'ordre dans lequel les messages sont envoyés et reçus est strictement préservé et un message estremis une seule fois et reste disponible jusqu'à ce qu'un utilisateur le traite et le supprime.

• Aucun doublon n'est ajouté à la file d'attente.

29

Page 36: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurTermes clés

En outre, les files d'attente FIFO prennent en chargeGroupes de messagespermettant à plusieurs groupesde messages classés au sein d'une seule file d'attente. Il n'y a pas de quota pour le nombre de groupes demessages dans une file d'attente FIFO.

Termes clésLes termes clés suivants peuvent vous aider à mieux comprendre les fonctionnalités des files d'attenteFIFO. Pour plus d'informations, consultez le .Référence d'API Amazon Simple Queue Service.

ID de déduplication du message

Jeton utilisé pour la déduplication des messages envoyés. Si un message avec un ID de déduplicationde message particulier est envoyé avec succès, tous les messages envoyés avec le même ID dedéduplication de message sont acceptés avec succès, mais ne sont pas remis pendant l'intervalle dedéduplication de 5 minutes.

Note

La déduplication des messages s'applique à une file d'attente entière et non à des groupes demessages individuels.Amazon SQS continue de suivre l'ID de déduplication du message même après la réceptionet la suppression du message.

ID de groupe de messages

Balise spécifiant qu'un message appartient à un groupe de messages spécifique. Les messagesappartenant au même groupe de messages sont toujours traités un par un, dans un ordre strictpar rapport au groupe de messages (toutefois, les messages appartenant à différents groupes demessages peuvent être traités en panne).

ID de tentative de demande de réception

Le jeton utilisé pour la déduplication deReceiveMessageAppels.Numéro de séquence

Le grand nombre non consécutif qu'Amazon SQS attribue à chaque message.

Logique de remise FIFOLes concepts suivants peuvent vous aider à mieux comprendre l'envoi et la réception de messages.

Envoi de messages

Si plusieurs messages sont envoyés à la suite vers une file d'attente FIFO, chacun avec un ID dedéduplication du message différent, Amazon SQS stocke les messages et confirme la transmission.Puis, chaque message peut être reçu et traité dans l'ordre exact dans lequel les messages ont ététransmis.

Dans les files d'attente FIFO, les messages sont classés selon l'ID de groupe de messages. Siplusieurs hôtes (ou threads différents sur le même hôte) envoient des messages avec le même ID degroupe de messages à une file d'attente FIFO, Amazon SQS stocke les messages dans l'ordre danslequel ils arrivent pour le traitement. Pour vous assurer qu'Amazon SQS conserve l'ordre d'envoi et deréception des messages, chaque producteur doit utiliser un ID de groupe de messages unique pourenvoyer tous ses messages.

La logique de file d'attente FIFO s'applique uniquement par ID de groupe de messages. ChaqueID de groupe de messages représente un groupe de message classés différent au sein d'une filed'attente Amazon SQS. Pour chaque ID de groupe de messages, tous les messages sont envoyés

30

Page 37: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurTraitement en une seule fois

et reçus en suivant rigoureusement l'ordre établi. Cependant, les messages aux ID de groupe demessages différents pourront être envoyés et reçus dans le désordre. Vous devez associer un ID degroupe de messages à un message. Si vous ne spécifiez pas d'ID de groupe de messages, l'actionéchoue. Si vous avez besoin d'un seul groupe de messages classés, indiquez le même ID de groupede messages pour les messages envoyés à la file d'attente FIFO.

Réception de messages

Vous ne pouvez pas demander à recevoir des messages avec un ID de groupe de messagesspécifique.

Lorsque vous recevez des messages d'une file d'attente FIFO avec plusieurs ID de groupe demessages, Amazon SQS tente d'abord de renvoyer autant de messages avec le même ID de groupede messages que possible. Cela permet aux autres utilisateurs de traiter les messages avec un ID degroupe de messages différent.

Note

Il est possible de recevoir jusqu'à 10 messages lors d'un seul appel en utilisant le paramètrede demande MaxNumberOfMessages de l'action ReceiveMessage. Ces messagesconservent leur ordre FIFO et peuvent avoir le même ID de groupe de messages. Parconséquent, s'il y a moins de 10 messages disponibles avec le même ID de groupe demessages, vous pouvez recevoir des messages provenant d'un autre ID de groupe dans celot de 10 messages, mais toujours dans l'ordre FIFO.

Multiples nouvelles tentatives

Les files d'attente FIFO permettent au producteur ou au consommateur de tenter plusieurs tentatives :• Si le producteur détecte une défaillanceSendMessage, il peut réessayer l'envoi autant de fois que

nécessaire, en utilisant le même ID de déduplication de message. En supposant que le producteurreçoive au moins un accusé de réception avant l'expiration de l'intervalle de déduplication, plusieurstentatives n'affectent ni l'ordre des messages ni n'introduisent des doublons.

• Si le consommateur détecte un échecReceiveMessage, il peut réessayer autant de fois quenécessaire, en utilisant le même ID de tentative de demande de réception. En supposant que leconsommateur reçoive au moins un accusé de réception avant l'expiration du délai d'expiration de lavisibilité, plusieurs tentatives n'affectent pas l'ordre des messages.

• Lorsque vous recevez un message avec un ID de groupe de messages, aucun autre message pourle même ID de groupe de messages n'est renvoyé, sauf si vous supprimez le message ou si celui-cidevient visible.

Traitement en une seule foisContrairement aux files d'attente standard, les files d'attente FIFO n'introduisent pas de messages endouble. Les files d'attente FIFO vous aident à éviter d'envoyer des doublons à une file d'attente. Si vousréessayez leSendMessagedans un délai de déduplication de 5 minutes, Amazon SQS n'introduit pas dedoublons dans la file d'attente.

Pour configurer une déduplication, vous devez effectuer l'une des actions suivantes :

• Activer la déduplication basée sur le contenu. reçoit l'ordre d'Amazon SQS d'utiliser unhachage SHA-256 pour générer l'ID de déduplication du message en utilisant le corps decelui-ci, mais pas ses attributs. Pour plus d'informations, consultez la documentation surleCreateQueue,GetQueueAttributes, etSetQueueAttributesAction dans le documentRéférenced'API Amazon Simple Queue Service.

• Fournir explicitement l'ID de déduplication du message (ou afficher le numéro deséquence) pour le message. Pour plus d'informations, consultez la documentation surleSendMessage,SendMessageBatch, etReceiveMessageAction dans le documentRéférence d'APIAmazon Simple Queue Service.

31

Page 38: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurPassage d'une file d'attente

standard à une file d'attente FIFO

Passage d'une file d'attente standard à une filed'attente FIFOSi l'une de vos applications utilise des files d'attente standard et que vous souhaitez tirer parti des fonctionsdu classement ou du traitement unique des files d'attente FIFO, vous devez configurer la file d'attente etl'application correctement.

Note

Vous ne pouvez pas convertir une file d'attente standard existante en une file d'attente FIFO.Pour ce faire, vous devez créer une file d'attente FIFO pour votre application ou supprimer la filed'attente standard et la recréer en tant que file d'attente FIFO.

Pour vous assurer que votre application fonctionne correctement avec une file d'attente FIFO, utilisez laliste de contrôle suivante :

• Si vous utilisezlot (p. 174), les files d'attente FIFO prennent en charge jusqu'à 3 000 messages parseconde, par méthode d'API (SendMessageBatch,ReceiveMessage, ouDeleteMessageBatch).Les 3 000 messages par seconde représentent 300 appels d'API, chacun avec un lot de 10 messages.Pour demander une augmentation de quota, envoyez une demande de support. Sans traitement par lots,les files d'attente FIFO prennent en charge jusqu'à 300 appels d'API par seconde, par méthode d'API(SendMessage, ReceiveMessage ou DeleteMessage).

• Les files d'attente FIFO ne prennent pas en charge les retards par message, uniquement les retardspar file d'attente. Si l'application définit la même valeur du paramètre DelaySeconds sur chaquemessage, vous devez la modifier pour supprimer le retard par message et définir plutôt le paramètreDelaySeconds sur l'ensemble de la file d'attente.

• Chaque message envoyé à une file d'attente FIFO nécessite un ID de groupe de messages. Si vousn'avez pas besoin de plusieurs groupes de messages classés, spécifiez le même ID de groupe demessages pour tous les messages.

• Avant d'envoyer des messages à une file d'attente FIFO, confirmez ce qui suit :• Si l'application peut envoyer des messages avec des corps identiques, vous pouvez la modifier pour

fournir un ID de déduplication du message unique pour chaque message envoyé.• Si l'application envoie des messages avec un corps unique, vous pouvez activer la déduplication

basée sur le contenu.• Vous n'avez pas besoin d'effectuer de modifications de code pour votre consommateur. Toutefois,

si le traitement des messages prend beaucoup de temps et que le délai de visibilité est défini surune valeur élevée, vous devriez ajouter un ID de tentative de demande de réception à chaque actionReceiveMessage. Cela vous permet de recommencer les tentatives de réception en cas de défaillancede la mise en réseau et empêche les files d'attente de s'interrompre en raison d'un échec des tentativesde réception.

Pour plus d'informations, consultez le . Référence d'API Amazon Simple Queue Service.

Débit élevé pour les files d'attente FIFODébit élevé pourFiles d'attente FIFO (p. 28)prend en charge un nombre plus élevé de requêtes par API,par seconde. Pour augmenter le nombre de demandes à haut débit pour les files d'attente FIFO, vouspouvez augmenter le nombre de groupes de messages que vous utilisez. Chaque groupe de messagesprend en charge 300 demandes par seconde. Pour plus d'informations sur les quotas par file d'attente àhaut débit pour les quotas FIFO, consultezQuotas liés aux messages (p. 106)andPartitions et distributionde données pour un débit élevé pour les files d'attente SQS FIFO (p. 33).

Vous pouvez activer un débit élevé pour toute file d'attente FIFO nouvelle ou existante. Cette fonctionnalitécomprend trois nouvelles options lorsque vous créez et modifiez des files d'attente FIFO :

32

Page 39: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurDébit élevé pour les files d'attente FIFO

• Activer le débit élevé— Permet un débit plus élevé pour les messages de la file d'attente FIFO actuelle.• Portée de la déduplication— Spécifie si la déduplication se produit au niveau de la file d'attente ou du

groupe de messages.• Limite de débit FIFO— Spécifie si le quota de débit sur les messages de la file d'attente FIFO est défini

au niveau de la file d'attente ou du groupe de messages.

Pour activer un débit élevé pour une file d'attente FIFO (console)

1. Démarrercreating (p. 12)ouModification (p. 13)une file d'attente FIFO.2. Lorsque vous spécifiez des options pour la file d'attente, choisissezActiver le débit élevé.

L'activation d'un débit élevé pour les files d'attente FIFO définit les options associées comme suit :

• Portée de la déduplicationa la valeurGroupe de messages, le paramètre requis pour utiliser un débitélevé pour les files d'attente FIFO.

• Limite de débit FIFOa la valeurID de groupe de messages, le paramètre requis pour utiliser un débitélevé pour les files d'attente FIFO.

Si vous modifiez l'un des paramètres requis pour utiliser un débit élevé pour les files d'attente FIFO, ledébit normal est en vigueur pour la file d'attente et la déduplication se produit comme spécifié.

3. Continuez à spécifier toutes les options pour la file d'attente. Lorsque vous avez terminé,choisissezCréation de la fileouEnregistrer.

Après avoir créé ou modifié la file d'attente FIFO, vous pouvezenvoyer des messages (p. 20)à elleetrecevoir et supprimer des messages (p. 22), le tout à un TPS plus élevé.

Partitions et distribution de données pour un débit élevé pour lesfiles d'attente SQS FIFOAmazon SQS stocke les données de file d'attente FIFO dans les partitions. Apartitionest une allocation destockage pour une file d'attente qui est automatiquement répliquée sur plusieurs zones de disponibilité ausein d'unAWSRégion . Vous ne gérez pas les partitions. Au lieu de cela, Amazon SQS gère la gestion despartitions.

Pour les files d'attente FIFO, Amazon SQS modifie le nombre de partitions dans une file d'attente dans lessituations suivantes :

• Si le taux de demande actuel approche ou dépasse ce que les partitions existantes peuvent prendreen charge, des partitions supplémentaires sont allouées jusqu'à ce que la file d'attente atteignele quota régional. Pour obtenir des informations sur les quotas, veuillez consulterQuotas liés auxmessages (p. 106).

• Si les partitions actuelles ont une faible utilisation, le nombre de partitions peut être réduit.

La gestion de la partition s'effectue automatiquement à l'arrière-plan et est transparente pour vosapplications. Votre file d'attente et vos messages sont disponibles à tout moment.

Distribution de données par ID de groupe de messagesPour ajouter un message à une file d'attente FIFO, Amazon SQS utilise la valeur de l'ID de groupe demessages de chaque message comme entrée dans une fonction de hachage interne. La valeur de sortiede la fonction de hachage détermine quelle partition stocke le message.

Le schéma suivant illustre une file d'attente couvrant plusieurs partitions. L'ID du groupe de messagesde la file d'attente est basé sur le numéro d'article. Amazon SQS utilise sa fonction de hachage pour

33

Page 40: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurDébit élevé pour les files d'attente FIFO

déterminer où stocker un nouvel élément ; dans le cas présent, il est basé sur la valeur de hachage dela chaîneitem0. Notez que les éléments sont stockés dans le même ordre dans lequel ils sont ajoutés àla file d'attente. L'emplacement de chaque élément est déterminé par la valeur de hachage de son ID degroupe de messages.

34

Page 41: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurDébit élevé pour les files d'attente FIFO

35

Page 42: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurDébit élevé pour les files d'attente FIFO

Note

Amazon SQS est optimisé pour une distribution uniforme des éléments entre les partitions d'unefile d'attente FIFO, quel que soit le nombre de partitions.AWSrecommande d'utiliser des ID degroupe de messages qui peuvent avoir un grand nombre de valeurs distinctes.

Optimiser l'utilisation des partitions

Chaque partition prend en charge jusqu'à 3 000 messages par seconde avec traitement par lot, ou jusqu'à300 messages par seconde pour les opérations d'envoi, de réception et de suppression.

Lors de l'utilisation d'API par lots, chaque message est acheminé en fonction du processus décritdansDistribution de données par ID de groupe de messages (p. 33). Les messages acheminés vers lamême partition sont regroupés et traités dans une seule transaction.

Pour optimiser l'utilisation des partitions,AWSrecommande de classer les messages avec les mêmes ID degroupe de messages lorsque cela est possible.

Dans l'exemple suivant, un lot de messages avec différents ID de groupe de messages est envoyé. Le lotest divisé en trois groupes, chacun étant pris en compte dans le quota de la partition.

36

Page 43: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurDébit élevé pour les files d'attente FIFO

37

Page 44: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurCompatibility

Note

Amazon SQS garantit uniquement que les messages avec le même ID de groupe de messagessont groupés au sein d'une demande de lot. En fonction de la sortie de la fonction de hachageinterne et du nombre de partitions, les messages avec des ID de groupe de messages différentspeuvent être regroupés. Étant donné que la fonction de hachage ou le nombre de partitionspeuvent changer à tout moment, les messages qui sont regroupés à un moment donné nepeuvent pas être regroupés ultérieurement.

CompatibilityClients

Le client asynchrone tampon Amazon SQS ne prend actuellement pas en charge les files d'attenteFIFO.

Services

Si votre application utilise plusieursAWS, ou un mélange deAWSet les services externes, il estimportant de comprendre quelle fonctionnalité de service ne prend pas en charge les files d'attenteFIFO.

MomentanéeAWSou les services externes qui envoient des notifications à Amazon SQS peuvent nepas être compatibles avec les files d'attente FIFO, bien que vous puissiez définir une file d'attente FIFOcomme cible.

Les fonctionnalités suivantes deAWSne sont actuellement pas compatibles avec les files d'attenteFIFO :• Notifications Amazon S3• Auto Scaling cycle de vie• AWS IoT Actions de règle• AWS Lambda Files d'attente de lettres mortes

Pour plus d'informations sur la compatibilité d'autres services avec les files d'attente FIFO, consultez ladocumentation de votre service.

Identifiants de files d'attente et de messagesAmazon SQS

Cette section décrit les identifiants des files d'attente standard et FIFO. Ces identifiants peuvent vous aiderà trouver et à manipuler des files d'attente et des messages spécifiques.

Rubriques• Identifiants pour les files d'attente standard Amazon SQS et FIFO (p. 38)• Identifiants supplémentaires pour les files d'attente FIFO Amazon SQS (p. 39)

Identifiants pour les files d'attente standard AmazonSQS et FIFOPour plus d'informations sur les identifiants suivants, consultez laRéférence d'API Amazon Simple QueueService.

38

Page 45: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurIdentifiants supplémentaires pour les files d'attente FIFO

Nom et URL de la file d'attenteLorsque vous créez une file d'attente, vous devez indiquer un nom unique pour le compte et la régionAWS. Amazon SQS attribue à chaque file d'attente que vous créez un identificateur appeléURL de filed'attentequi inclut le nom de la file d'attente et d'autres composants Amazon SQS. Chaque fois que voussouhaitez effectuer une action au niveau d'une file d'attente, vous devez fournir cette URL.

Le nom d'une file d'attente FIFO doit se terminer par la.fifosuffixe. Le suffixe compte dans lequota de nom de file d'attente de 80 caractères. Pour déterminer si une file d'attente estFILESD'ATTENTE (p. 28), vous pouvez vérifier si le nom de la file d'attente se termine par le suffixe.

L'URL suivante est celle d'une file d'attente nommée MyQueue, qui appartient à un utilisateur dont lenuméro de compte AWS est 123456789012.

https://sqs.us-east-2.amazonaws.com/123456789012/MyQueue

Vous pouvez extraire l'URL d'une file d'attente par programmation en listant vos files d'attente et enanalysant la chaîne qui suit le numéro de compte. Pour plus d'informations, consultez ListQueues.

ID de messageChaque message reçoit unID de messagequ'Amazon SQS vous renvoie dans leSendMessageRéponse.Cet identifiant est utile pour identifier les messages. (Cependant, vous avez besoin du descripteurde réception d'un message pour le supprimer.) La longueur maximale d'un ID de message est de100 caractères.

Descripteur de réceptionChaque fois que vous recevez un message d'une file d'attente, vous recevez un descripteur de réceptioncorrespondant. Cette gestion est associée à la réception du message, et non au message lui-même.Pour supprimer le message ou pour en modifier la visibilité, vous devez fournir le descripteur de réception(et non l'ID du message). C'est pourquoi vous devez toujours recevoir un message avant de pouvoir lesupprimer (vous ne pouvez pas placer un message dans la file d'attente, puis le rappeler). La longueurmaximale d'un descripteur de réception est de 1 024 caractères.

Important

Si vous recevez un message plusieurs fois, chaque fois que vous le recevez, vous obtenez undescripteur de réception différent. Lorsque vous demandez la suppression du message, vousdevez fournir le descripteur de réception le plus récent. Dans le cas contraire, la suppression peutne pas fonctionner.

Voici un exemple de descripteur de réception (réparti sur trois lignes).

MbZj6wDWli+JvwwJaBV+3dcjk2YW2vA3+STFFljTM8tJJg6HRG6PYSasuWXPJB+CwLj1FjgXUv1uSj1gUPAWV66FU/WeR4mq2OKpEGYWbnLmpRCJVAyeMjeU5ZBdtcQ+QEauMZc8ZRv37sIW2iJKq3M9MFx1YvV11A2x/KSbkJ0=

Identifiants supplémentaires pour les files d'attenteFIFO Amazon SQSPour plus d'informations sur les identifiants suivants, consultez laTraitement en une seule fois (p. 31)etl'Référence d'API Amazon Simple Queue Service.

39

Page 46: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurMétadonnées de message

ID de déduplication du messageJeton utilisé pour la déduplication des messages envoyés. Si un message avec un ID de déduplicationde message particulier est envoyé avec succès, tous les messages envoyés avec le même ID dedéduplication de message sont acceptés avec succès, mais ne sont pas remis pendant l'intervalle dedéduplication de 5 minutes.

ID de groupe de messagesBalise spécifiant qu'un message appartient à un groupe de messages spécifique. Les messagesappartenant au même groupe de messages sont toujours traités un par un, dans un ordre strict par rapportau groupe de messages (toutefois, les messages appartenant à différents groupes de messages peuventêtre traités en désordre).

Numéro de séquenceLe grand nombre non consécutif qu'Amazon SQS attribue à chaque message.

Métadonnées de messageVous pouvez utiliser des attributs de message pour attacher des métadonnées personnalisées auxmessages Amazon SQS de vos applications. Vous pouvez utiliser des attributs de système de messagespour stocker des métadonnées pour d'autres services AWS, tels que AWS X-Ray.

Rubriques• Attributs de message Amazon SQS (p. 40)• Attributs de système de message Amazon SQS (p. 43)

Attributs de message Amazon SQSAmazon SQS vous permet d'inclure des métadonnées structurées (telles que des horodatages, desdonnées géospatiales, des signatures et des identifiants) dans des messages à l'aide d'Attributs demessage. Chaque message peut contenir jusqu'à 10 attributs. Les attributs de message sont facultatifset séparés du corps du message (même s'ils sont envoyés en même temps). Votre consommateur peututiliser des attributs de message pour traiter un message d'une façon particulière sans avoir à traiterd'abord le corps du message. Pour plus d'informations sur l'envoi de messages avec des attributs à l'aidede la console Amazon SQS, consultezEnvoi d'un message avec des attributs (console) (p. 21).

Note

Ne confondez pas les attributs de message avecAttributs de système de message : Vous pouvezutiliser des attributs de message pour attacher des métadonnées personnalisées aux messagesAmazon SQS pour vos applications, tandis que vous pouvez utiliserAttributs de système demessage (p. 43)pour stocker des métadonnées pour d'autresAWSservices, tels queAWS X-Ray.

Rubriques• Composants des attributs de message (p. 41)• Types de données d'attribut de message (p. 41)• Calcul de la valeur de hachage MD5 pour les attributs de message (p. 42)

40

Page 47: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurAttributs de message

Composants des attributs de messageImportant

Tous les composants d'un attribut de message sont inclus dans la restriction de taille desmessages à 256 Ko.Name, Type, Value et le corps du message ne doivent pas être vides ni contenir la valeur null.

Chaque attribut de message est constitué des composants suivants :

• Nom— Le nom d'attribut du message peut contenir les caractères suivants :A-Z,a-z,0-9, soulignement(_), trait d'union (-), et la période (.). Les restrictions suivantes s'appliquent :• Il peut contenir jusqu'à 256 caractères.• Il ne peut pas commencer par AWS. ou Amazon. (ou toute variante de casse)• Il est sensible à la casse• Il doit être unique parmi tous les noms d'attribut pour le message• Il ne doit pas commencer ou se terminer par un point• Il ne doit pas comporter plusieurs points à la suite

• Type— Type de données de l'attribut de message. Les types pris en charge incluent String, Number etBinary. Vous pouvez également ajouter des informations personnalisées pour tout type de données. Letype de données est soumis aux mêmes restrictions que le corps du message (pour plus d'informations,consultezSendMessagedans leRéférence d'API Amazon Simple Queue Service). En outre, lesrestrictions suivantes s'appliquent :• Il peut contenir jusqu'à 256 caractères.• Il est sensible à la casse

• Valeur— Valeur d'attribut du message. Pour les données de type String, les valeurs d'attribut sontsoumises aux mêmes restrictions que le corps du message.

Types de données d'attribut de messageLes types de données d'attribut de message indiquent à Amazon SQS comment traiter les valeurs d'attributde message correspondantes. Par exemple, si le type estNumber, Amazon SQS valide les valeursnumériques.

Amazon SQS prend en charge les types de données logiquesString,Number, etBinaryavec desétiquettes de type de données personnalisé au format.custom-data-type

• Chaîne–StringLes attributs peuvent stocker n'importe quel texte Unicode à l'aide de caractères XMLvalides.

• Numéro–NumberLes attributs peuvent stocker des valeurs numériques positives ou négatives. Unnombre peut avoir jusqu'à 38 chiffres de précision et être compris entre 10^-128 et 10^+126.

Note

Amazon SQS supprime les zéros de début et de fin.• Binaire— Les attributs binaires peuvent stocker n'importe quelle donnée binaire, telles que des données

compressées, des données chiffrées ou des images.• Personnalisée— Pour créer un type de données personnalisé, ajoutez une étiquette de type

personnalisé à n'importe quel type de données. Exemples :• Number.byte, Number.short, Number.int et Number.float peuvent vous aider à faire la

distinction entre les types de nombre.• Binary.gif et Binary.png peuvent vous aider à faire la distinction entre les types de fichier.

41

Page 48: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurAttributs de message

Note

Amazon SQS n'interprète pas, ne valide pas ou n'utilise pas les données ajoutées.L'étiquette de type personnalisé est soumise aux mêmes restrictions que le corps du message.

Calcul de la valeur de hachage MD5 pour les attributs demessageSi vous utilisez le kit AWS SDK for Java, vous pouvez ignorer cette section.La .MessageMD5ChecksumHandlerdu SDK for Java prend en charge les valeurs de hachage MD5 pourles attributs de message Amazon SQS.

Si vous utilisez l'API Query ou l'un desAWSKit SDK qui ne prend pas en charge la valeur de hachage MD5pour les attributs de message Amazon SQS, vous devez utiliser les instructions suivantes pour calculer lavaleur de hachage MD5.

Note

Incluez toujours des suffixes de type de données personnalisés dans le calcul du résumé desmessages MD5.

Overview

Voici une présentation de l'algorithme de calcul de la valeur de hachage MD5 :

1. Triez tous les attributs de message dans l'ordre croissant en fonction de leur nom.2. Encodez les différentes parties de chaque attribut (Name, Type et Value) dans un tampon.3. Calculez le résumé du message du tampon entier.

Le schéma suivant illustre l'encodage du résumé de message MD5 pour un attribut de message unique :

Pour encoder un seul attribut de message Amazon SQS

1. Encodez le nom : la longueur (4 octets) et les octets UTF-8 du nom.2. Encodez le type de données : la longueur (4 octets) et les octets UTF-8 du type de données.3. Encodez le type de transport (String ou Binary) de la valeur (1 octet).

42

Page 49: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurAttributs de système de message

Note

Les types de données logiques String et Number utilisent le type de transport String.Le type de données logiques Binary utilise le type de transport Binary.

a. Pour le type de transport String, encodez 1.b. Pour le type de transport Binary, encodez 2.

4. Encodez la valeur d'attribut.

a. Pour un type de transport String, encodez la valeur d'attribut : la longueur (4 octets) et les octetsUTF-8 de la valeur.

b. Pour un type de transport Binary, encodez la valeur d'attribut : la longueur (4 octets) et les octetsbruts de la valeur.

Attributs de système de message Amazon SQSAttendu que vous pouvez utiliserAttributs de message (p. 40)Pour attacher des métadonnéespersonnalisées aux messages Amazon SQS pour vos applications, vous pouvez utiliserAttributsde système de messagepour stocker des métadonnées pour d'autresAWSservices, tels queAWSX-Ray. Pour plus d'informations, consultez le .MessageSystemAttributedu paramètre derequêteSendMessageandSendMessageBatchLes actions d'API, leAWSTraceHeaderAttribut delaReceiveMessageet l'action de l'APIMessageSystemAttributeValueType de données dansleRéférence d'API Amazon Simple Queue Service.

Les attributs de système de message sont structurés exactement comme les attributs de message, avecles exceptions suivantes :

• Actuellement, le seul attribut de système de message pris en charge est AWSTraceHeader. Son typedoit être String et sa valeur doit être une chaîne d'en-tête de suivi AWS X-Ray correctement formatée.

• La taille d'un attribut de système de message ne compte pas dans la taille totale d'un message.

Ressources requises pour traiter les messagesAmazon SQS

Pour vous aider à estimer les ressources dont vous avez besoin pour traiter les messages en file d'attente,Amazon SQS peut déterminer le nombre approximatif de messages retardés, visibles et non visibles dansune file d'attente. Pour plus d'informations sur la visibilité, consultez la section Délai de visibilité AmazonSQS (p. 50).

Note

Pour les files d'attente standard, le résultat est approximatif en raison de l'architecture distribuéed'Amazon SQS. Dans la plupart des cas, le nombre doit être proche du nombre réel de messagesdans la file d'attente.Pour les files d'attente FIFO, le résultat est exact.

Le tableau suivant indique le nom de l'attribut à utiliser avec l'action GetQueueAttributes.

Tâche Nom d'attribut

Obtenir le nombre approximatif de messagesdisponibles dans la file d'attente.

ApproximateNumberOfMessages

43

Page 50: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurRépertorier la pagination

Tâche Nom d'attribut

Obtenir le nombre approximatif de messages dansla file d'attente qui sont retardés et qui ne peuventpas être lus immédiatement. Cela peut se produirelorsque la file d'attente est configurée avec un délaid'attente ou que le message a été envoyé avec unparamètre de délai d'attente.

ApproximateNumberOfMessagesDelayed

Obtenir le nombre approximatif de messages entransit. Les messages sont considérés comme encours s'ils ont été expédiés à un client, mais qu'ilsn'ont pas encore été supprimés ou qu'ils n'ont pasencore atteint la fin du délai de visibilité.

ApproximateNumberOfMessagesNotVisible

Répertorier la paginationDans lalistQueuesandlistDeadLetterQueuesLes méthodes API prennent en charge les contrôles depagination facultatifs. Par défaut, ces méthodes API renvoient jusqu'à 1000 files d'attente dans le messagede réponse. Vous pouvez définirMaxResultspour renvoyer moins de résultats dans chaque réponse.

Définissez le paramètre MaxResults dans la demande listDeadLetterQueues ou listQueuespour spécifier le nombre maximal de résultats à renvoyer dans la réponse. Si vous ne définissezpasMaxResultsLa réponse inclut un maximum de 1 000 résultats.NextTokendans la réponse est null.

Si vous définissezMaxResults, la réponse inclut une valeur pourNextTokenS'il y a des résultatssupplémentaires à afficher. Utilisez NextToken comme paramètre dans votre prochaine demande àlistQueues pour recevoir la page de résultats suivante. S'il n'y a pas de résultats supplémentaires àafficher,NextTokendans la réponse est null.

Balises de répartition des coûts Amazon SQSPour organiser et identifier vos files d'attente Amazon SQS pour la répartition des coûts, vous pouvezajouter des métadonnéesbalises.qui identifient le but, le propriétaire ou l'environnement d'une file d'attente.Cette approche est utile lorsque vous avez un grand nombre de files d'attente. Pour configurer les balisesà l'aide de la console Amazon SQS, consultezthe section called “Configuration des balises pour une filed'attente” (p. 17)

Vous pouvez utiliser des balises répartition des coûts pour organiser votre facture AWS afin de reflétervotre propre structure de coût. Pour ce faire, inscrivez-vous pour obtenir votre Compte AWS Pour inclureles clés et les valeurs de balises. Pour de plus amples informations, veuillez consulterConfiguration d'unrapport de répartition des coûts mensueldans leAWS Billing and Cost ManagementGuide de l'utilisateur.

Chaque balise est composée d'une paire clé-valeur que vous définissez. Par exemple, vous pouvezfacilement identifier vos files d'attente de production et de test en leur attribuant des balises comme suit :

File d'attente Key Value

MyQueueA QueueType Production

MyQueueB QueueType Testing

44

Page 51: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurAttente active de courte durée et de longue durée

Note

Lorsque vous utilisez des balises de file d'attente, gardez à l'esprit les directives suivantes :

• Nous ne recommandons pas d'ajouter plus de 50 balises à une file d'attente.• Les balises n'ont pas de signification sémantique. Amazon SQS interprète les balises en tant

que chaîne de caractères.• Les balises sont sensibles à la casse.• Une nouvelle balise avec une clé identique à celle d'une balise existante remplace la balise

existante.• Les actions de marquage sont limitées à 5 TPS par Compte AWS . Si votre application

nécessite un débit plus élevé,Envoyez une demande.

Pour obtenir la liste complète des restrictions de balises, consultezQuotas liés aux filesd'attente (p. 105).

Interrogation courte et longue d'Amazon SQSAmazon SQS fournit une interrogation courte et longue pour recevoir des messages d'une file d'attente. Pardéfaut, les files d'attente utilisent une interrogation courte.

avecinterrogation courte, leReceiveMessageinterroge uniquement un sous-ensemble des serveurs (selonune distribution aléatoire pondérée) pour rechercher les messages qui sont disponibles pour être inclusdans la réponse. Amazon SQS envoie immédiatement la réponse, même si la requête n'a trouvé aucunmessage.

avecinterrogation longue, leReceiveMessageinterroge tous les serveurs pour les messages. AmazonSQS envoie une réponse suite à la collecte d'au moins un message disponible, jusqu'à concurrencedu nombre maximum de messages spécifié dans la demande. Amazon SQS envoie une réponse videuniquement si le temps d'attente d'interrogation expire.

Les sections suivantes expliquent les détails des interrogations courtes et longues.

Rubriques• Consommation des messages à l'aide de l'interrogation courte (p. 45)• Consommation des messages à l'aide de l'interrogation longue (p. 46)• Différences entre les interrogations courtes et longues (p. 46)

Consommation des messages à l'aide del'interrogation courteSi vous utilisez l'attente active de courte durée lorsque vous consommez les messages d'une file d'attente,Amazon SQS sonde un sous-ensemble des serveurs (selon une distribution aléatoire pondérée) etrenvoie uniquement les messages de ces serveurs. Autrement dit, une demande ReceiveMessageparticulière peut ne pas renvoyer tous les messages. Toutefois, si votre file d'attente compte moins de1 000 messages, une requête ultérieure renvoie vos messages. Si vous continuez à consommer desmessages des files d'attente, Amazon SQS sonde tous ses serveurs et vous recevez tous les messages.

Le schéma diagramme suivant illustre le comportement d'attente active de courte durée des messagesrenvoyés par une file d'attente standard suite à une demande réception de la part de l'un des composants

45

Page 52: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurConsommation des messages

à l'aide de l'interrogation longue

du système. Amazon SQS sonde plusieurs de ses serveurs (en gris) et renvoie les messages A, C, D et Bà partir de ces serveurs. Le message E n'est pas renvoyé pour cette requête, mais l'est pour une requêteultérieure.

Consommation des messages à l'aide del'interrogation longueSi le temps d'attente pour leReceiveMessageL'action de l'API est supérieure à 0,interrogation longueesten vigueur. Le temps d'attente maximal de l'interrogation est de 20 secondes. L'attente active de longuedurée permet de réduire le coût d'utilisation d'Amazon SQS en éliminant les réponses vides (lorsqu'il n'ya aucun message disponible pour uneReceiveMessage) et les fausses réponses vides (lorsque lesmessages sont disponibles dans la file d'attente, mais ne sont pas inclus dans une réponse). Pour plusd'informations sur l'activation de l'interrogation longue pour une file d'attente nouvelle ou existante à l'aidede la console SQS, consultez leConfiguration des paramètres de file d'attente (console) (p. 14). Pourconnaître les bonnes pratiques, consultez Configuration de l'interrogation longue (p. 60).

L'attente active de longue durée offre les avantages suivants :

• Réduisez les réponses vides en permettant à Amazon SQS d'attendre qu'un message soit disponibledans une file d'attente avant d'envoyer une réponse. A moins que la connexion expire, la réponse à lademande ReceiveMessage contient au moins l'un des messages disponibles et, au plus, le nombremaximum de messages spécifiés dans l'action ReceiveMessage. Dans de rares cas, vous pouvezrecevoir des réponses vides même lorsqu'une file d'attente contient toujours des messages, en particuliersi vous spécifiez une valeur faible pour le paramètreReceiveMessageWaitTimeSeconds  Paramètre .

• Réduisez les fausses réponses vides en interrogeant tous les serveurs Amazon SQS, plutôt qu'un sous-ensemble de ces serveurs.

• Renvoyez des messages dès qu'ils sont disponibles.

Pour plus d'informations sur la façon de confirmer qu'une file d'attente est vide, consultezConfirmer qu'unefile d'attente est vide (p. 23).

Différences entre les interrogations courtes et longuesL'attente active de courte durée survient lorsque le paramètre WaitTimeSeconds d'une réponseReceiveMessage est défini sur 0 de l'une des deux manières suivantes :

• Dans laReceiveMessagejeux d'appelsWaitTimeSecondssur0.

46

Page 53: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurFiles d'attente de lettres mortes

• L'appel ReceiveMessage ne définit pas WaitTimeSeconds, mais l'attribut de file d'attenteReceiveMessageWaitTimeSeconds est défini sur 0.

Files d'attente Amazon SQSAmazon SQSFiles d'attente de lettres mortes, quelles autres files d'attente (files d'attente source) peutcibler les messages qui ne peuvent pas être traités (consommés) avec succès. Les files d'attente de lettresmortes sont utiles pour le débogage de votre application ou votre système de messagerie, car elles vouspermettent d'isoler les messages problématiques afin de déterminer la raison pour laquelle leur traitementéchoue. Pour des informations sur la création d'une file d'attente et la configuration d'une file d'attente delettres mortes pour celle-ci à l'aide de la console Amazon SQS, consultezConfiguration d'une file d'attentede lettres mortes (console) (p. 16).

Important

Amazon SQSpasCréez automatiquement la file d'attente de lettres mortes. Vous devez d'abordcréer la file d'attente avant de l'utiliser comme file d'attente de lettres mortes.

Rubriques• Fonctionnement des files d'attente de lettres mortes (p. 47)• Quels sont les avantages des files d'attente de lettres mortes ? (p. 48)• Comment les divers types de file d'attente gèrent-ils les échecs de messages ? (p. 48)• Quand utiliser une file d'attente de lettres mortes ? (p. 49)• Dépannage des files d'attente de lettres mortes (p. 49)

Fonctionnement des files d'attente de lettres mortesDans certains cas, ces messages ne peuvent pas être traités en raison de différents problèmes potentiels,par exemple des conditions d'erreurs au sein de l'application producteur ou consommateur, ou unchangement d'état inattendu qui entraîne un problème avec votre code d'application. Par exemple, si unutilisateur passe une commande sur Internet avec un ID produit spécifique, mais que ce dernier a étésupprimé, le code du magasin en ligne échoue et affiche une erreur, puis le message avec la demande decommande est envoyé vers une file d'attente de lettres mortes.

Parfois, les producteurs et les consommateurs risquent de mal interpréter certains aspects du protocolequ'ils utilisent pour communiquer, générant ainsi une altération ou une perte des messages. En outre, leserreurs de matériel du consommateur risquent d'endommager la charge utile des messages.

La .stratégie de reconduitespécifie lafile d'attente source, leFile d'attente de lettres morteset les conditionsdans lesquelles Amazon SQS transfère les messages de la première à la seconde si le consommateurde la file d'attente source n'arrive pas à traiter un message un nombre spécifié de fois. LorsquelaReceiveCountpour un message dépasse la valeurmaxReceiveCountPour une file d'attente, AmazonSQS place le message dans une file d'attente de lettres mortes (avec son ID de message d'origine). Parexemple, si la file d'attente source possède une stratégie de redirection avecmaxReceiveCountdéfini sur5 et que le consommateur de la file d'attente source reçoit un message 6 fois sans le supprimer, AmazonSQS place ce message dans la file d'attente de lettres mortes.

Pour spécifier une file d'attente de lettres mortes, vous pouvez utiliser la console ou laAWS SDK for Java.La procédure s'applique au niveau de chaque file d'attente qui envoie des messages à une file d'attentede lettres mortes. Plusieurs files d'attente du même type peuvent cibler une seule file d'attente de lettresmortes. Pour plus d'informations, voir Configuration d'une file d'attente de lettres mortes (console) (p. 16) etl'RedrivePolicyattribut de l'action CreateQueue ou SetQueueAttributes.

47

Page 54: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurQuels sont les avantages des

files d'attente de lettres mortes ?

Important

La file d'attente de lettres mortes d'une file d'attente FIFO doit également être une file d'attenteFIFO. De même, la file d'attente de lettres mortes d'une file d'attente standard doit également êtreune file d'attente standard.Vous devez utiliser le même Compte AWS Pour créer la file d'attente de lettres mortes et lesautres files d'attente qui lui envoient des messages. Les files d'attente de lettres mortes doiventégalement résider dans la même région que les autres files d'attente qui les utilisent. Par exemple,si vous créez une file d'attente dans la région USA Est (Ohio) et que vous souhaitez utiliser unefile d'attente de lettres mortes avec celle-ci, la seconde file d'attente doit également se trouverdans la région USA Est (Ohio).L'expiration d'un message est toujours basée sur son horodatage d'origine de la file d'attente.Lorsqu'un message est déplacé vers une file d'attente de lettres mortes, l'horodatage de la filed'attente reste inchangé. La .ApproximateAgeOfOldestMessageindique quand le messagea été déplacé dans la file d'attente de lettres mortes,pasLorsque le message a été envoyé àl'origine. Par exemple, supposons qu'un message passe 1 jour dans la file d'attente d'origine avantd'être déplacé vers une file d'attente de lettres mortes. Si la période de rétention de la file d'attentedes lettres mortes est de 4 jours, le message est supprimé de la file d'attente des lettres mortesaprès 3 jours et l'optionApproximateAgeOfOldestMessageest de 3 jours. Par conséquent, ilest recommandé de toujours définir la période de rétention d'une file d'attente de lettres mortespour qu'elle soit plus longue que la période de rétention de la file d'attente d'origine.

Quels sont les avantages des files d'attente de lettresmortes ?La tâche principale d'une file d'attente de lettres mortes et de gérer les défaillances des messages. Lesfiles d'attente de lettres mortes vous permettent de mettre de côté et d'isoler ces messages qui ne peuventpas être correctement traités pour déterminer pourquoi leur traitement a échoué. La configuration d'une filed'attente de lettres mortes vous permet d'effectuer les actions suivantes :

• Configurer une alarme pour tous les messages placés dans une file d'attente de lettres mortes.• Rechercher dans les journaux les exceptions qui ont pu entraîner l'envoi de messages dans une file

d'attente de lettres mortes.• Analyser le contenu des messages envoyés dans une file d'attente de lettres mortes pour diagnostiquer

les problèmes logiciels du producteur ou les problème matériels du consommateur.• Déterminer si vous avez donné suffisamment de temps à votre consommateur pour traiter les messages.

Comment les divers types de file d'attente gèrent-ilsles échecs de messages ?Files d'attente standardFiles d'attente standard (p. 28)Traiter les messages jusqu'à l'expiration de la période de conservation.Ce traitement continu des messages réduit les risques de blocage de la file d'attente par des messagesqui ne peuvent pas être traités. Le traitement continu des messages offre également une récupération plusrapide pour la file d'attente.

Dans un système qui traite des milliers de messages, la présence de nombreux messages dont leconsommateur n'accuse pas réception et qu'il ne supprime pas, et ce de manière répétée, risqued'augmenter les coûts et d'imposer une charge supplémentaire au matériel. Au lieu de tenter de traiter lesmessages à l'état d'échec jusqu'à ce qu'ils expirent, il est préférable de les transférer dans une file d'attentede lettres mortes après plusieurs tentatives de traitement.

48

Page 55: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurQuand utiliser une file d'attente de lettres mortes ?

Note

Les files d'attente standard acceptent un nombre élevé de messages en direct. Si la majoritédes messages ne peuvent pas être consommés et ne sont pas envoyés à une file d'attente delettres mortes, le traitement des messages valides peut ralentir. Par conséquent, pour conserverl'efficacité de la file d'attente, assurez-vous que l'application traite correctement les messages.

Files d'attente FIFOFiles d'attente FIFO (p. 28)fournissent un traitement unique en consommant les messages d'un groupede messages dans l'ordre. Par conséquent, bien que le consommateur puisse continuer à extraire lesmessages classés d'un autre groupe de messages, le premier groupe de messages reste indisponiblejusqu'à ce que le message bloquant la file d'attente soit traité avec succès.

Note

Les files d'attente FIFO acceptent un nombre moins important de messages en direct. Ainsi,pour éviter que votre file d'attente FIFO ne soit bloquée par un message, assurez-vous que votreapplication gère correctement le traitement des messages.

Quand utiliser une file d'attente de lettres mortes ?

Utilisez les files d'attente de lettres mortes avec les files d'attente standard. Vous devez toujoursutiliser des files d'attente de lettres mortes lorsque vos applications ne dépendent pas de l'ordre. Lesfiles d'attente de lettres mortes peuvent vous aider dans le dépannage lors d'opérations incorrectes detransmission des messages.

Note

Même lorsque vous utilisez des files d'attente de lettres mortes, vous devez continuer à surveillervos files d'attente et réessayer d'envoyer les messages qui échouent pour des raisons transitoires.

Utilisez des files d'attente de lettres mortes pour diminuer le nombre de messages et réduire lapossibilité d'exposition du système à des messages de type « poison pill » (messages reçus mais nepouvant pas être traités).

N'utilisez pas de file d'attente de lettres mortes avec des files d'attente standard lorsque voussouhaitez essayer de retransmettre un message indéfiniment. Par exemple, n'utilisez pas de file d'attentede lettres mortes si votre programme doit attendre qu'un processus dépendant devienne actif ou disponible.

N'utilisez pas de file d'attente de lettres mortes avec une file d'attente FIFO si vous ne souhaitezpas modifier l'ordre exact des messages ou des opérations. Par exemple, n'utilisez pas de file d'attentede lettres mortes avec des instructions dans une liste de décisions de modification (EDL) pour unesuite de modifications vidéo lorsque le changement de l'ordre des modifications change le contexte desmodifications ultérieures.

Dépannage des files d'attente de lettres mortesDans certains cas, les files d'attente Amazon SQS peuvent avoir un comportement inattendu. Cette sectionfournit une présentation des problèmes courants et des solutions permettant de les résoudre ou de lescontourner.

49

Page 56: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurDélai de visibilité

L'affichage des messages à l'aide de la console peut entraînerleur envoi dans une file d'attente de lettres mortesAmazon SQS compte l'affichage d'un message dans la console par rapport à la stratégie de redirection dela file d'attente correspondante. Par conséquent, si vous affichez un message dans la console le nombrede fois spécifié dans la stratégie de redirection de la file d'attente correspondante, le message est déplacévers la file d'attente de lettres mortes correspondante.

Pour régler ce comportement, vous pouvez procéder de l'une des manières suivantes :

• Augmentez le paramètre Maximum Receives pour la stratégie de redirection de la file d'attentecorrespondante.

• Évitez d'afficher les messages de la file d'attente correspondante dans la console.

Les métriques NumberOfMessagesSent etNumberOfMessagesReceived d'une file d'attente de lettresmortes ne correspondent pasSi vous envoyez un message à une file d'attente de lettres mortes manuellement, il est capturé parla métrique NumberOfMessagesSent. Toutefois, si un message est envoyé à une file d'attentede lettres mortes en raison de l'échec d'une tentative de traitement, il n'est pas capturé par cettemétrique. Par conséquent, il est possible que les valeurs des métriques NumberOfMessagesSent etNumberOfMessagesReceived diffèrent.

Délai de visibilité Amazon SQSLorsqu'un client reçoit et traite un message à partir d'une file d'attente, le message reste dans celle-ci.Amazon SQS ne supprime pas automatiquement le message. Dans la mesure où Amazon SQS est unsystème distribué, rien ne garantit que le consommateur recevra réellement le message (par exemple, encas de problème de connectivité ou de problème de l'application consommateur). L'utilisateur doit doncsupprimer le message de la file d'attente après l'avoir reçu et traité.

Immédiatement après réception d'un message, il reste dans la file d'attente. Pour empêcher d'autresutilisateurs de le traiter à nouveau, Amazon SQS définit undélai de visibilité, période au cours de laquelleAmazon SQS empêche les autres consommateurs de recevoir et de traiter ce message. Le délai devisibilité par défaut d'un message est de 30 secondes. Le minimum est de 0 seconde. Le maximum est de12 heures. Pour plus d'informations sur la configuration du délai de visibilité d'une file d'attente utilisant laconsole, consultezConfiguration des paramètres de file d'attente (console) (p. 14).

50

Page 57: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurMessages en transit

Note

Pour les files d'attente standard, le délai de visibilité n'est pas une garantie contre la réception d'unmessage en double. Pour plus d'informations, consultez Diffusion au moins une fois (p. 28).Les files d'attente FIFO permettent au producteur ou au consommateur de tenter plusieurstentatives :

• Si le producteur détecte une défaillanceSendMessage, il peut réessayer l'envoi autant defois que nécessaire, en utilisant le même ID de déduplication de message. En supposant quele producteur reçoive au moins un accusé de réception avant l'expiration de l'intervalle dedéduplication, plusieurs tentatives n'affectent ni l'ordre des messages ni n'introduisent desdoublons.

• Si le consommateur détecte un échecReceiveMessage, il peut réessayer autant de fois quenécessaire, en utilisant le même ID de tentative de demande de réception. En supposant que leconsommateur reçoive au moins un accusé de réception avant l'expiration du délai d'expirationde la visibilité, plusieurs tentatives n'affectent pas l'ordre des messages.

• Lorsque vous recevez un message avec un ID de groupe de messages, aucun autre messagepour le même ID de groupe de messages n'est renvoyé, sauf si vous supprimez le message ousi celui-ci devient visible.

Rubriques• Messages en transit (p. 51)• Définition du délai de visibilité (p. 52)• Modification du délai de visibilité d'un message (p. 52)• Désactivation du délai de visibilité d'un message (p. 52)

Messages en transitUn message Amazon SQS a trois états de base :

1. Envoyé dans une file d'attente par un producteur.2. Reçu de la file d'attente par un consommateur.3. Supprimé de la file d'attente.

Un message est considéré commestockésaprès avoir été envoyé à une file d'attente par un producteur,mais pas encore reçu de la file d'attente par un consommateur (c'est-à-dire entre les états 1 et 2). Il n'y apas de quota pour le nombre de messages stockés. Un message est considéré commeEn volaprès avoirété reçu d'une file d'attente par un consommateur, mais pas encore supprimé de la file d'attente (c'est-à-dire entre les états 2 et 3). Le nombre de messages en transit est limité.

Important

Les quotas qui s'appliquent aux messages en vol ne sont pas liés auillimiténombre de messagesstockés.

Pour la plupart des files d'attente standard (selon le trafic de file d'attente et les messages en attente),il peut y avoir environ 120 000 messages en vol (reçus d'une file d'attente par un consommateur, maispas encore supprimés de la file d'attente). Si vous atteignez ce quota tout en utilisantInterrogationcourte (p. 45), Amazon SQS renvoie leOverLimitMessage d'erreur. Si vous utilisezinterrogationlongue (p. 46), Amazon SQS ne renvoie aucun message d'erreur. Pour éviter d'atteindre cette limite,supprimez les messages de la file d'attente une fois qu'ils ont été traités. Vous pouvez égalementaugmenter le nombre de files d'attente que vous utilisez pour traiter vos messages. Pour demander uneaugmentation de quota, envoyez une demande de support.

51

Page 58: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurDéfinition du délai de visibilité

Pour les files d'attente FIFO, il peut y avoir 20 000 messages en transit (reçus d'une file d'attente par unconsommateur, mais pas encore supprimés de la file d'attente). Si vous atteignez ce quota, Amazon SQSne renvoie aucun message d'erreur.

Définition du délai de visibilitéLe délai de visibilité commence lorsque Amazon SQS renvoie un message. Pendant ce temps, leconsommateur traite et supprime le message. Toutefois, si le consommateur rencontre un échec avant desupprimer le message et que votre système n'appelle pas l'action DeleteMessage pour ce message avantl'expiration du délai de visibilité, le message devient visible pour les autres consommateurs et est reçu ànouveau. Si un message ne doit être reçu qu'une seule fois, votre consommateur doit le supprimer avantl'expiration du délai de visibilité.

Pour chaque file d'attente Amazon SQS, le délai de visibilité par défaut est de 30 secondes. Vous pouvezmodifier ce paramètre pour toute la file d'attente. Généralement, vous devez configurer le délai de visibilitéen fonction du temps maximal nécessaire à votre application pour traiter et supprimer un message de la filed'attente. Lors de la réception des messages, vous pouvez également définir un délai de visibilité qui leurest spécifique, sans modifier le délai de visibilité de toute la file d'attente. Pour en savoir plus, consultez lesbonnes pratiques dans la section Traitement des messages en temps opportun (p. 59).

Si vous ne savez pas combien de temps il faut pour traiter un message, créez unPulsationspour votreprocessus consommateur : Spécifiez le délai d'expiration de visibilité initial (par exemple, 2 minutes),puis, tant que votre client travaille toujours sur le message, continuez à prolonger le délai de visibilité de 2minutes toutes les minutes.

Important

Le délai maximal de visibilité est de 12 heures à compter de l'heure où Amazon SQS recevraleReceiveMessagede la demande. L'extension du délai d'attente de visibilité ne réinitialise pasle maximum de 12 heures. Si votre client a besoin de plus de 12 heures, envisagez d'utiliser StepFunctions.

Modification du délai de visibilité d'un messageLorsque vous recevez un message provenant d'une file d'attente et que vous commencez à le traiter, ledélai de visibilité de cette dernière peut être insuffisant (par exemple, vous pouvez avoir besoin de traiteret supprimer un message). Pour raccourcir ou rallonger le délai de visibilité d'un message, spécifiez unenouvelle valeur à l'aide de l'action ChangeMessageVisibility.

Par exemple, si le délai d'expiration par défaut pour une file d'attente est de 60 secondes, que 15secondes se sont écoulées depuis que vous avez reçu le message, et que vous envoyez un appelChangeMessageVisibility avec VisibilityTimeout défini sur 10 secondes, les 10 secondescommençant à partir du moment que vous effectuez l'appel ChangeMessageVisibility. Parconséquent, toute tentative de modifier le délai de visibilité ou de supprimer ce message 10 secondesaprès que vous avez initialement modifié le délai de visibilité (un total de 25 secondes) peut entraîner uneerreur.

Note

Le nouveau délai de visibilité prend effet à partir du moment où vous appelez l'actionChangeMessageVisibility. De plus, le nouveau délai s'applique uniquement à la réceptionspécifique de ce message. L'action ChangeMessageVisibility n'a pas d'incidence sur le délaide visibilité des réceptions ou des files d'attente ultérieures.

Désactivation du délai de visibilité d'un messageLorsque vous recevez un message à partir d'une file d'attente, vous ne souhaitez pas toujours le traiter etle supprimer. Amazon SQS vous permet de mettre fin au délai d'expiration de visibilité pour un message

52

Page 59: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurFiles d'attente à retardement

spécifique. Dans ce cas, les autres composants du système voient immédiatement le message et peuventle traiter.

Pour désactiver le délai de visibilité d'un message après avoir appelé ReceiveMessage, appelezChangeMessageVisibility en définissant VisibilityTimeout sur 0 seconde.

Files d'attente Amazon SQSLes files d'attente à retardement vous permettent de différer la livraison des nouveaux messages dansune file d'attente pendant plusieurs secondes, par exemple lorsque votre application grand public a besoind'un délai supplémentaire pour traiter les messages. Si vous créez une file d'attente à retardement, lesconsommateurs ne peuvent pas voir les messages que vous lui envoyez pendant toute la durée de lapériode d'attente. Le délai par défaut (minimum) pour une file d'attente est de 0 secondes. Le maximum est15 minutes. Pour plus d'informations sur la configuration des files d'attente à retardement via la console,consultezConfiguration des paramètres de file d'attente (console) (p. 14).

Note

Pour les files d'attente standard, le retard par file d'attente défini estnon rétroactif : si vous modifiezle paramètre, cela n'affecte pas le retard des messages se trouvant déjà dans la file d'attente.Pour les files d'attente FIFO, le délai par file d'attente défini estrétroactive : si vous modifiez leparamètre, il affecte le retard des messages se trouvant déjà dans la file d'attente.

Les files d'attente à retardement sont similaires aux délais de visibilité (p. 50), car ces deux fonctionsempêchent les utilisateurs d'accéder aux messages pendant une période donnée. La différence entre lesdeux est que pour, les files d'attente à retardement, un message est masqué lorsqu'il est ajouté initialementà la file d'attente, tandis que pour les délais de visibilité, un message est masqué uniquement aprèssa consommation de la file d'attente. Le diagramme suivant illustre la relation entre les files d'attente àretardement et les délais de visibilité.

Pour définir les secondes de retard surMessages individuels, plutôt que sur une file d'attenteentière, utilisezTemporisateurs de messages (p. 57)pour permettre à Amazon SQS d'utiliserleDelaySecondsau lieu de laDelaySecondsValeur .

Files d'attente temporaires Amazon SQSLes files d'attente temporaires vous permettent d'économiser du temps de développement et des coûts dedéploiement lors de l'utilisation de modèles de messages courants tels quedemande-réponse. Vous pouvezutiliser la méthodeClient de file d'attente temporairepour créer des files d'attente temporaires à haut débit,rentables et gérées par les applications.

Le client mappe plusieursFiles d'attente temporaires— files d'attente gérées par les applications créées à lademande pour un processus particulier — sur une seule file d'attente Amazon SQS automatiquement. Cela

53

Page 60: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurFiles d'attente virtuelles

permet à votre application d'effectuer moins d'appels d'API et de bénéficier d'un meilleur débit lorsque letrafic vers chaque file d'attente temporaire est faible. Lorsqu'une file d'attente temporaire n'est plus utilisée,le client la supprime automatiquement, même si certains processus qui utilisent le client ne sont pas ferméscorrectement.

Voici les avantages des files d'attente temporaires :

• Celles-ci servent des canaux de communication légers pour des threads ou processus spécifiques.• Elles peuvent être créées et supprimées sans encourir de frais supplémentaires.• Elles sont compatibles API avec files d'attente Amazon SQS statiques (normales). Cela signifie que le

code existant qui envoie et reçoit des messages peut envoyer des messages et recevoir des messagesdans des files d'attente virtuelles.

Rubriques

• Files d'attente virtuelles (p. 54)• Modèle de messagerie demande-réponse (files d'attente virtuelles) (p. 55)• Exemple de scénario Traitement d'une demande de connexion (p. 56)

• Côté client (p. 56)• Côté serveur (p. 56)

• Nettoyage des files d'attente (p. 57)

Files d'attente virtuellesLes files d'attente virtuelles sont des structures de données locales créées par le client de file d'attentetemporaire. Les files d'attente virtuelles vous permettent de combiner plusieurs destinations à faible traficen une seule file d'attente Amazon SQS. Pour connaître les bonnes pratiques, consultez Évitez de réutiliserle même ID de groupe de messages avec des files d'attente virtuelles (p. 65).

Note

• La création d'une file d'attente virtuelle crée uniquement des structures de données temporairesdans lesquelles les consommateurs reçoivent les messages. Comme une file d'attente virtuellen'effectue aucun appel d'API vers Amazon SQS, les file d'attente virtuelles n'entraînent aucuncoût.

• Les quotas TPS s'appliquent à toutes les files d'attente virtuelles sur une file d'attente hôteunique. Pour plus d'informations, consultez Quotas liés aux messages (p. 106).

La classe wrapper AmazonSQSVirtualQueuesClient ajoute la prise en charge des attributs liésaux files d'attente virtuelles. Pour créer une file d'attente virtuelle, vous devez appeler l'action d'APICreateQueue à l'aide de l'attribut HostQueueURL. Cet attribut spécifie la file d'attente existante quihéberge les files d'attente virtuelles.

L'URL d'une file d'attente virtuelle est au format suivant.

https://sqs.us-east-2.amazonaws.com/123456789012/MyQueue#MyVirtualQueueName

Lorsqu'un producteur appelle l'action d'API SendMessage ou SendMessageBatch sur une URL de filed'attente virtuelle, le client de file d'attente temporaire effectue les opérations suivantes :

1. Il extrait le nom de file d'attente virtuelle.2. Il attache un nom de file d'attente virtuelle en tant qu'attribut de message supplémentaire.3. Il envoie le message dans la file d'attente d'hôte.

54

Page 61: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurModèle de messagerie demande-réponse (files d'attente virtuelles)

Pendant que le producteur envoie des messages, un thread d'arrière-plan interroge la file d'attente hôteet envoie les messages reçus vers des files d'attente virtuelles en fonction des attributs de messagecorrespondants.

Pendant que le consommateur appelle l'action d'API ReceiveMessage sur une URL de file d'attentevirtuelle, le client de file d'attente temporaire bloque l'appel localement jusqu'à ce que le thread d'arrière-plan envoie un message dans la file d'attente virtuelle. (Ce processus est similaire à la récupérationpréalable des messages dans le client asynchrone mis en tampon (p. 175) : une seule action d'API peutfournir jusqu'à 10 messages à des files d'attente virtuelles.) La suppression d'une file d'attente virtuellesupprime les ressources côté client sans appeler Amazon SQS proprement dit.

La classe AmazonSQSTemporaryQueuesClient transforme automatiquement toutes les files d'attentequ'elle crée en files d'attente temporaires. Elle crée également automatiquement des files d'attente hôteavec les mêmes attributs de file d'attente, à la demande. Ces noms de files d'attente partagent un préfixeconfigurable commun (par défaut, __RequesterClientQueues__) qui les identifie comme des filesd'attente temporaires. Cela permet au client d'agir comme un remplacement optimisant le code existantqui crée et supprime les files d'attente. Le client inclut également les interfaces AmazonSQSRequester etAmazonSQSResponder qui permettent la communication bidirectionnelle entre les files d'attente.

Modèle de messagerie demande-réponse (filesd'attente virtuelles)Le cas d'utilisation le plus courant pour les files d'attente temporaires est le modèle de messageriedemande-réponse dans lequel un demandeur crée une file d'attente temporaire pour la réception dechaque message de réponse. Pour éviter la création d'une file d'attente Amazon SQS pour chaquemessage de réponse, le client de file d'attente temporaire vous permet de créer et de supprimer plusieursfiles d'attente temporaires sans effectuer des appels d'API Amazon SQS. Pour plus d'informations,consultez Implémentation de systèmes de demande-réponse (p. 61).

Le schéma suivant montre une configuration commune qui utilise ce modèle.

55

Page 62: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurExemple de scénario Traitement

d'une demande de connexion

Exemple de scénario Traitement d'une demande deconnexionL'exemple de scénario suivant montre comment utiliser les interfaces AmazonSQSRequester etAmazonSQSResponder pour traiter une demande de connexion d'un utilisateur.

Côté clientpublic class LoginClient {

// Specify the Amazon SQS queue to which to send requests. private final String requestQueueUrl;

// Use the AmazonSQSRequester interface to create // a temporary queue for each response. private final AmazonSQSRequester sqsRequester = AmazonSQSRequesterClientBuilder.defaultClient();

private final LoginClient(String requestQueueUrl) { this.requestQueueUrl = requestQueueUrl; }

// Send a login request. public String login(String body) throws TimeoutException { SendMessageRequest request = new SendMessageRequest() .withMessageBody(body) .withQueueUrl(requestQueueUrl);

// If no response is received, in 20 seconds, // trigger the TimeoutException. Message reply = sqsRequester.sendMessageAndGetResponse(request, 20, TimeUnit.SECONDS);

return reply.getBody(); }}

L'envoi d'une demande de connexion effectue les opérations suivantes :

1. Crée une table temporaire.2. Attache l'URL de la file d'attente temporaire au message en tant qu'attribut.3. Envoie le message.4. Reçoit une réponse de la file d'attente temporaire.5. Supprime la file d'attente temporaire.6. Renvoie la réponse.

Côté serveurL'exemple suivant suppose que, lors de la construction, un thread est créé pour interroger la file d'attenteet appeler la méthode handleLoginRequest() pour chaque message. En outre, doLogin() est uneméthode assumée.

public class LoginServer {

// Specify the Amazon SQS queue to poll for login requests. private final String requestQueueUrl;

56

Page 63: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurNettoyage des files d'attente

// Use the AmazonSQSResponder interface to take care // of sending responses to the correct response destination. private final AmazonSQSResponder sqsResponder = AmazonSQSResponderClientBuilder.defaultClient();

private final AmazonSQS(String requestQueueUrl) { this.requestQueueUrl = requestQueueUrl; }

// Process login requests from the client. public void handleLoginRequest(Message message) {

// Process the login and return a serialized result. String response = doLogin(message.getBody());

// Extract the URL of the temporary queue from the message attribute // and send the response to the temporary queue. sqsResponder.sendResponseMessage(MessageContent.fromMessage(message), new MessageContent(response)); }}

Nettoyage des files d'attentePour faire en sorte qu'Amazon SQS récupérera les ressources en mémoire utilisées par les files d'attentevirtuelles, lorsque votre application n'a plus besoin du client de file d'attente temporaire, il doit appeler laméthodeshutdown()Méthode. Vous pouvez également utiliser la méthode shutdown() de l'interfaceAmazonSQSRequester.

Le client de file d'attente temporaire fournit également un moyen d'éliminer les files d'attente hôteorphelines. Pour chaque file d'attente qui reçoit un appel d'API sur une période de temps (par défaut, cinqminutes), le client utilise l'action d'API TagQueue pour ajouter des balises à une file d'attente qui continued'être utilisée.

Note

Toute action d'API effectuée sur une file d'attente marque celle-ci comme étant non inactive, ycompris une action ReceiveMessage qui ne renvoie aucun message.

Le thread d'arrière-plan utilise les actions d'API ListQueues et ListTags pour vérifier toutes les filesd'attente avec le préfixe configuré, en supprimant les files d'attente qui n'ont pas été balisées pendant aumoins cinq minutes. Ainsi, si un client n'est pas fermé correctement, les autres clients actifs sont nettoyésaprès celui-ci. Afin de réduire la duplication de travail, tous les clients avec le même préfixe communiquentvia une file d'attente de travail interne partagée, nommée d'après le préfixe.

Timisateurs de message Amazon SQSLes temporisateurs de message vous permettent de spécifier une période d'invisibilité initiale pour unmessage ajouté à une file d'attente. Par exemple, si vous envoyez un message avec une minuterie de 45secondes, le message n'est pas visible par les consommateurs pendant les 45 premières secondes dela file d'attente. Le délai par défaut (minimum) pour un message est de 0 secondes. Le maximum est 15minutes. Pour plus d'informations sur l'envoi de messages avec des temporisateurs à l'aide de la console,consultezEnvoi de messages à une file d'attente (console) (p. 20).

Note

Les files d'attente FIFO ne prennent pas en charge les minuteries sur les messages individuels.

57

Page 64: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurTemporisateurs de messages

Pour définir une période de retard pour une file d'attente complète plutôt qu'au niveau de messagesindividuels, utilisez des files d'attente à retardement (p. 53). La définition d'un temporisateur pour unmessage prévaut sur la définition d'DelaySecondssur une file d'attente de retard Amazon SQS.

58

Page 65: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurRecommandations pour les files d'attente standard et FIFO

Bonnes pratiques pour Amazon SQSCes bonnes pratiques peuvent vous aider à tirer le meilleur d'Amazon SQS.

Rubriques• Recommandations pour les files d'attente Amazon SQS et FIFO (p. 59)• Recommandations supplémentaires pour les files d'attente FIFO Amazon SQS (p. 63)

Recommandations pour les files d'attente AmazonSQS et FIFO

Les bonnes pratiques suivantes peuvent vous aider à réduire les coûts et à traiter les messagesefficacement à l'aide d'Amazon SQS.

Rubriques• Utilisation des messages Amazon SQS (p. 59)• Réduction des coûts Amazon SQS (p. 62)• Passer d'une file d'attente Amazon SQS Standard à une file d'attente FIFO (p. 62)

Utilisation des messages Amazon SQSLes consignes suivantes peuvent vous aider à traiter les messages efficacement à l'aide d'Amazon SQS.

Rubriques• Traitement des messages en temps opportun (p. 59)• Gestion des erreurs de demande (p. 60)• Configuration de l'interrogation longue (p. 60)• Capture des messages problématiques (p. 61)• Configuration de la conservation en file d'attente de lettres mortes (p. 61)• Éviter le traitement de message incohérent (p. 61)• Implémentation de systèmes de demande-réponse (p. 61)

Traitement des messages en temps opportunLe délai de visibilité défini dépend de la durée nécessaire à votre application pour traiter et supprimer unmessage. Par exemple, si votre application a besoin de 10 secondes pour traiter un message et que vousdéfinissez un délai de visibilité de 15 minutes, vous devez attendre relativement longtemps pour tenter deretraiter le message si la dernière tentative de traitement échoue. En revanche, si votre application a besoinde 10 secondes pour traiter un message, mais que vous définissez un délai de visibilité de seulement2 secondes, un message dupliqué est reçu par un autre consommateur alors que le consommateurd'origine est toujours en train de travailler sur le message.

59

Page 66: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurUtilisation des messages

Pour vérifier qu'il y a suffisamment de temps pour traiter les messages, utilisez l'une des stratégiessuivantes :

• Si vous savez (ou si vous pouvez raisonnablement estimer) combien de temps est nécessaire pour traiterun message, rallongez le délai de visibilité de sorte qu'il corresponde à la durée maximale requise pourtraiter et supprimer le message. Pour de plus amples informations, veuillez consulterConfiguration du lele le délai de visibilité (p. 52).

• Si vous ne savez pas combien de temps il faut pour traiter un message, créez unPulsationspour votreprocessus consommateur : Spécifiez le délai d'expiration de visibilité initial (par exemple, 2 minutes),puis, tant que votre client travaille toujours sur le message, continuez à prolonger le délai de visibilité de2 minutes toutes les minutes.

Important

Le délai maximal de visibilité est de 12 heures à compter de la date où Amazon SQS reçoitleReceiveMessagede la demande. L'extension du délai d'attente de visibilité ne réinitialise pasle maximum de 12 heures. Si votre client a besoin de plus de 12 heures, envisagez d'utiliser lesfonctions de l'étape.

Gestion des erreurs de demandePour gérer les erreurs de demande, utilisez l'une des stratégies suivantes :

• Si vous utilisez unAWSSDK, vous avez déjà automatiquenouvelle tentative et interruption activelogique àvotre disposition. Pour de plus amples informations, veuillez consulterNouvelles tentatives après erreur etinterruptions exponentielles dansAWSdans leRéférence générale Amazon Web Services.

• Si vous n'utilisez pas leAWSFonctions du kit SDK pour les interférences exponentielles et la nouvelletentative, patientez (par exemple 200 ms) avant de réessayer leReceiveMessageaprès avoir reçu aucunmessage, un délai d'expiration ou un message d'erreur d'Amazon SQS. Pour permettre une utilisationultérieure de ReceiveMessage qui donne les mêmes résultats, patientez plus longtemps (par exemple,400 ms).

Configuration de l'interrogation longueLorsque le temps d'attente pour leReceiveMessageL'action de l'API est supérieure à 0,interrogationlongueest en vigueur. Le temps d'attente maximal de l'interrogation est de 20 secondes. L'attente activede longue durée permet de réduire le coût d'utilisation d'Amazon SQS en éliminant les réponses vides(lorsqu'il n'y a aucun message disponible pour unReceiveMessage) et les fausses réponses vides(lorsque les messages sont disponibles dans la file d'attente, mais ne sont pas inclus dans une réponse).Pour plus d'informations, consultez Interrogation courte et longue d'Amazon SQS (p. 45).

Pour un traitement optimal des message, utilisez les stratégies suivantes :

• Dans la plupart des cas, vous pouvez définir le délai d'attente ReceiveMessage à 20 secondes. Si undélai de 20 secondes est trop long pour votre application, définissez un délai d'attente ReceiveMessageplus court (1 seconde au minimum). Si vous n'utilisez pas unAWSSDK pour accéder à Amazon SQS, ousi vous configurez unAWSPour avoir un délai d'attente plus court, vous devrez peut-être modifier le clientAmazon SQS pour autoriser des demandes plus longues ou utiliser un délai d'attente plus court pourl'attente active de longue durée.

• Si vous implémentez l'attente active de longue durée pour plusieurs files d'attente, utilisez un thread pourchacune d'elles plutôt qu'un seul thread pour toutes les files d'attente. L'utilisation d'un seul thread pourchaque file d'attente permet à votre application de traiter les messages de chacune des files d'attentedès qu'ils sont disponibles. En revanche, en utilisant un seul thread pour l'interrogation de plusieursfiles d'attente peut mettre votre application dans l'incapacité de traiter les messages disponibles dansd'autres files d'attente lorsque l'application attend (pendant une durée pouvant atteindre 20 secondes) lafile d'attente qui ne comporte aucun message.

60

Page 67: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurUtilisation des messages

Important

Pour éviter les erreurs HTTP, assurez-vous que le temps d'attente de réponse HTTPpourReceiveMessageest plus longue que laWaitTimeSeconds  Paramètre . Pour de plusamples informations, veuillez consulter ReceireMessage.

Capture des messages problématiquesPour capturer tous les messages qui ne peuvent pas être traités et collecter des métriques exponentiellesde CloudWatch, configurez unFile d'attente de lettres mortes (p. 47).

• La stratégie de redirection redirige les messages vers une file d'attente de lettres mortes lorsque la filed'attente source ne parvient pas à traiter un message après un nombre de tentatives spécifique.

• L'utilisation d'une file d'attente de lettres mortes limite le nombre de messages et réduit la possibilitéd'être exposé à des messages de type « poison pill » (messages reçus mais ne pouvant pas être traités).

• L'inclusion d'un message de type « poison pill » dans une file d'attente peut fausserleApproximateAgeOfOldestMessage (p. 158)métrique CloudWatch en indiquant un âge incorrectdu message poison pill. La configuration d'une file d'attente de lettres mortes contribue à éviter lesfausses alarmes lors de l'utilisation de cette métrique.

Configuration de la conservation en file d'attente de lettres mortesL'expiration d'un message est toujours basée sur son horodatage d'origine de la file d'attente. Lorsqu'unmessage est déplacé vers une file d'attente de lettres mortes, l'horodatage de la file d'attente estinchangé. La .ApproximateAgeOfOldestMessageindique le moment où le message a été déplacédans la file d'attente de lettres mortes,paslorsque le message a été envoyé à l'origine. Par exemple,supposons qu'un message passe 1 jour dans la file d'attente d'origine avant d'être déplacé versune file d'attente de lettres mortes. Si la période de rétention de la file d'attente des lettres mortesest de 4 jours, le message est supprimé de la file d'attente des lettres mortes au bout de 3 jours etleApproximateAgeOfOldestMessageest de 3 jours. Par conséquent, il est recommandé de toujoursdéfinir la période de rétention d'une file d'attente de lettres mortes pour qu'elle soit plus longue que lapériode de rétention de la file d'attente d'origine.

Éviter le traitement de message incohérentAmazon SQS est un système distribué. Il est donc possible qu'un consommateur ne reçoive pas demessage, même lorsque Amazon SQS marque le message comme remis lors d'un retour réussi àpartir d'unReceiveMessageappel de méthode API. Dans ce cas, Amazon SQS enregistre le messagetel qu'il a été remis au moins une fois, bien que le consommateur ne l'ait jamais reçu. Étant donnéqu'aucune tentative supplémentaire de remise de messages n'est effectuée dans ces conditions, nousne recommandons pas de définir le nombre maximal de réceptions sur 1 pour une file d'attente de lettresmortes (p. 47).

Implémentation de systèmes de demande-réponseLors de l'implémentation d'un système de demande-réponse ou d'appel de procédure éloigné (RPC), ayezles bonnes pratiques suivantes à l'esprit :

• Ne créez pas des files d'attente de réponses par message. Créez plutôt des files d'attente de réponseau démarrage, par producteur, et utilisez un attribut de message d'ID de corrélation pour mapper lesréponses aux demandes.

• Ne permettez pas à vos producteurs de partager des files d'attente de réponses. Un producteur risqueraitde recevoir des messages de réponse destinés à un autre producteur.

61

Page 68: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurRéduction des coûts

Pour plus d'informations sur l'implémentation du modèle demande-réponse à l'aide du client de file d'attentetemporaire, consultez Modèle de messagerie demande-réponse (files d'attente virtuelles) (p. 55).

Réduction des coûts Amazon SQSLes bonnes pratiques suivantes peuvent vous aider à réduire les coûts et à tirer parti d'une potentielleréduction des coûts supplémentaires et d'une réponse quasi-instantanée.

Actions de message par lotsAfin de réduire les coûts, regroupez vos actions de message :

• Pour envoyer, recevoir et supprimer des messages, et modifier le délai de visibilité de plusieursmessages en une seule opération, utilisez leActions de l'API par lots Amazon SQS (p. 174).

• Pour combiner la mise en tampon côté client avec le traitement par lots des demandes, utilisez l'attenteactive de longue durée avec le client asynchrone mis en tampon (p. 175) inclus dans le kit AWS SDKfor Java.

Note

Le client asynchrone tampon Amazon SQS ne prend actuellement pas en charge les filesd'attente FIFO.

Utilisation du mode d'interrogation approprié• L'attente active de longue durée vous permet de consommer des messages de votre file d'attente

Amazon SQS dès qu'ils sont disponibles.• Pour réduire le coût d'utilisation d'Amazon SQS et le nombre de réceptions vides dans une file

d'attente vide (réponses à laReceiveMessagequi ne renvoient aucun message), activez l'interrogationlongue. Pour de plus amples informations, veuillez consulterAttente active de longue durée d'AmazonSQS (p. 45).

• Pour accroître l'efficacité lors de l'attente active de plusieurs threads avec plusieurs réceptions,diminuez le nombre de threads.

• Dans la plupart des cas, l'attente active de longue durée est préférable à celle de courte durée.• L'attente active de courte durée renvoie des réponses immédiatement, même si la file d'attente Amazon

SQS interrogée est vide.• Pour satisfaire aux exigences d'une application qui attend des réponses immédiates à la demandeReceiveMessage, utilisez l'attente active de courte durée.

• L'attente active de courte durée coûte le même prix que l'attente active de longue durée.

Passer d'une file d'attente Amazon SQS Standard àune file d'attente FIFOSi vous ne définissez pas leDelaySecondsSur chaque message, vous pouvez passer à une file d'attenteFIFO en fournissant un ID de groupe de messages pour chaque message envoyé.

Pour plus d'informations, consultez Passage d'une file d'attente standard à une file d'attente FIFO (p. 32).

62

Page 69: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurRecommandations supplémentaires

pour les files d'attente FIFO

Recommandations supplémentaires pour les filesd'attente FIFO Amazon SQS

Les bonnes pratiques suivantes peuvent vous permettre d'utiliser l'ID de déduplication dumessage et l'ID de groupe de messages de façon optimale. Pour plus d'informations, consultezle .SendMessageandSendMessageBatchAction dans le documentAPI Amazon Simple Queue Service.

Rubriques• Utilisation de l'ID de déduplication Amazon SQS (p. 63)• Utilisation de l'ID de groupe de messages Amazon SQS (p. 64)• Utilisation de l'ID de tentative de demande Amazon SQS (p. 65)

Utilisation de l'ID de déduplication Amazon SQSL'ID de déduplication du message est le jeton utilisé pour la déduplication des messages envoyés. Si unmessage avec un ID de déduplication de message particulier est envoyé avec succès, tous les messagesenvoyés avec le même ID de déduplication de message sont acceptés avec succès, mais ne sont pasremis pendant l'intervalle de déduplication de 5 minutes.

Note

La déduplication des messages s'applique à une file d'attente entière et non à des groupes demessages individuels.Amazon SQS continue de suivre l'ID de déduplication du message même après la réception et lasuppression du message.

Fourniture de l'ID de déduplication du messageLe producteur doit fournir des valeurs d'ID de déduplication du message pour chaque message dans lesscénarios suivants :

• Messages envoyés avec des corps identiques qu'Amazon SQS doit traiter comme uniques.• Messages envoyés avec un contenu identique, mais des attributs différents qu'Amazon SQS doit traiter

comme uniques.• Messages envoyés avec un contenu différent (par exemple, le nombre de tentatives inclus dans le corps

du message) qu'Amazon SQS doit traiter comme des doublons.

Activation de la déduplication pour un système producteur/consommateur uniqueSi vous avez un seul producteur et un seul consommateur, et que les messages sont uniques parcequ'un ID de message spécifique à l'application est inclus dans le corps du message, suivez ces bonnespratiques :

• Activez la déduplication basée sur le contenu pour la file d'attente (chacun de vos messages a un corpsunique). Le producteur peut ignorer l'ID de déduplication du message.

• Même si le consommateur n'est pas tenu de fournir un ID de tentative de demande de réception pourchaque demande, il vaut mieux le faire, car cela permet aux séquences échec-réessayer de s'exécuterplus rapidement.

• Vous pouvez réessayer d'envoyer ou de recevoir des demandes, car elles n'interfèrent pas avec l'ordredes messages dans les files d'attente FIFO.

63

Page 70: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurUtilisation de l'ID de groupe de messagerie

Conception de scénarios de récupération après une panneLe processus de déduplication dans les files d'attente FIFO est prioritaire. Lors de la conception del'application, assurez-vous que le producteur et le consommateur peuvent récupérer en cas de panne duclient ou du réseau.

• Le producteur doit connaître l'intervalle de déduplication de la file d'attente. Amazon SQS disposed'unminimumIntervalle de déduplication de 5 minutes. De nouvelles tentatives de demandes deSendMessage après expiration du délai de déduplication peuvent introduire des messages en doubledans la file d'attente. Par exemple, un appareil mobile dans une voiture envoie des messages dont l'ordreest important. Si la voiture perd la connectivité cellulaire pendant un certain temps avant de recevoir uneconfirmation, une nouvelle tentative de la demande après la récupération de la connectivité cellulairepeut créer un doublon.

• Le consommateur doit disposer d'un délai de visibilité réduisant le risque de ne pas pouvoir traiter desmessages avant l'expiration de ce délai. Vous pouvez étendre le délai de visibilité pendant que lesmessages sont en cours de traitement en appelant l'action ChangeMessageVisibility. Toutefois,si le délai de visibilité expire, un autre consommateur peut immédiatement commencer à traiter lesmessages, un message étant alors traité plusieurs fois. Pour éviter ce scénario, configurez une filed'attente de lettres mortes (p. 47).

Utilisation des délais de visibilitéPour des performances optimales, définissez le délai de visibilité (p. 50) sur une valeur supérieure audélai d'attente des opérations de lecture de SDK AWS. Cela s'applique à l'utilisation de l'action d'APIReceiveMessage avec l'attente active de courte durée (p. 45) ou l'attente active de longue durée (p. 45).

Utilisation de l'ID de groupe de messages AmazonSQSL'ID du groupe de messages est la balise qui spécifie qu'un message appartient à un groupe de messagesspécifique. Les messages appartenant au même groupe de messages sont toujours traités un par un,dans un ordre strict par rapport au groupe de messages (toutefois, les messages appartenant à différentsgroupes de messages peuvent être traités en désordre).

Entrelacement de plusieurs groupes de messages classésPour entrelacer plusieurs groupes de messages classés au sein d'une seule file d'attente FIFO, utilisezles valeurs d'ID de groupe de messages (par exemple, les données de session de plusieurs utilisateurs).Dans ce scénario, plusieurs consommateurs peuvent traiter la file d'attente, mais les données de sessionde chaque utilisateur sont traitées selon la méthode FIFO.

Note

Lorsque les messages qui appartiennent à un ID de groupe de messages particulier sontinvisibles, aucun autre consommateur ne peut traiter les messages avec le même ID de groupe demessages.

Éviter de traiter les doublons dans un système avec plusieursproducteurs/consommateursPour éviter de traiter les messages en double dans un système avec plusieurs producteurs etconsommateurs où le débit et la latence sont plus importants que le classement, le producteur doit générerun ID de groupe de messages unique pour chaque message.

64

Page 71: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurUtilisation de l'ID de tentative de demande de réception

Note

Dans ce scénario, les doubles sont supprimés. Toutefois, le classement des messages ne peutpas être garanti.Tout scénario avec plusieurs producteurs et consommateurs augmente le risque de diffuser parinadvertance un message dupliqué, si aucun employé ne traite le message pendant le délai devisibilité et que celui devient accessible à un autre employé.

Éviter d'avoir un nombre important de messages en attente avecle même ID de groupe de messagesPour les files d'attente FIFO, il peut y avoir 20 000 messages en vol (reçus d'une file d'attente par unconsommateur, mais pas encore supprimés de la file d'attente). Si vous atteignez ce quota, AmazonSQS ne renvoie aucun message d'erreur. Une file d'attente FIFO examine les 20 premiers messagespour déterminer les groupes de messages disponibles. Cela signifie que si vous avez un nombre demessages en attente dans un seul groupe de messages, vous ne pouvez pas utiliser les messages enattente ultérieurement tant que vous n'avez pas traité avec succès les messages en attente.

Note

Des messages en attente ayant le même ID de groupe de messages peuvent s'accumuler à caused’un consommateur qui ne parvient pas à traiter un message. Des problèmes de traitement desmessages peuvent se produire en raison d'un problème lié au contenu d'un message ou d'unproblème technique avec le consommateur.Pour déplacer les messages qui ne peuvent pas être traités de manière répétée et pour débloquerle traitement des autres messages ayant le même ID de groupe de messages, envisagez deconfigurer une stratégie de file d'attente de lettres mortes (p. 47).

Évitez de réutiliser le même ID de groupe de messages avec desfiles d'attente virtuellesPour empêcher les messages ayant le même ID de groupe de messages envoyés à différentsFilesd'attente virtuelles (p. 54)Avec la même file d'attente d'hôte de se bloquer mutuellement, évitez de réutiliserle même ID de groupe de messages avec des files d'attente virtuelles.

Utilisation de l'ID de tentative de demande AmazonSQSL'ID de tentative de demande de réception est le jeton utilisé pour la déduplicationdeReceiveMessageAppels.

Pendant une longue inactivité du réseau qui entraîne des problèmes de connectivité entre le kit SDK etAmazon SQS, il est recommandé de fournir l'ID de tentative de demande de réception et de réessayer avecle même ID de tentative de demande de réception en cas d'échec de l'opération du kit SDK.

65

Page 72: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurUtilisation du chiffrement côté serveur

Exemples de SDK Java AmazonSQS

Vous pouvez utiliser le pluginAWS SDK for JavaPour créer des applications Java qui interagissent avecAmazon Simple Queue Service (Amazon SQS) et d'autresAWSServices . Pour installer et configurer le kitSDK, veuillez consulter les informations relatives à laMise en routedans leAWS SDK for Java 2.xManuel dudéveloppeur.

Pour obtenir des exemples d'opérations de base de file d'attente Amazon SQS, telles que la créationd'une file d'attente ou l'envoi d'un message, consultezUtilisation des files d'attente de messages AmazonSQSdans leAWS SDK for Java 2.xManuel du développeur.

Les exemples de cette rubrique illustrent d'autres fonctionnalités Amazon SQS, telles que le chiffrementcôté serveur (SSE), les balises de répartition des coûts et les attributs de message.

Rubriques• Utilisation du chiffrement côté serveur (SSE) (p. 66)• Configuration des balises pour une file d'attente (p. 68)• Attributs de message (p. 69)• Gestion de gros messages Amazon SQS à l'aide d'Amazon S3 (p. 71)

Utilisation du chiffrement côté serveur (SSE)Vous pouvez utiliser le pluginAWS SDK for JavaPour ajouter le chiffrement côté serveur (SSE) à unefile d'attente Amazon SQS. Chaque file d'attente utilise unAWS Key Management Service(AWS KMS)pour générer les clés de chiffrement des données. Cet exemple utilise leAWSCMK géré pour AmazonSQS. Pour plus d'informations sur l'utilisation du SSE et le rôle du CMK, consultezChiffrement aurepos (p. 112).

Ajout de SSE à une file d'attente existantePour activer le chiffrement côté serveur pour une file d'attente existante, utilisezleSetQueueAttributespour définir la méthodeKmsMasterKeyIdAttribut.

L'exemple de code suivant définit la clé principale commeAWSCMK géré pour Amazon SQS. L'exempledéfinit également lepériode de réutilisation des clés principales (p. 113)à 140 secondes.

Avant d'exécuter l'exemple de code, assurez-vous d'avoir défini votreAWSInformations d'identification .Pour de plus amples informations, veuillez consulterConfigurationAWSPouvoirs et région pour ledéveloppementdans leAWS SDK for Java 2.xManuel du développeur.

// Create an SqsClient for the specified Region.SqsClient sqsClient = SqsClient.builder().region(Region.US_WEST_1).build();

// Get the URL of your queue.String myQueueName = "my queue"; GetQueueUrlResponse getQueueUrlResponse =

66

Page 73: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurDésactivation du SSE pour une file d'attente

sqsClient.getQueueUrl(GetQueueUrlRequest.builder().queueName(myQueueName).build());String queueUrl = getQueueUrlResponse.queueUrl();

// Create a hashmap for the attributes. Add the key alias and reuse period to the hashmap.HashMap<QueueAttributeName, String> attributes = new HashMap<QueueAttributeName, String>();final String kmsMasterKeyAlias = "alias/aws/sqs"; // the alias of the AWS managed CMK for Amazon SQS.attributes.put(QueueAttributeName.KMS_MASTER_KEY_ID, kmsMasterKeyAlias);attributes.put(QueueAttributeName.KMS_DATA_KEY_REUSE_PERIOD_SECONDS, "140");

// Create the SetQueueAttributesRequest.SetQueueAttributesRequest set_attrs_request = SetQueueAttributesRequest.builder() .queueUrl(queueUrl) .attributes(attributes) .build(); sqsClient.setQueueAttributes(set_attrs_request);

Désactivation du SSE pour une file d'attentePour désactiver le chiffrement côté serveur pour une file d'attente existante, définissezleKmsMasterKeyIdattribut à une chaîne vide à l'aide de l'attributSetQueueAttributesMéthode.

Important

null n'est pas une valeur valide pour KmsMasterKeyId.

Création d'une file d'attente avec SSEPour activer SSE lorsque vous créez la file d'attente, ajoutez leKmsMasterKeyIdAttribut àl'attributCreateQueueMéthode d'API.

L'exemple suivant crée une nouvelle file d'attente avec SSE activée. La file d'attente utiliselaAWSCMK géré pour Amazon SQS. L'exemple définit également lepériode de réutilisation des clésprincipales (p. 113)à 160 secondes.

Avant d'exécuter l'exemple de code, assurez-vous d'avoir défini votreAWSInformations d'identification .Pour de plus amples informations, veuillez consulterConfigurationAWSPouvoirs et région pour ledéveloppementdans leAWS SDK for Java 2.xManuel du développeur.

// Create an SqsClient for the specified Region.SqsClient sqsClient = SqsClient.builder().region(Region.US_WEST_1).build();

// Create a hashmap for the attributes. Add the key alias and reuse period to the hashmap.HashMap<QueueAttributeName, String> attributes = new HashMap<QueueAttributeName, String>();final String kmsMasterKeyAlias = "alias/aws/sqs"; // the alias of the AWS managed CMK for Amazon SQS.attributes.put(QueueAttributeName.KMS_MASTER_KEY_ID, kmsMasterKeyAlias);attributes.put(QueueAttributeName.KMS_DATA_KEY_REUSE_PERIOD_SECONDS, "140");

// Add the attributes to the CreateQueueRequest.CreateQueueRequest createQueueRequest = CreateQueueRequest.builder() .queueName(queueName) .attributes(attributes) .build();sqsClient.createQueue(createQueueRequest);

67

Page 74: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurExtraction des attributs SSE

Extraction des attributs SSEPour plus d'informations sur la récupération des attributs de file d'attente, consultezExemplesdansleRéférence d'API Amazon Simple Queue Service.

Pour récupérer l'ID CMK ou la période de réutilisation de la clé de données pour unefile d'attente particulière, exécutez la commandeGetQueueAttributeset récupérez laméthodeKmsMasterKeyIdandKmsDataKeyReusePeriodSecondsvaleurs.

Configuration des balises pour une file d'attenteUtilisez des balises de répartition des coûts pour organiser et identifier vos files d'attente Amazon SQS. Lesexemples suivants montrent comment configurer les balises à l'aide de l'AWS SDK for Java. Pour de plusamples informations, veuillez consulter Balises de répartition des coûts Amazon SQS (p. 44).

Avant d'exécuter l'exemple de code, assurez-vous d'avoir défini votreAWSInformations d'identification .Pour de plus amples informations, veuillez consulterConfigurationAWSPouvoirs et région pour ledéveloppementdans leAWS SDK for Java 2.xManuel du développeur.

Étiquettes de listePour répertorier les balises pour une file d'attente, utilisez l'ListQueueTagsMéthode.

// Create an SqsClient for the specified region.SqsClient sqsClient = SqsClient.builder().region(Region.US_WEST_1).build();

// Get the queue URL.String queueName = "MyStandardQ1";GetQueueUrlResponse getQueueUrlResponse = sqsClient.getQueueUrl(GetQueueUrlRequest.builder().queueName(queueName).build());String queueUrl = getQueueUrlResponse.queueUrl();

// Create the ListQueueTagsRequest.final ListQueueTagsRequest listQueueTagsRequest = ListQueueTagsRequest.builder().queueUrl(queueUrl).build();

// Retrieve the list of queue tags and print them.final ListQueueTagsResponse listQueueTagsResponse = sqsClient.listQueueTags(listQueueTagsRequest);System.out.println(String.format("ListQueueTags: \tTags for queue %s are %s.\n", queueName, listQueueTagsResponse.tags() ));

Ajout ou modification de balisesPour ajouter ou mettre à jour des valeurs de balise pour une file d'attente, utilisez l'outilTagQueueMéthode.

// Create an SqsClient for the specified Region.SqsClient sqsClient = SqsClient.builder().region(Region.US_WEST_1).build();

// Get the queue URL.String queueName = "MyStandardQ1";GetQueueUrlResponse getQueueUrlResponse = sqsClient.getQueueUrl(GetQueueUrlRequest.builder().queueName(queueName).build());

68

Page 75: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurSuppression de balises

String queueUrl = getQueueUrlResponse.queueUrl();

// Build a hashmap of the tags.final HashMap<String, String> addedTags = new HashMap<>(); addedTags.put("Team", "Development"); addedTags.put("Priority", "Beta"); addedTags.put("Accounting ID", "456def");

//Create the TagQueueRequest and add them to the queue.final TagQueueRequest tagQueueRequest = TagQueueRequest.builder() .queueUrl(queueUrl) .tags(addedTags) .build();sqsClient.tagQueue(tagQueueRequest);

Suppression de balisesPour supprimer une ou plusieurs balises de la file d'attente, utilisez l'UntagQueueMéthode. L'exemplesuivant supprime l'Accounting IDbalise.

// Create the UntagQueueRequest.final UntagQueueRequest untagQueueRequest = UntagQueueRequest.builder() .queueUrl(queueUrl) .tagKeys("Accounting ID") .build(); // Remove the tag from this queue.sqsClient.untagQueue(untagQueueRequest);

Attributs de messageVous pouvez inclure des métadonnées structurées (telles que des horodatages, des données géospatiales,des signatures et des identifiants) avec des messages avecAttributs de message. Pour de plus amplesinformations, veuillez consulter Attributs de message Amazon SQS (p. 40).

Avant d'exécuter l'exemple de code, assurez-vous d'avoir défini votreAWSInformations d'identification .Pour de plus amples informations, veuillez consulterConfigurationAWSLes pouvoirs et la région dudéveloppementdans leAWS SDK for Java 2.xManuel du développeur.

Définition des attributsPour définir un attribut pour un message, ajoutez le code suivant, qui utilise laméthodeMessageAttributeValueType de données. Pour plus d'informations, consultez Composantsdes attributs de message (p. 41) et Types de données d'attribut de message (p. 41).

LeAWS SDK for Javacalcule automatiquement les totaux de contrôle de corps de message et d'attributde message, puis les compare avec les données renvoyées par Amazon SQS. Pour plus d'informations,consultez le .AWS SDK for Java 2.xManuel du développeurandCalcul de la valeur de hachage MD5 pourles attributs de message (p. 42)pour d'autres langages de programmation.

String

Cet exemple définit un attribut String nommé Name avec la valeur Jane.

69

Page 76: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurDéfinition des attributs

final Map<String, MessageAttributeValue> messageAttributes = new HashMap<>();messageAttributes.put("Name", new MessageAttributeValue().withDataType("String").withStringValue("Jane"));

Number

Cet exemple définit un attribut Number nommé AccurateWeight avec la valeur230.000000000000000001.

final Map<String, MessageAttributeValue> messageAttributes = new HashMap<>();messageAttributes.put("AccurateWeight", new MessageAttributeValue().withDataType("Number").withStringValue("230.000000000000000001"));

Binary

Cet exemple définit un attribut Binary nommé ByteArray avec la valeur d'une matrice de 10 octetsnon initialisée.

final Map<String, MessageAttributeValue> messageAttributes = new HashMap<>();messageAttributes.put("ByteArray", new MessageAttributeValue().withDataType("Binary").withBinaryValue(ByteBuffer.wrap(new byte[10])));

String (custom)

Cet exemple définit l'attribut personnalisé String.EmployeeId nommé EmployeeId avec la valeurABC123456.

final Map<String, MessageAttributeValue> messageAttributes = new HashMap<>();messageAttributes.put("EmployeeId", new MessageAttributeValue().withDataType("String.EmployeeId").withStringValue("ABC123456"));

Number (custom)

Cet exemple définit l'attribut personnalisé Number.AccountId nommé AccountId avec la valeur000123456.

final Map<String, MessageAttributeValue> messageAttributes = new HashMap<>();messageAttributes.put("AccountId", new MessageAttributeValue().withDataType("Number.AccountId").withStringValue("000123456"));

Note

Comme le type de base de données estNumber, leReceiveMessageméthoderetourne123456.

Binary (custom)

Cet exemple définit l'attribut personnalisé Binary.JPEG nommé ApplicationIcon avec la valeurd'une matrice de 10 octets non initialisée.

final Map<String, MessageAttributeValue> messageAttributes = new HashMap<>();messageAttributes.put("ApplicationIcon", new MessageAttributeValue().withDataType("Binary.JPEG")

70

Page 77: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurEnvoi d'un message avec des attributs

.withBinaryValue(ByteBuffer.wrap(new byte[10])));

Envoi d'un message avec des attributsCet exemple montre comment ajouter les attributs auSendMessageRequestAvant d'envoyer le message.

// Send a message with an attribute.final SendMessageRequest sendMessageRequest = new SendMessageRequest();sendMessageRequest.withMessageBody("This is my message text.");sendMessageRequest.withQueueUrl(myQueueUrl);sendMessageRequest.withMessageAttributes(messageAttributes);sqs.sendMessage(sendMessageRequest);

Important

Si vous envoyez un message à une file d'attente FIFO (premier entré, premier sorti), assurez-vousque le kitsendMessageMéthode exécutéeAprèsVous fournissez l'ID de groupe de messages.Si vous utilisez le pluginSendMessageBatchméthode au lieu deSendMessage, vous devezspécifier les attributs de message pour chaque message du lot.

Gestion de gros messages Amazon SQS à l'aided'Amazon S3

Pour gérer les messages volumineux Amazon Simple Queue Service (Amazon SQS), vous pouvez utiliserAmazon Simple Storage Service (Amazon S3) et Amazon SQS Extended Client Library pour Java. Celaest particulièrement utile pour le stockage et la consommation de messages jusqu'à 2 Go. À moins quevotre application ne nécessite la création répétitive de files d'attente qui restent inactives ou le stockagede grandes quantités de données dans vos files d'attente, pensez à utiliser Amazon S3 pour stocker vosdonnées.

Vous pouvez utiliser la bibliothèque Amazon SQS Extended Client pour Java pour réaliser les opérationssuivantes :

• Spécifier si les messages sont toujours stockés dans Amazon S3 ou seulement lorsque leur tailledépasse 256 Ko

• Envoyer un message qui fait référence un objet de message unique stocké dans un compartiment S3• Récupère l'objet de message à partir d'un compartiment S3• Supprimer l'objet de message dans un compartiment S3

Vous pouvez utiliser Amazon SQS Extended Client Library for Java pour gérer les messages AmazonSQS à l'aide d'Amazon S3uniquementavec leAWS SDK for Java. Vous ne pouvez pas réaliser cetteopération avecAWS CLI, la console Amazon SQS, l'API HTTP Amazon SQS ou l'un desOTHER AWSKitsde développement logiciel.

LeSDK pour Javaet Amazon SQS Extended Client Library pour Java nécessitent le kit de développementJ2SE 8.0 ou version ultérieure.

PrerequisitesL'exemple suivant utilise le kit SDK AWS pour Java. Pour installer et configurer le kit SDK, veuillezconsulter les informations relatives àConfiguration de l'AWSSDK pour Javadans leAWS SDK forJavaManuel du développeur.

71

Page 78: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurExemple : Utilisation d'Amazon S3 pour gérer

les messages Amazon SQS volumineux

Avant d'exécuter l'exemple de code, configurez vos informations d'identification AWS. Pour de plus amplesinformations, veuillez consulterConfigurationAWSPouvoirs et région pour le développementdans leAWSSDK for JavaManuel du développeur.

Exemple : Utilisation d'Amazon S3 pour gérer lesmessages Amazon SQS volumineuxL'exemple suivant crée un compartiment Amazon S3 avec un nom aléatoire et ajoute une règle de cyclede vie pour supprimer définitivement les objets au bout de 14 jours. Il crée également une file d'attentenomméeMyQueueet envoie un message aléatoire qui est stocké dans un compartiment S3 et dont la filed'attente dépasse 256 Ko. Enfin, le code récupère le message, renvoie des informations à ce sujet, puis lesupprime, ainsi que la file d'attente et le compartiment.

/* * Copyright 2010-2021 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. * A copy of the License is located at * * https://aws.amazon.com/apache2.0 * * or in the "license" file accompanying this file. This file is distributed * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either * express or implied. See the License for the specific language governing * permissions and limitations under the License. * */

import com.amazon.sqs.javamessaging.AmazonSQSExtendedClient;import com.amazon.sqs.javamessaging.ExtendedClientConfiguration;import com.amazonaws.services.s3.AmazonS3;import com.amazonaws.services.s3.AmazonS3ClientBuilder;import com.amazonaws.services.s3.model.*;import com.amazonaws.services.sqs.AmazonSQS;import com.amazonaws.services.sqs.AmazonSQSClientBuilder;import com.amazonaws.services.sqs.model.*;import org.joda.time.DateTime;import org.joda.time.format.DateTimeFormat;

import java.util.Arrays;import java.util.List;import java.util.UUID;

public class SQSExtendedClientExample {

// Create an Amazon S3 bucket with a random name.private final static String S3_BUCKET_NAME = UUID.randomUUID() + "-" + DateTimeFormat.forPattern("yyMMdd-hhmmss").print(new DateTime());

public static void main(String[] args) {

/* * Create a new instance of the builder with all defaults (credentials * and region) set automatically. For more information, see * Creating Service Clients in the AWS SDK for Java Developer Guide. */ final AmazonS3 s3 = AmazonS3ClientBuilder.defaultClient();

/* * Set the Amazon S3 bucket name, and then set a lifecycle rule on the * bucket to permanently delete objects 14 days after each object's

72

Page 79: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurExemple : Utilisation d'Amazon S3 pour gérer

les messages Amazon SQS volumineux

* creation date. */ final BucketLifecycleConfiguration.Rule expirationRule = new BucketLifecycleConfiguration.Rule(); expirationRule.withExpirationInDays(14).withStatus("Enabled"); final BucketLifecycleConfiguration lifecycleConfig = new BucketLifecycleConfiguration().withRules(expirationRule);

// Create the bucket and allow message objects to be stored in the bucket. s3.createBucket(S3_BUCKET_NAME); s3.setBucketLifecycleConfiguration(S3_BUCKET_NAME, lifecycleConfig); System.out.println("Bucket created and configured.");

/* * Set the Amazon SQS extended client configuration with large payload * support enabled. */ final ExtendedClientConfiguration extendedClientConfig = new ExtendedClientConfiguration() .withLargePayloadSupportEnabled(s3, S3_BUCKET_NAME);

final AmazonSQS sqsExtended = new AmazonSQSExtendedClient(AmazonSQSClientBuilder .defaultClient(), extendedClientConfig);

/* * Create a long string of characters for the message object which will * be stored in the bucket. */ int stringLength = 300000; char[] chars = new char[stringLength]; Arrays.fill(chars, 'x'); final String myLongString = new String(chars);

// Create a message queue for this example. final String QueueName = "MyQueue" + UUID.randomUUID().toString(); final CreateQueueRequest createQueueRequest = new CreateQueueRequest(QueueName); final String myQueueUrl = sqsExtended .createQueue(createQueueRequest).getQueueUrl(); System.out.println("Queue created.");

// Send the message. final SendMessageRequest myMessageRequest = new SendMessageRequest(myQueueUrl, myLongString); sqsExtended.sendMessage(myMessageRequest); System.out.println("Sent the message.");

// Receive the message. final ReceiveMessageRequest receiveMessageRequest = new ReceiveMessageRequest(myQueueUrl); List<Message> messages = sqsExtended .receiveMessage(receiveMessageRequest).getMessages();

// Print information about the message. for (Message message : messages) { System.out.println("\nMessage received."); System.out.println(" ID: " + message.getMessageId()); System.out.println(" Receipt handle: " + message.getReceiptHandle()); System.out.println(" Message body (first 5 characters): " + message.getBody().substring(0, 5)); }

// Delete the message, the queue, and the bucket. final String messageReceiptHandle = messages.get(0).getReceiptHandle(); sqsExtended.deleteMessage(new DeleteMessageRequest(myQueueUrl,

73

Page 80: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurExemple : Utilisation d'Amazon S3 pour gérer

les messages Amazon SQS volumineux

messageReceiptHandle)); System.out.println("Deleted the message.");

sqsExtended.deleteQueue(new DeleteQueueRequest(myQueueUrl)); System.out.println("Deleted the queue.");

deleteBucketAndAllContents(s3); System.out.println("Deleted the bucket.");}

private static void deleteBucketAndAllContents(AmazonS3 client) {

ObjectListing objectListing = client.listObjects(S3_BUCKET_NAME);

while (true) { for (S3ObjectSummary objectSummary : objectListing .getObjectSummaries()) { client.deleteObject(S3_BUCKET_NAME, objectSummary.getKey()); }

if (objectListing.isTruncated()) { objectListing = client.listNextBatchOfObjects(objectListing); } else { break; } }

final VersionListing list = client.listVersions( new ListVersionsRequest().withBucketName(S3_BUCKET_NAME));

for (S3VersionSummary s : list.getVersionSummaries()) { client.deleteVersion(S3_BUCKET_NAME, s.getKey(), s.getVersionId()); }

client.deleteBucket(S3_BUCKET_NAME);}}

74

Page 81: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurPrerequisites

Utilisation de JMS et d'Amazon SQSLa bibliothèque Amazon SQS est une interface Java Message Service (JMS) pour Amazon SQS qui vouspermet de tirer parti d'Amazon SQS dans des applications qui utilisent déjà JMS. L'interface vous permetd'utiliser Amazon SQS en tant que le fournisseur JMS avec peu de changements de code. Avec le kitAWSSDK for JavaLa bibliothèque Amazon SQS vous permet de créer des connexions et des sessions JMS,ainsi que des producteurs et des consommateurs qui envoient et reçoivent ses messages de files d'attenteAmazon SQS.

La bibliothèque prend en charge l'envoi et la réception des messages dans une file d'attente (modèle pointà point JMS) selon la spécification JMS 1.1. Elle prend également en charge l'envoi de messages de texte,d'octets ou d'objets de façon synchrone aux files d'attente Amazon SQS. ainsi que la réception d'objets defaçon synchrone ou asynchrone.

Pour plus d'informations sur les fonctionnalités de la bibliothèque Amazon SQS compatibles avec laspécification JMS 1.1, consultezImplémentations JMS 1.1 prises en charge (p. 97)et l'FAQ AmazonSQS.

Rubriques• Prerequisites (p. 75)• Démarrer avec la bibliothèque de messagerie Java Amazon SQS (p. 76)• Utilisation du client Amazon SQS Java Message Service (JMS) avec d'autres clients Amazon

SQS (p. 82)• Exemple d'utilisation de Java pour l'utilisation de JMS avec des files d'attente Amazon SQS

Standard (p. 83)• Implémentations JMS 1.1 prises en charge (p. 97)

PrerequisitesAvant de commencer, les prérequis suivants doivent être remplis :

• Kit de développement logiciel pour Java

Il existe deux façons d'inclure le SDK for Java dans votre projet :• Téléchargez et installez le SDK for Java.• Utilisez Maven pour obtenir la bibliothèque Amazon SQS Java Messaging.

Note

Le SDK for Java est fourni en tant que dépendance.La .Kit de développement logiciel pour Javaet Amazon SQS Extended Client Library pourJava nécessitent le kit de développement J2SE 8.0 ou version ultérieure.

Pour plus d'informations sur le téléchargement du SDK for Java, consultezKit de développementlogiciel pour Java.

• Bibliothèque de messagerie Java Amazon SQS

Si vous n'utilisez pas Maven, vous devez ajouter le package amazon-sqs-java-messaging-lib.jar au chemin de classe Java. Pour plus d'informations sur le téléchargement de la bibliothèque,consultezBibliothèque de messagerie Java Amazon SQS.

75

Page 82: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurDémarrer avec la bibliothèque de messagerie Java

Note

La bibliothèque de messagerie Java Amazon SQS inclut la prise en charge deMavenet l'Cadrede Spring.Pour obtenir des exemples de code qui utilisent Maven, le framework Spring et la bibliothèqueAmazon SQS Java Messaging, consultezExemple d'utilisation de Java pour l'utilisation de JMSavec des files d'attente Amazon SQS Standard (p. 83).

<dependency> <groupId>com.amazonaws</groupId> <artifactId>amazon-sqs-java-messaging-lib</artifactId> <version>1.0.4</version> <type>jar</type></dependency>

• File d'attente Amazon SQS

Créez une file d'attente à l'aide deAWS Management ConsolePour Amazon SQS, le kitCreateQueueoule client Amazon SQS encapsulé inclus dans la Amazon SQS Java Messaging Library.• Pour plus d'informations sur la création d'une file d'attente avec Amazon SQS à l'aide d'AWS

Management Consoleou leCreateQueueAPI, consultezCréation d'une file d'attente (p. 12).• Pour plus d'informations sur l'utilisation de la bibliothèque de messagerie Java Amazon SQS,

consultezDémarrer avec la bibliothèque de messagerie Java Amazon SQS (p. 76).

Démarrer avec la bibliothèque de messagerie JavaAmazon SQS

Pour commencer à utiliser Java Message Service (JMS) avec Amazon SQS, utilisez les exemples de codede cette section. Les sections suivantes montrent comment créer une connexion et une session JMS, etcomment envoyer et recevoir un message.

L'objet client Amazon SQS enveloppé inclus dans la bibliothèque de messagerie Java Amazon SQS vérifiesi une file d'attente Amazon SQS existe. Si elle n'existe pas, le client la crée.

Création d'une connexion JMS1. Créez une fabrique de connexions et appelez la méthode createConnection par rapport à cette

fabrique.

// Create a new connection factory with all defaults (credentials and region) set automaticallySQSConnectionFactory connectionFactory = new SQSConnectionFactory( new ProviderConfiguration(), AmazonSQSClientBuilder.defaultClient() ); // Create the connection.SQSConnection connection = connectionFactory.createConnection();

La classe SQSConnection étend javax.jms.Connection. Avec les méthodes deconnexion standard JMS, SQSConnection propose des méthodes supplémentaires, commegetAmazonSQSClient et getWrappedAmazonSQSClient. Ces deux méthodes vous permettentd'effectuer des opérations administratives non comprises dans la spécification JMS, telles que la

76

Page 83: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurCréation d'une file d'attente Amazon SQS

création de files d'attente. Cependant, legetWrappedAmazonSQSClientfournit également uneversion encapsulée du client Amazon SQS utilisé par la connexion en cours. Le wrapper convertittoutes les exceptions en JMSException depuis le client, afin d'en faciliter l'utilisation par le codeexistant qui attend des occurrences JMSException.

2. Vous pouvez utiliser les objets client renvoyéspargetAmazonSQSClientandgetWrappedAmazonSQSClientPour effectuer des opérationsadministratives non comprises dans la spécification JMS (par exemple, vous pouvez créer une filed'attente Amazon SQS).

Si votre code existant attend des exceptions JMS, vous devez alors utilisergetWrappedAmazonSQSClient :

• Si vous utilisez getWrappedAmazonSQSClient, l'objet client renvoyé transforme toutes lesexceptions en exceptions JMS.

• Si vous utilisezgetAmazonSQSClient, les exceptions sont toutes des exceptions Amazon SQS.

Création d'une file d'attente Amazon SQSL'objet client encapsulé vérifie s'il existe une file d'attente Amazon SQS.

Si elle n'existe pas, le client la crée. Si la file d'attente existe, la fonction ne renvoie rien. Pour plusd'informations, consultez la section « Création de la file d'attente selon les besoins » section dans l'exempleTextMessageSender.java (p. 85).

Pour créer une file d'attente standard

// Get the wrapped clientAmazonSQSMessagingClientWrapper client = connection.getWrappedAmazonSQSClient(); // Create an SQS queue named MyQueue, if it doesn't already existif (!client.queueExists("MyQueue")) { client.createQueue("MyQueue");}

Pour créer une file d'attente FIFO

// Get the wrapped clientAmazonSQSMessagingClientWrapper client = connection.getWrappedAmazonSQSClient();

// Create an Amazon SQS FIFO queue named MyQueue.fifo, if it doesn't already existif (!client.queueExists("MyQueue.fifo")) { Map<String, String> attributes = new HashMap<String, String>(); attributes.put("FifoQueue", "true"); attributes.put("ContentBasedDeduplication", "true"); client.createQueue(new CreateQueueRequest().withQueueName("MyQueue.fifo").withAttributes(attributes));}

Note

Le nom d'une file d'attente FIFO doit se terminer par le.fifosuffixe.Pour plus d'informations sur l'attribut ContentBasedDeduplication, consultez Traitement enune seule fois (p. 31).

77

Page 84: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurEnvoi de messages de façon synchrone

Envoi de messages de façon synchrone1. Lorsque la connexion et la file d'attente Amazon SQS sous-jacente sont prêtes, créez une session

JMS non traitée avecAUTO_ACKNOWLEDGEMode

// Create the nontransacted session with AUTO_ACKNOWLEDGE modeSession session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);

2. Pour envoyer un SMS à la file d'attente, créez une identité de file d'attente JMS et un producteur demessage.

// Create a queue identity and specify the queue name to the sessionQueue queue = session.createQueue("MyQueue"); // Create a producer for the 'MyQueue'MessageProducer producer = session.createProducer(queue);

3. Créez un SMS et envoyez-le à la file d'attente.

• Pour envoyer un message à une file d'attente standard, vous n'avez pas besoin de définir deparamètres supplémentaires.

// Create the text messageTextMessage message = session.createTextMessage("Hello World!"); // Send the messageproducer.send(message);System.out.println("JMS Message " + message.getJMSMessageID());

• Pour envoyer un message à une file d'attente FIFO, vous devez définir l'ID de groupe de messages.Vous pouvez aussi définir un ID de déduplication de message. Pour plus d'informations, consultezTermes clés (p. 30).

// Create the text messageTextMessage message = session.createTextMessage("Hello World!");

// Set the message group IDmessage.setStringProperty("JMSXGroupID", "Default");

// You can also set a custom message deduplication ID// message.setStringProperty("JMS_SQS_DeduplicationId", "hello");// Here, it's not needed because content-based deduplication is enabled for the queue

// Send the messageproducer.send(message);System.out.println("JMS Message " + message.getJMSMessageID());System.out.println("JMS Message Sequence Number " + message.getStringProperty("JMS_SQS_SequenceNumber"));

Réception des messages de façon synchrone1. Pour recevoir les messages, créez un consommateur correspondant à la même file d'attente et

appelez la méthode start.

Vous pouvez appeler à tout moment la méthode start avec cette connexion. Toutefois, leconsommateur ne reçoit aucun message tant que vous ne l'appelez pas.

78

Page 85: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurRéception des messages de façon synchrone

// Create a consumer for the 'MyQueue'MessageConsumer consumer = session.createConsumer(queue);// Start receiving incoming messagesconnection.start();

2. Appelez la méthode receive au niveau du consommateur avec un délai d'attente d'une seconde, puisimprimez le contenu du message reçu.

• Après avoir reçu un message d'une file d'attente standard, vous pouvez accéder à son contenu.

// Receive a message from 'MyQueue' and wait up to 1 secondMessage receivedMessage = consumer.receive(1000); // Cast the received message as TextMessage and display the textif (receivedMessage != null) { System.out.println("Received: " + ((TextMessage) receivedMessage).getText());}

• Après avoir reçu un message d'une file d'attente FIFO, vous pouvez accéder à son contenu et àd'autres attributs de message spécifiques à FIFO, comme l'ID de groupe de messages, l'ID dedéduplication du message et le numéro de séquence. Pour plus d'informations, consultez Termesclés (p. 30).

// Receive a message from 'MyQueue' and wait up to 1 secondMessage receivedMessage = consumer.receive(1000);

// Cast the received message as TextMessage and display the textif (receivedMessage != null) { System.out.println("Received: " + ((TextMessage) receivedMessage).getText()); System.out.println("Group id: " + receivedMessage.getStringProperty("JMSXGroupID")); System.out.println("Message deduplication id: " + receivedMessage.getStringProperty("JMS_SQS_DeduplicationId")); System.out.println("Message sequence number: " + receivedMessage.getStringProperty("JMS_SQS_SequenceNumber"));}

3. Fermez la connexion et la session.

// Close the connection (and the session).connection.close();

La sortie ressemble à ce qui suit:

JMS Message ID:8example-588b-44e5-bbcf-d816example2Received: Hello World!

Note

Vous pouvez utiliser le framework Spring pour initialiser ces objets.Pour plus d'informations, consultez SpringExampleConfiguration.xml,SpringExample.java et les autres classes d'assistance sous ExampleConfiguration.javaet ExampleCommon.java dans la section Exemple d'utilisation de Java pour l'utilisation de JMSavec des files d'attente Amazon SQS Standard (p. 83).

Pour obtenir des exemples complets d'envoi et de réception d'objets, consultez les sectionsTextMessageSender.java (p. 85) et SyncMessageReceiver.java (p. 86).

79

Page 86: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurRéception des messages de façon asynchrone

Réception des messages de façon asynchroneDans l'exemple de la section Démarrer avec la bibliothèque de messagerie Java Amazon SQS (p. 76),un message est envoyé à MyQueue et reçu de façon synchrone.

L'exemple suivant montre comment recevoir les messages de façon asynchrone via un écouteur.

1. Implémentez l'interface MessageListener.

class MyListener implements MessageListener { @Override public void onMessage(Message message) { try { // Cast the received message as TextMessage and print the text to screen. System.out.println("Received: " + ((TextMessage) message).getText()); } catch (JMSException e) { e.printStackTrace(); } }}

La méthode onMessage de l'interface MessageListener est appelée lorsque vous recevez unmessage. Dans cette implémentation d'écouteur, le texte stocké dans le message est imprimé.

2. Au lieu d'appeler explicitement la méthode receive au niveau du consommateur, sélectionnez uneinstance de l'implémentation MyListener pour l'écouteur de messages du consommateur. Le threadprincipal attend pendant une seconde.

// Create a consumer for the 'MyQueue'.MessageConsumer consumer = session.createConsumer(queue); // Instantiate and set the message listener for the consumer.consumer.setMessageListener(new MyListener()); // Start receiving incoming messages.connection.start(); // Wait for 1 second. The listener onMessage() method is invoked when a message is received.Thread.sleep(1000);

Les autres étapes sont identiques à celles de l'exemple Démarrer avec la bibliothèque de messagerieJava Amazon SQS (p. 76). Pour obtenir un exemple complet de consommateur asynchrone, consultezAsyncMessageReceiver.java dans Exemple d'utilisation de Java pour l'utilisation de JMS avec desfiles d'attente Amazon SQS Standard (p. 83).

La sortie correspondant à cet exemple est similaire à l'exemple suivant :

JMS Message ID:8example-588b-44e5-bbcf-d816example2Received: Hello World!

Utilisation du mode de reconnaissance du clientL'exemple deDémarrer avec la bibliothèque de messagerie Java Amazon SQS (p. 76)utilise letraitementAUTO_ACKNOWLEDGEDans lequel chaque message reçu est accepté automatiquement (et, parconséquent, supprimé de la file d'attente Amazon SQS sous-jacente).

80

Page 87: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurUtilisation du mode de reconnaissance

indépendamment de l'ordre de réception

1. Pour confirmer explicitement les messages après leur traitement, vous devez créer la session en modeCLIENT_ACKNOWLEDGE.

// Create the non-transacted session with CLIENT_ACKNOWLEDGE mode.Session session = connection.createSession(false, Session.CLIENT_ACKNOWLEDGE);

2. Lorsque le message est reçu, affichez-le, puis reconnaissez-le explicitement.

// Cast the received message as TextMessage and print the text to screen. Also acknowledge the message.if (receivedMessage != null) { System.out.println("Received: " + ((TextMessage) receivedMessage).getText()); receivedMessage.acknowledge(); System.out.println("Acknowledged: " + message.getJMSMessageID());}

Note

Avec ce mode, lorsqu'un message est reconnu, tous les messages reçus avant celui-cisont implicitement reconnus aussi. Par exemple, si 10 messages sont reçus et que le 10emessage est reconnu (dans l'ordre dans lequel les messages sont reçus), les 9 messagesprécédents sont également reconnus.

Les autres étapes sont identiques à celles de l'exemple Démarrer avec la bibliothèque de messagerie JavaAmazon SQS (p. 76). Pour obtenir un exemple complet de consommateur synchrone avec le mode dereconnaissance du client, consultez SyncMessageReceiverClientAcknowledge.java dans Exempled'utilisation de Java pour l'utilisation de JMS avec des files d'attente Amazon SQS Standard (p. 83).

La sortie correspondant à cet exemple est similaire à l'exemple suivant :

JMS Message ID:4example-aa0e-403f-b6df-5e02example5Received: Hello World!Acknowledged: ID:4example-aa0e-403f-b6df-5e02example5

Utilisation du mode de reconnaissanceindépendamment de l'ordre de réceptionLorsque vous utilisez le mode CLIENT_ACKNOWLEDGE, tous les messages reçus avant un messageexplicitement reconnu sont reconnus automatiquement. Pour plus d'informations, consultez Utilisation dumode de reconnaissance du client (p. 80).

La bibliothèque de messagerie Amazon SQS fournit un autre mode d'acceptation. Lorsque vous utilisez lemode UNORDERED_ACKNOWLEDGE, tous les messages reçus doivent être individuellement et explicitementreconnus par le client, quel que soit leur ordre de réception. Pour ce faire, créez une session avec le modeUNORDERED_ACKNOWLEDGE.

// Create the non-transacted session with UNORDERED_ACKNOWLEDGE mode.Session session = connection.createSession(false, SQSSession.UNORDERED_ACKNOWLEDGE);

Les étapes suivantes sont identiques à celles de l'exemple Utilisation du mode de reconnaissancedu client (p. 80). Pour obtenir un exemple complet de consommateur synchrone avec le modeUNORDERED_ACKNOWLEDGE, consultez SyncMessageReceiverUnorderedAcknowledge.java.

Dans cet exemple, la sortie est similaire à l'exemple suivant :

81

Page 88: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurUtilisation du client JMS avec d'autres clients Amazon SQS

JMS Message ID:dexample-73ad-4adb-bc6c-4357example7Received: Hello World!Acknowledged: ID:dexample-73ad-4adb-bc6c-4357example7

Utilisation du client Amazon SQS Java MessageService (JMS) avec d'autres clients Amazon SQS

L'utilisation du client Amazon SQS Java Message Service (JMS) avec laAWSLe kit SDK limite la taille desmessages Amazon SQS à 256 Ko. Cependant, vous pouvez créer un fournisseur JMS avec n'importe quelclient Amazon SQS. Par exemple, vous pouvez utiliser le client JMS avec la bibliothèque Amazon SQSExtended Client Library pour Java pour envoyer un message Amazon SQS qui contient une référence àune charge utile de message (jusqu'à 2 Go) dans Amazon S3. Pour plus d'informations, consultez Gestionde gros messages Amazon SQS à l'aide d'Amazon S3 (p. 71).

L'exemple de code Java suivant crée le fournisseur JMS pour la bibliothèque client étendue :

AmazonS3 s3 = new AmazonS3Client(credentials);Region s3Region = Region.getRegion(Regions.US_WEST_2);s3.setRegion(s3Region); // Set the Amazon S3 bucket name, and set a lifecycle rule on the bucket to// permanently delete objects a certain number of days after each object's creation date.// Next, create the bucket, and enable message objects to be stored in the bucket.BucketLifecycleConfiguration.Rule expirationRule = new BucketLifecycleConfiguration.Rule();expirationRule.withExpirationInDays(14).withStatus("Enabled");BucketLifecycleConfiguration lifecycleConfig = new BucketLifecycleConfiguration().withRules(expirationRule); s3.createBucket(s3BucketName);s3.setBucketLifecycleConfiguration(s3BucketName, lifecycleConfig);System.out.println("Bucket created and configured.");

// Set the SQS extended client configuration with large payload support enabled.ExtendedClientConfiguration extendedClientConfig = new ExtendedClientConfiguration() .withLargePayloadSupportEnabled(s3, s3BucketName); AmazonSQS sqsExtended = new AmazonSQSExtendedClient(new AmazonSQSClient(credentials), extendedClientConfig);Region sqsRegion = Region.getRegion(Regions.US_WEST_2);sqsExtended.setRegion(sqsRegion);

L'exemple de code Java suivant crée la fabrique de connexions :

// Create the connection factory using the environment variable credential provider.// Pass the configured Amazon SQS Extended Client to the JMS connection factory.SQSConnectionFactory connectionFactory = new SQSConnectionFactory( new ProviderConfiguration(), sqsExtended ); // Create the connection.SQSConnection connection = connectionFactory.createConnection();

82

Page 89: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurExemple d'utilisation de Java pour l'utilisation de

JMS avec des files d'attente Amazon SQS Standard

Exemple d'utilisation de Java pour l'utilisation deJMS avec des files d'attente Amazon SQS Standard

Les exemples de code suivants expliquent comment utiliser JMS (Java Message Service) avec desfiles d'attente standard Amazon SQS. Pour plus d'informations sur l'utilisation des files d'attente FIFO,consultez.Pour créer une file d'attente FIFO (p. 77),Envoi de messages de façon synchrone (p. 78),etRéception des messages de façon synchrone (p. 78). (La réception des messages en modesynchrone est identique pour les files d'attente standard et FIFO. En revanche, les messages des filesd'attente FIFO contiennent plus d'attributs.)

ExampleConfiguration.javaL'exemple de code Java suivant définit le nom de la file d'attente par défaut, la région et les informationsd'identification à utiliser avec les autres exemples Java.

/* * Copyright 2010-2021 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. * A copy of the License is located at * * https://aws.amazon.com/apache2.0 * * or in the "license" file accompanying this file. This file is distributed * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either * express or implied. See the License for the specific language governing * permissions and limitations under the License. * */

public class ExampleConfiguration { public static final String DEFAULT_QUEUE_NAME = "SQSJMSClientExampleQueue"; public static final Region DEFAULT_REGION = Region.getRegion(Regions.US_EAST_2); private static String getParameter( String args[], int i ) { if( i + 1 >= args.length ) { throw new IllegalArgumentException( "Missing parameter for " + args[i] ); } return args[i+1]; } /** * Parse the command line and return the resulting config. If the config parsing fails * print the error and the usage message and then call System.exit * * @param app the app to use when printing the usage string * @param args the command line arguments * @return the parsed config */ public static ExampleConfiguration parseConfig(String app, String args[]) { try { return new ExampleConfiguration(args); } catch (IllegalArgumentException e) { System.err.println( "ERROR: " + e.getMessage() ); System.err.println(); System.err.println( "Usage: " + app + " [--queue <queue>] [--region <region>] [--credentials <credentials>] "); System.err.println( " or" );

83

Page 90: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurExampleConfiguration.java

System.err.println( " " + app + " <spring.xml>" ); System.exit(-1); return null; } } private ExampleConfiguration(String args[]) { for( int i = 0; i < args.length; ++i ) { String arg = args[i]; if( arg.equals( "--queue" ) ) { setQueueName(getParameter(args, i)); i++; } else if( arg.equals( "--region" ) ) { String regionName = getParameter(args, i); try { setRegion(Region.getRegion(Regions.fromName(regionName))); } catch( IllegalArgumentException e ) { throw new IllegalArgumentException( "Unrecognized region " + regionName ); } i++; } else if( arg.equals( "--credentials" ) ) { String credsFile = getParameter(args, i); try { setCredentialsProvider( new PropertiesFileCredentialsProvider(credsFile) ); } catch (AmazonClientException e) { throw new IllegalArgumentException("Error reading credentials from " + credsFile, e ); } i++; } else { throw new IllegalArgumentException("Unrecognized option " + arg); } } } private String queueName = DEFAULT_QUEUE_NAME; private Region region = DEFAULT_REGION; private AWSCredentialsProvider credentialsProvider = new DefaultAWSCredentialsProviderChain(); public String getQueueName() { return queueName; } public void setQueueName(String queueName) { this.queueName = queueName; } public Region getRegion() { return region; } public void setRegion(Region region) { this.region = region; } public AWSCredentialsProvider getCredentialsProvider() { return credentialsProvider; } public void setCredentialsProvider(AWSCredentialsProvider credentialsProvider) { // Make sure they're usable first credentialsProvider.getCredentials(); this.credentialsProvider = credentialsProvider;

84

Page 91: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurTextMessageSender.java

}}

TextMessageSender.javaL'exemple de code Java suivant crée un producteur de messages texte.

/* * Copyright 2010-2021 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. * A copy of the License is located at * * https://aws.amazon.com/apache2.0 * * or in the "license" file accompanying this file. This file is distributed * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either * express or implied. See the License for the specific language governing * permissions and limitations under the License. * */

public class TextMessageSender { public static void main(String args[]) throws JMSException { ExampleConfiguration config = ExampleConfiguration.parseConfig("TextMessageSender", args); ExampleCommon.setupLogging(); // Create the connection factory based on the config SQSConnectionFactory connectionFactory = new SQSConnectionFactory( new ProviderConfiguration(), AmazonSQSClientBuilder.standard() .withRegion(config.getRegion().getName()) .withCredentials(config.getCredentialsProvider()) ); // Create the connection SQSConnection connection = connectionFactory.createConnection(); // Create the queue if needed ExampleCommon.ensureQueueExists(connection, config.getQueueName()); // Create the session Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); MessageProducer producer = session.createProducer( session.createQueue( config.getQueueName() ) ); sendMessages(session, producer); // Close the connection. This closes the session automatically connection.close(); System.out.println( "Connection closed" ); } private static void sendMessages( Session session, MessageProducer producer ) { BufferedReader inputReader = new BufferedReader( new InputStreamReader( System.in, Charset.defaultCharset() ) ); try { String input; while( true ) { System.out.print( "Enter message to send (leave empty to exit): " );

85

Page 92: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurSyncMessageReceiver.java

input = inputReader.readLine(); if( input == null || input.equals("" ) ) break; TextMessage message = session.createTextMessage(input); producer.send(message); System.out.println( "Send message " + message.getJMSMessageID() ); } } catch (EOFException e) { // Just return on EOF } catch (IOException e) { System.err.println( "Failed reading input: " + e.getMessage() ); } catch (JMSException e) { System.err.println( "Failed sending message: " + e.getMessage() ); e.printStackTrace(); } }}

SyncMessageReceiver.javaL'exemple de code Java suivant crée un consommateur de messages synchrone.

/* * Copyright 2010-2021 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. * A copy of the License is located at * * https://aws.amazon.com/apache2.0 * * or in the "license" file accompanying this file. This file is distributed * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either * express or implied. See the License for the specific language governing * permissions and limitations under the License. * */

public class SyncMessageReceiver {public static void main(String args[]) throws JMSException { ExampleConfiguration config = ExampleConfiguration.parseConfig("SyncMessageReceiver", args); ExampleCommon.setupLogging(); // Create the connection factory based on the config SQSConnectionFactory connectionFactory = new SQSConnectionFactory( new ProviderConfiguration(), AmazonSQSClientBuilder.standard() .withRegion(config.getRegion().getName()) .withCredentials(config.getCredentialsProvider()) ); // Create the connection SQSConnection connection = connectionFactory.createConnection(); // Create the queue if needed ExampleCommon.ensureQueueExists(connection, config.getQueueName()); // Create the session Session session = connection.createSession(false, Session.CLIENT_ACKNOWLEDGE); MessageConsumer consumer = session.createConsumer( session.createQueue( config.getQueueName() ) );

86

Page 93: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurAsyncMessageReceiver.java

connection.start(); receiveMessages(session, consumer);

// Close the connection. This closes the session automatically connection.close(); System.out.println( "Connection closed" );}

private static void receiveMessages( Session session, MessageConsumer consumer ) { try { while( true ) { System.out.println( "Waiting for messages"); // Wait 1 minute for a message Message message = consumer.receive(TimeUnit.MINUTES.toMillis(1)); if( message == null ) { System.out.println( "Shutting down after 1 minute of silence" ); break; } ExampleCommon.handleMessage(message); message.acknowledge(); System.out.println( "Acknowledged message " + message.getJMSMessageID() ); } } catch (JMSException e) { System.err.println( "Error receiving from SQS: " + e.getMessage() ); e.printStackTrace(); }}}

AsyncMessageReceiver.javaL'exemple de code Java suivant crée un consommateur de messages asynchrone.

/* * Copyright 2010-2021 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. * A copy of the License is located at * * https://aws.amazon.com/apache2.0 * * or in the "license" file accompanying this file. This file is distributed * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either * express or implied. See the License for the specific language governing * permissions and limitations under the License. * */

public class AsyncMessageReceiver { public static void main(String args[]) throws JMSException, InterruptedException { ExampleConfiguration config = ExampleConfiguration.parseConfig("AsyncMessageReceiver", args); ExampleCommon.setupLogging(); // Create the connection factory based on the config SQSConnectionFactory connectionFactory = new SQSConnectionFactory( new ProviderConfiguration(), AmazonSQSClientBuilder.standard() .withRegion(config.getRegion().getName()) .withCredentials(config.getCredentialsProvider()) );

87

Page 94: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurSyncMessageReceiverClientAcknowledge.java

// Create the connection SQSConnection connection = connectionFactory.createConnection(); // Create the queue if needed ExampleCommon.ensureQueueExists(connection, config.getQueueName()); // Create the session Session session = connection.createSession(false, Session.CLIENT_ACKNOWLEDGE); MessageConsumer consumer = session.createConsumer( session.createQueue( config.getQueueName() ) ); ReceiverCallback callback = new ReceiverCallback(); consumer.setMessageListener( callback );

// No messages are processed until this is called connection.start(); callback.waitForOneMinuteOfSilence(); System.out.println( "Returning after one minute of silence" );

// Close the connection. This closes the session automatically connection.close(); System.out.println( "Connection closed" ); } private static class ReceiverCallback implements MessageListener { // Used to listen for message silence private volatile long timeOfLastMessage = System.nanoTime(); public void waitForOneMinuteOfSilence() throws InterruptedException { for(;;) { long timeSinceLastMessage = System.nanoTime() - timeOfLastMessage; long remainingTillOneMinuteOfSilence = TimeUnit.MINUTES.toNanos(1) - timeSinceLastMessage; if( remainingTillOneMinuteOfSilence < 0 ) { break; } TimeUnit.NANOSECONDS.sleep(remainingTillOneMinuteOfSilence); } }

@Override public void onMessage(Message message) { try { ExampleCommon.handleMessage(message); message.acknowledge(); System.out.println( "Acknowledged message " + message.getJMSMessageID() ); timeOfLastMessage = System.nanoTime(); } catch (JMSException e) { System.err.println( "Error processing message: " + e.getMessage() ); e.printStackTrace(); } } }}

SyncMessageReceiverClientAcknowledge.javaL'exemple de code Java suivant crée un consommateur synchrone avec le mode de reconnaissance duclient.

88

Page 95: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurSyncMessageReceiverClientAcknowledge.java

/* * Copyright 2010-2021 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. * A copy of the License is located at * * https://aws.amazon.com/apache2.0 * * or in the "license" file accompanying this file. This file is distributed * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either * express or implied. See the License for the specific language governing * permissions and limitations under the License. * */

/** * An example class to demonstrate the behavior of CLIENT_ACKNOWLEDGE mode for received messages. This example * complements the example given in {@link SyncMessageReceiverUnorderedAcknowledge} for UNORDERED_ACKNOWLEDGE mode. * * First, a session, a message producer, and a message consumer are created. Then, two messages are sent. Next, two messages * are received but only the second one is acknowledged. After waiting for the visibility time out period, an attempt to * receive another message is made. It's shown that no message is returned for this attempt since in CLIENT_ACKNOWLEDGE mode, * as expected, all the messages prior to the acknowledged messages are also acknowledged. * * This ISN'T the behavior for UNORDERED_ACKNOWLEDGE mode. Please see {@link SyncMessageReceiverUnorderedAcknowledge} * for an example. */public class SyncMessageReceiverClientAcknowledge { // Visibility time-out for the queue. It must match to the one set for the queue for this example to work. private static final long TIME_OUT_SECONDS = 1; public static void main(String args[]) throws JMSException, InterruptedException { // Create the configuration for the example ExampleConfiguration config = ExampleConfiguration.parseConfig("SyncMessageReceiverClientAcknowledge", args); // Setup logging for the example ExampleCommon.setupLogging(); // Create the connection factory based on the config SQSConnectionFactory connectionFactory = new SQSConnectionFactory( new ProviderConfiguration(), AmazonSQSClientBuilder.standard() .withRegion(config.getRegion().getName()) .withCredentials(config.getCredentialsProvider()) ); // Create the connection SQSConnection connection = connectionFactory.createConnection(); // Create the queue if needed ExampleCommon.ensureQueueExists(connection, config.getQueueName()); // Create the session with client acknowledge mode Session session = connection.createSession(false, Session.CLIENT_ACKNOWLEDGE);

89

Page 96: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurSyncMessageReceiverClientAcknowledge.java

// Create the producer and consume MessageProducer producer = session.createProducer(session.createQueue(config.getQueueName())); MessageConsumer consumer = session.createConsumer(session.createQueue(config.getQueueName())); // Open the connection connection.start(); // Send two text messages sendMessage(producer, session, "Message 1"); sendMessage(producer, session, "Message 2"); // Receive a message and don't acknowledge it receiveMessage(consumer, false); // Receive another message and acknowledge it receiveMessage(consumer, true); // Wait for the visibility time out, so that unacknowledged messages reappear in the queue System.out.println("Waiting for visibility timeout..."); Thread.sleep(TimeUnit.SECONDS.toMillis(TIME_OUT_SECONDS)); // Attempt to receive another message and acknowledge it. This results in receiving no messages since // we have acknowledged the second message. Although we didn't explicitly acknowledge the first message, // in the CLIENT_ACKNOWLEDGE mode, all the messages received prior to the explicitly acknowledged message // are also acknowledged. Therefore, we have implicitly acknowledged the first message. receiveMessage(consumer, true); // Close the connection. This closes the session automatically connection.close(); System.out.println("Connection closed."); } /** * Sends a message through the producer. * * @param producer Message producer * @param session Session * @param messageText Text for the message to be sent * @throws JMSException */ private static void sendMessage(MessageProducer producer, Session session, String messageText) throws JMSException { // Create a text message and send it producer.send(session.createTextMessage(messageText)); } /** * Receives a message through the consumer synchronously with the default timeout (TIME_OUT_SECONDS). * If a message is received, the message is printed. If no message is received, "Queue is empty!" is * printed. * * @param consumer Message consumer * @param acknowledge If true and a message is received, the received message is acknowledged. * @throws JMSException */

90

Page 97: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurSyncMessageReceiverUnorderedAcknowledge.java

private static void receiveMessage(MessageConsumer consumer, boolean acknowledge) throws JMSException { // Receive a message Message message = consumer.receive(TimeUnit.SECONDS.toMillis(TIME_OUT_SECONDS)); if (message == null) { System.out.println("Queue is empty!"); } else { // Since this queue has only text messages, cast the message object and print the text System.out.println("Received: " + ((TextMessage) message).getText()); // Acknowledge the message if asked if (acknowledge) message.acknowledge(); } }}

SyncMessageReceiverUnorderedAcknowledge.javaL'exemple de code Java suivant crée un consommateur synchrone avec le mode de reconnaissance sansordre de réception.

/* * Copyright 2010-2021 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. * A copy of the License is located at * * https://aws.amazon.com/apache2.0 * * or in the "license" file accompanying this file. This file is distributed * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either * express or implied. See the License for the specific language governing * permissions and limitations under the License. * */

/** * An example class to demonstrate the behavior of UNORDERED_ACKNOWLEDGE mode for received messages. This example * complements the example given in {@link SyncMessageReceiverClientAcknowledge} for CLIENT_ACKNOWLEDGE mode. * * First, a session, a message producer, and a message consumer are created. Then, two messages are sent. Next, two messages * are received but only the second one is acknowledged. After waiting for the visibility time out period, an attempt to * receive another message is made. It's shown that the first message received in the prior attempt is returned again * for the second attempt. In UNORDERED_ACKNOWLEDGE mode, all the messages must be explicitly acknowledged no matter what * the order they're received. * * This ISN'T the behavior for CLIENT_ACKNOWLEDGE mode. Please see {@link SyncMessageReceiverClientAcknowledge} * for an example. */public class SyncMessageReceiverUnorderedAcknowledge { // Visibility time-out for the queue. It must match to the one set for the queue for this example to work.

91

Page 98: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurSyncMessageReceiverUnorderedAcknowledge.java

private static final long TIME_OUT_SECONDS = 1; public static void main(String args[]) throws JMSException, InterruptedException { // Create the configuration for the example ExampleConfiguration config = ExampleConfiguration.parseConfig("SyncMessageReceiverUnorderedAcknowledge", args); // Setup logging for the example ExampleCommon.setupLogging(); // Create the connection factory based on the config SQSConnectionFactory connectionFactory = new SQSConnectionFactory( new ProviderConfiguration(), AmazonSQSClientBuilder.standard() .withRegion(config.getRegion().getName()) .withCredentials(config.getCredentialsProvider()) ); // Create the connection SQSConnection connection = connectionFactory.createConnection(); // Create the queue if needed ExampleCommon.ensureQueueExists(connection, config.getQueueName()); // Create the session with unordered acknowledge mode Session session = connection.createSession(false, SQSSession.UNORDERED_ACKNOWLEDGE); // Create the producer and consume MessageProducer producer = session.createProducer(session.createQueue(config.getQueueName())); MessageConsumer consumer = session.createConsumer(session.createQueue(config.getQueueName())); // Open the connection connection.start(); // Send two text messages sendMessage(producer, session, "Message 1"); sendMessage(producer, session, "Message 2"); // Receive a message and don't acknowledge it receiveMessage(consumer, false); // Receive another message and acknowledge it receiveMessage(consumer, true); // Wait for the visibility time out, so that unacknowledged messages reappear in the queue System.out.println("Waiting for visibility timeout..."); Thread.sleep(TimeUnit.SECONDS.toMillis(TIME_OUT_SECONDS)); // Attempt to receive another message and acknowledge it. This results in receiving the first message since // we have acknowledged only the second message. In the UNORDERED_ACKNOWLEDGE mode, all the messages must // be explicitly acknowledged. receiveMessage(consumer, true); // Close the connection. This closes the session automatically connection.close(); System.out.println("Connection closed."); } /** * Sends a message through the producer.

92

Page 99: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurSpringExampleConfiguration.xml

* * @param producer Message producer * @param session Session * @param messageText Text for the message to be sent * @throws JMSException */ private static void sendMessage(MessageProducer producer, Session session, String messageText) throws JMSException { // Create a text message and send it producer.send(session.createTextMessage(messageText)); } /** * Receives a message through the consumer synchronously with the default timeout (TIME_OUT_SECONDS). * If a message is received, the message is printed. If no message is received, "Queue is empty!" is * printed. * * @param consumer Message consumer * @param acknowledge If true and a message is received, the received message is acknowledged. * @throws JMSException */ private static void receiveMessage(MessageConsumer consumer, boolean acknowledge) throws JMSException { // Receive a message Message message = consumer.receive(TimeUnit.SECONDS.toMillis(TIME_OUT_SECONDS)); if (message == null) { System.out.println("Queue is empty!"); } else { // Since this queue has only text messages, cast the message object and print the text System.out.println("Received: " + ((TextMessage) message).getText()); // Acknowledge the message if asked if (acknowledge) message.acknowledge(); } }}

SpringExampleConfiguration.xmlL'exemple de code XML suivant est un fichier de configuration bean pour SpringExample.java (p. 94).

<!-- Copyright 2010-2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.

Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance with the License. A copy of the License is located at

https://aws.amazon.com/apache2.0

or in the "license" file accompanying this file. This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.-->

<?xml version="1.0" encoding="UTF-8"?><beans

93

Page 100: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurSpringExample.java

xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:util="http://www.springframework.org/schema/util" xmlns:p="http://www.springframework.org/schema/p" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.0.xsd "> <bean id="CredentialsProviderBean" class="com.amazonaws.auth.DefaultAWSCredentialsProviderChain"/> <bean id="ClientBuilder" class="com.amazonaws.services.sqs.AmazonSQSClientBuilder" factory-method="standard"> <property name="region" value="us-east-2"/> <property name="credentials" ref="CredentialsProviderBean"/> </bean> <bean id="ProviderConfiguration" class="com.amazon.sqs.javamessaging.ProviderConfiguration"> <property name="numberOfMessagesToPrefetch" value="5"/> </bean> <bean id="ConnectionFactory" class="com.amazon.sqs.javamessaging.SQSConnectionFactory"> <constructor-arg ref="ProviderConfiguration" /> <constructor-arg ref="ClientBuilder" /> </bean> <bean id="Connection" class="javax.jms.Connection" factory-bean="ConnectionFactory" factory-method="createConnection" init-method="start" destroy-method="close" /> <bean id="QueueName" class="java.lang.String"> <constructor-arg value="SQSJMSClientExampleQueue"/> </bean></beans>

SpringExample.javaL'exemple de code Java suivant utilise le fichier de configuration bean pour initialiser vos objets.

/* * Copyright 2010-2021 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. * A copy of the License is located at * * https://aws.amazon.com/apache2.0 * * or in the "license" file accompanying this file. This file is distributed * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either * express or implied. See the License for the specific language governing * permissions and limitations under the License. * */ public class SpringExample { public static void main(String args[]) throws JMSException {

94

Page 101: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurSpringExample.java

if( args.length != 1 || !args[0].endsWith(".xml")) { System.err.println( "Usage: " + SpringExample.class.getName() + " <spring config.xml>" ); System.exit(1); } File springFile = new File( args[0] ); if( !springFile.exists() || !springFile.canRead() ) { System.err.println( "File " + args[0] + " doesn't exist or isn't readable."); System.exit(2); } ExampleCommon.setupLogging(); FileSystemXmlApplicationContext context = new FileSystemXmlApplicationContext( "file://" + springFile.getAbsolutePath() ); Connection connection; try { connection = context.getBean(Connection.class); } catch( NoSuchBeanDefinitionException e ) { System.err.println( "Can't find the JMS connection to use: " + e.getMessage() ); System.exit(3); return; } String queueName; try { queueName = context.getBean("QueueName", String.class); } catch( NoSuchBeanDefinitionException e ) { System.err.println( "Can't find the name of the queue to use: " + e.getMessage() ); System.exit(3); return; } if( connection instanceof SQSConnection ) { ExampleCommon.ensureQueueExists( (SQSConnection) connection, queueName ); } // Create the session Session session = connection.createSession(false, Session.CLIENT_ACKNOWLEDGE); MessageConsumer consumer = session.createConsumer( session.createQueue( queueName) ); receiveMessages(session, consumer); // The context can be setup to close the connection for us context.close(); System.out.println( "Context closed" ); } private static void receiveMessages( Session session, MessageConsumer consumer ) { try { while( true ) { System.out.println( "Waiting for messages"); // Wait 1 minute for a message Message message = consumer.receive(TimeUnit.MINUTES.toMillis(1)); if( message == null ) { System.out.println( "Shutting down after 1 minute of silence" ); break; } ExampleCommon.handleMessage(message); message.acknowledge();

95

Page 102: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurExampleCommon.java

System.out.println( "Acknowledged message" ); } } catch (JMSException e) { System.err.println( "Error receiving from SQS: " + e.getMessage() ); e.printStackTrace(); } }}

ExampleCommon.javaL'exemple de code Java suivant vérifie s'il existe une file d'attente Amazon SQS, puis en crée une si cen'est pas le cas. Il comprend également un exemple de code de journalisation.

/* * Copyright 2010-2021 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. * A copy of the License is located at * * https://aws.amazon.com/apache2.0 * * or in the "license" file accompanying this file. This file is distributed * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either * express or implied. See the License for the specific language governing * permissions and limitations under the License. * */

public class ExampleCommon { /** * A utility function to check the queue exists and create it if needed. For most * use cases this is usually done by an administrator before the application is run. */ public static void ensureQueueExists(SQSConnection connection, String queueName) throws JMSException { AmazonSQSMessagingClientWrapper client = connection.getWrappedAmazonSQSClient(); /** * In most cases, you can do this with just a createQueue call, but GetQueueUrl * (called by queueExists) is a faster operation for the common case where the queue * already exists. Also many users and roles have permission to call GetQueueUrl * but don't have permission to call CreateQueue. */ if( !client.queueExists(queueName) ) { client.createQueue( queueName ); } } public static void setupLogging() { // Setup logging BasicConfigurator.configure(); Logger.getRootLogger().setLevel(Level.WARN); } public static void handleMessage(Message message) throws JMSException { System.out.println( "Got message " + message.getJMSMessageID() ); System.out.println( "Content: "); if( message instanceof TextMessage ) { TextMessage txtMessage = ( TextMessage ) message; System.out.println( "\t" + txtMessage.getText() );

96

Page 103: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurImplémentations JMS 1.1 prises en charge

} else if( message instanceof BytesMessage ){ BytesMessage byteMessage = ( BytesMessage ) message; // Assume the length fits in an int - SQS only supports sizes up to 256k so that // should be true byte[] bytes = new byte[(int)byteMessage.getBodyLength()]; byteMessage.readBytes(bytes); System.out.println( "\t" + Base64.encodeAsString( bytes ) ); } else if( message instanceof ObjectMessage ) { ObjectMessage objMessage = (ObjectMessage) message; System.out.println( "\t" + objMessage.getObject() ); } }}

Implémentations JMS 1.1 prises en chargeLa bibliothèque de messagerie Java Amazon SQS prend en charge les éléments suivantsImplémentationsJMS 1.1. Pour plus d'informations sur les fonctions prises en charge de la bibliothèque Amazon SQS JavaMessaging Library, consultez laFAQ Amazon SQS.

Interfaces courantes prises en charge• Connection

• ConnectionFactory

• Destination

• Session

• MessageConsumer

• MessageProducer

Types de messages pris en charge• ByteMessage

• ObjectMessage

• TextMessage

Modes de reconnaissance des messages pris encharge• AUTO_ACKNOWLEDGE

• CLIENT_ACKNOWLEDGE

• DUPS_OK_ACKNOWLEDGE

• UNORDERED_ACKNOWLEDGE

Note

Le mode UNORDERED_ACKNOWLEDGE ne fait pas partie de la spécification JMS 1.1. Ce modepermet à d'autoriser Amazon SQS à autoriser un client JMS à accepter explicitement un message.

97

Page 104: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurEn-têtes définis par JMS et propriétés réservées

En-têtes définis par JMS et propriétés réservéesPour l'envoi de messagesLorsque vous envoyez des messages, vous pouvez définir les en-têtes et propriétés ci-après pour chaquemessage :

• JMSXGroupID(obligatoire pour les files d'attente FIFO, non autorisé pour les files d'attente standard)• JMS_SQS_DeduplicationId(facultatif pour les files d'attente FIFO, non autorisé pour les files d'attente

standard)

Après l'envoi de messages, Amazon SQS définit les en-têtes et propriétés ci-après pour chaque message :

• JMSMessageID

• JMS_SQS_SequenceNumber(uniquement pour les files d'attente FIFO)

Pour la réception de messagesLorsque vous recevez des messages, Amazon SQS définit les en-têtes et propriétés ci-après pour chaquemessage :

• JMSDestination

• JMSMessageID

• JMSRedelivered

• JMSXDeliveryCount

• JMSXGroupID(uniquement pour les files d'attente FIFO)• JMS_SQS_DeduplicationId(uniquement pour les files d'attente FIFO)• JMS_SQS_SequenceNumber(uniquement pour les files d'attente FIFO)

98

Page 105: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurCréation d'une file d'attente Amazon

SQS (AWS CloudFormation)

Didacticiels Amazon SQSCette section fournit des didacticiels que vous pouvez utiliser pour explorer les fonctions et fonctionnalitésd'Amazon SQS.

Rubriques• Création d'une file d'attente Amazon SQS (AWS CloudFormation) (p. 99)• Didacticiel : Envoyer un message à une file d'attente Amazon SQS à partir d'Amazon Virtual Private

Cloud (p. 100)

Création d'une file d'attente Amazon SQS (AWSCloudFormation)

Vous pouvez utiliser le pluginAWS CloudFormationet un modèle JSON (ou YAML) pour créer unefile d'attente Amazon SQS. Pour de plus amples informations, veuillez consulterUtilisation d'AWSCloudFormationModèleset l'AWS::SQS::QueueRessourcedans le AWS CloudFormation Guide del'utilisateur.

Pour utiliserAWS CloudFormationPour créer une file d'attente Amazon SQS.

1. Copiez le code JSON suivant dans un fichier nommé MyQueue.json. Pour créer une file d'attentestandard, omettez leFifoQueueandContentBasedDeduplicationpropriétés. Pour plusd'informations sur la déduplication basée sur le contenu, consultez Traitement en une seulefois (p. 31).

Note

Le nom d'une file d'attente FIFO doit se terminer par le.fifosuffixe.

{ "AWSTemplateFormatVersion": "2010-09-09", "Resources": { "MyQueue": { "Properties": { "QueueName": "MyQueue.fifo", "FifoQueue": true, "ContentBasedDeduplication": true }, "Type": "AWS::SQS::Queue" } }, "Outputs": { "QueueName": { "Description": "The name of the queue", "Value": { "Fn::GetAtt": [ "MyQueue", "QueueName" ] } }, "QueueURL": { "Description": "The URL of the queue", "Value": { "Ref": "MyQueue"

99

Page 106: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurEnvoi d'un message à partir d'un VPC

} }, "QueueARN": { "Description": "The ARN of the queue", "Value": { "Fn::GetAtt": [ "MyQueue", "Arn" ] } } }}

2. Connectez-vous à la console AWS CloudFormation , puis choisissez Créer une pile.3. Dans le panneau Spécifier un modèle, choisissez Charger un fichier modèle, choisissez votre

MyQueue.json fichier, puis cliquez sur Suivant.4. Sur la page Spécifier les détails, tapez MyQueue pour Nom de la pile, puis choisissez Suivant.5. Dans la page Options, choisissez Suivant.6. Sur la page Review, choisissez Create.

AWS CloudFormation commence à créer la pile MyQueue et affiche l'état CREATE_IN_PROGRESS.Lorsque le processus est terminé, AWS CloudFormation affiche l'état CREATE_COMPLETE.

7. (Facultatif) Pour afficher le nom, l'URL et l'ARN de la file d'attente, choisissez le nom de la pile, puis,sur la page suivante, développez la section Outputs.

Didacticiel : Envoyer un message à une filed'attente Amazon SQS à partir d'Amazon VirtualPrivate Cloud

Dans ce didacticiel, vous apprenez à envoyer des messages à une file d'attente Amazon SQS sur unréseau privé et sécurisé. Ce réseau est composé d'un VPC qui contient une instance Amazon EC2.L'instance se connecte à Amazon SQS via unPoint de terminaison d'un VPC d'interface, ce qui vouspermet de vous connecter à l'instance Amazon EC2 et d'envoyer des messages à la file d'attente AmazonSQS, même si le réseau est déconnecté de l'Internet public. Pour plus d'informations, consultez Points determinaison Amazon Virtual Private Cloud pour Amazon SQS (p. 119).

Important

• Vous pouvez utiliser Amazon Virtual Private Cloud uniquement avec les points de terminaisonHTTPS Amazon SQS.

• Lorsque vous configurez Amazon SQS pour envoyer des messages à partir d'Amazon VPC,vous devez activer le DNS privé et spécifier des points de terminaison au formatsqs.us-east-2.amazonaws.com.

• Le DNS privé ne prend pas en charge les points de terminaison existants, tels quequeue.amazonaws.com ou us-east-2.queue.amazonaws.com.

Rubriques

100

Page 107: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurÉtape 1 : Création d'une key pair Amazon EC2

• Étape 1 : Création d'une key pair Amazon EC2 (p. 101)• Étape 2 : CréerAWSresources (p. 101)• Étape 3 : Confirmer que votre instance EC2 n'est pas accessible publiquement (p. 102)• Étape 4 : Créer un point de terminaison Amazon VPC pour Amazon SQS (p. 103)• Étape 5 : Envoyer un message à votre file d'attente Amazon SQS (p. 103)

Étape 1 : Création d'une key pair Amazon EC2Apaire de clésVous permet de vous connecter à une instance Amazon EC2. Elle se compose d'une clépublique qui chiffre vos informations de connexion, et d'une clé privée qui déchiffre ces informations.

1. Connectez-vous à la consoleConsole Amazon EC2.2. Dans le menu de navigation, sous Réseau et sécurité, choisissez Paires de clés.3. Choisissez Create Key Pair.4. Dans la boîte de dialogue Créer une paire de clés, pour Nom de la paire de clés, entrez SQS-VPCE-

Tutorial-Key-Pair, puis choisissez Créer.5. Votre navigateur télécharge automatiquement le fichier de clé privée SQS-VPCE-Tutorial-Key-

Pair.pem.

Important

Enregistrez ce fichier dans un emplacement sûr. EC2 ne génère pas de fichier .pem pour lamême paire de clés une deuxième fois.

6. Pour autoriser un client SSH à se connecter à votre instance EC2, définissez les autorisations de votrefichier de clé privée de sorte que seul votre utilisateur soit autorisé à lire le fichier. Par exemple :

chmod 400 SQS-VPCE-Tutorial-Key-Pair.pem

Étape 2 : CréerAWSresourcesPour configurer l'infrastructure nécessaire, vous devez utiliser unAWS CloudFormation Modèle, qui est unplan pour la création d'unpilecomposé deAWS, telles que les instances Amazon EC2 et les files d'attenteAmazon SQS.

La pile pour ce didacticiel inclut les ressources suivantes :

• Un VPC et les ressources de mise en réseau associées, notamment un sous-réseau, un groupe desécurité, une passerelle Internet et une table de routage

• Une instance Amazon EC2 lancée dans le sous-réseau VPC• File d'attente Amazon SQS

1. Téléchargez le modèle AWS CloudFormation nommé SQS-VPCE-Tutorial-CloudFormation.yaml à partir de GitHub.

2. Connectez-vous à la console AWS CloudFormation.3. Choisissez Create Stack.4. Sur la page Sélectionner un modèle, choisissez Télécharger un modèle sur Amazon S3, sélectionnez

le fichier SQS-VPCE-SQS-Tutorial-CloudFormation.yaml, puis choisissez Suivant.5. Dans la page Spécification de détails de base de données, procédez comme suite :

a. Pour Nom de la pile, entrez SQS-VPCE-Tutorial-Stack.

101

Page 108: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurÉtape 3 : Confirmer que votre instanceEC2 n'est pas accessible publiquement

b. Pour KeyName, choisissez SQS-VPCE-Tutorial-Key-Pair.c. Choisissez Next (Suivant).

6. Dans la page Options, choisissez Suivant.7. Dans la pageVérification, dans laCapacités, choisissezJe reconnais queAWSCloudFormation peut

créer des ressources IAM avec des noms personnalisés., puisCréer.

AWS CloudFormation commence à créer la pile et affiche le statut CREATE_IN_PROGRESS. Lorsque leprocessus est terminé, AWS CloudFormation affiche l'état CREATE_COMPLETE.

Étape 3 : Confirmer que votre instance EC2 n'est pasaccessible publiquementVotre modèle AWS CloudFormation lance une instance EC2 nommée SQS-VPCE-Tutorial-EC2-Instance dans votre VPC. Cette instance EC2 n'autorise pas le trafic sortant et n'est pas capabled'envoyer des messages à Amazon SQS. Pour le vérifier, vous devez vous connecter à l'instance, essayerde vous connecter à un point de terminaison public, puis essayer d'envoyer un message à Amazon SQS à.

1. Connectez-vous à la consoleConsole Amazon EC2.2. Dans le menu de navigation, sous Instances, choisissez Instances.3. Sélectionnez SQS-VPCE-Tutorial-EC2Instance.4. Copiez le nom d'hôte sous DNS public (IPv4). Par exemple, ec2-203-0-113-0.us-

west-2.compute.amazonaws.com.5. À partir du répertoire contenant la paire de clés que vous venez de créer (p. 101), connectez-vous à

l'instance à l'aide de la commande suivante. Par exemple :

ssh -i SQS-VPCE-Tutorial-KeyPair.pem [email protected]

6. Essayez de vous connecter à n'importe quel point de terminaison public. Par exemple :

ping amazon.com

La tentative de connexion échoue, comme prévu.7. Connectez-vous à la consoleConsole Amazon SQS.8. Dans la liste des files d'attente, sélectionnez la file d'attente créée par votre modèle AWS

CloudFormation. Par exemple, VPCE-SQS-Tutorial-Stack-CFQueue-1ABCDEFGH2IJK.9. Dans la pageDétails, copiez l'URL, par exemple,https://sqs.us-

east-2.amazonaws.com/123456789012/.10. À partir de votre instance EC2, essayez de publier un message dans la file d'attente à l'aide de la

commande suivante. Par exemple :

aws sqs send-message --region us-east-2 --endpoint-url https://sqs.us-east-2.amazonaws.com/ --queue-url https://sqs.us-east-2.amazonaws.com/123456789012/ --message-body "Hello from Amazon SQS."

La tentative d'envoi échoue, comme prévu.

Important

Plus tard, lorsque vous créerez un point de terminaison VPC pour Amazon SQS, votretentative d'envoi réussira.

102

Page 109: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurÉtape 4 : Créer un point de terminaison

Amazon VPC pour Amazon SQS

Étape 4 : Créer un point de terminaison Amazon VPCpour Amazon SQSPour connecter votre VPC à Amazon SQS, vous devez définir un point de terminaison de VPC d'interface.Après avoir ajouté le point de terminaison, vous pouvez utiliser l'API Amazon SQS à partir de l'instanceEC2 dans votre VPC. Vous pouvez ainsi envoyer des messages à une file d'attente dans le réseau AWSsans passer par l'Internet public.

Note

L'instance EC2 n'a toujours pas accès à d'autres services AWS et à d'autres points de terminaisonsur Internet.

1. Connectez-vous à la console Amazon VPC.2. Dans le menu de navigation, choisissez Points de terminaison.3. Choisissez Create Endpoint.4. Dans la pageCréez un point de terminaison, pourService Name, choisissez le nom de service Amazon

SQS.

Note

Les noms de service varient en fonction de laAWSRégion . Par exemple, si vous êtes dansl'Est des États-Unis (Ohio), le nom du service estcom.amazonaws.us-east-2.sqs.

5. Pour VPC, choisissez SQS-VPCE-Tutorial-VPC.6. Pour Sous-réseaux, choisissez le sous-réseau dont l'ID de sous-réseau contient SQS-VPCE-Tutorial-

Subnet.7. Pour Groupe de sécurité, choisissez Select security groups (Sélectionner des groupes de sécurité),

puis choisissez le groupe de sécurité dont le Nom du groupe contient SQS VPCE Tutorial SecurityGroup.

8. Choisissez Créer un point de terminaison.

Le point de terminaison de VPC d'interface est créé et son ID s'affiche. Par exemple,vpce-0ab1cdef2ghi3j456k.

9. Choisissez Close (Fermer).

La console Amazon VPC ouvre laPoints de terminaison.

Amazon VPC commence à créer le point de terminaison et affiche leEn suspensÉtat. Lorsque le processusest terminé, Amazon VPC affiche leavailableÉtat.

Étape 5 : Envoyer un message à votre file d'attenteAmazon SQSMaintenant que votre VPC inclut un point de terminaison pour Amazon SQS, vous pouvez vous connecterà votre instance EC2 et envoyer des messages à votre file d'attente.

1. Reconnectez-vous à votre instance EC2. Par exemple :

ssh -i SQS-VPCE-Tutorial-KeyPair.pem [email protected]

2. Essayez de publier à nouveau un message dans la file d'attente à l'aide de la commande suivante. Parexemple :

103

Page 110: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurÉtape 5 : Envoyer un message àvotre file d'attente Amazon SQS

aws sqs send-message --region us-east-2 --endpoint-url https://sqs.us-east-2.amazonaws.com/ --queue-url https://sqs.us-east-2.amazonaws.com/123456789012/ --message-body "Hello from Amazon SQS."

La tentative d'envoi aboutit et la valeur de hachage MD5 du corps de message et l'ID de messages'affichent. Par exemple :

{ "MD5OfMessageBody": "a1bcd2ef3g45hi678j90klmn12p34qr5", "MessageId": "12345a67-8901-2345-bc67-d890123e45fg"}

Pour plus d'informations sur la réception et la suppression du message de la file d'attente créée par votremodèle AWS CloudFormation (par exemple, VPCE-SQS-Tutorial-Stack-CFQueue-1ABCDEFGH2IJK),consultez Réception et suppression de messages (console) (p. 22).

Pour plus d'informations sur la suppression de vos ressources, consultez ce qui suit :

• Suppression d'un point de terminaison de VPCdans leGuide de l'utilisateur Amazon VPC• Suppression d'une file d'attente Amazon SQS (p. 23)• Résilier une instancedans leGuide de l'utilisateur Amazon EC2 pour les instances Linux• Suppression de votre VPCdans leGuide de l'utilisateur Amazon VPC• Suppression d'une pile via leAWS CloudFormationConsoledans leAWS CloudFormationGuide de

l'utilisateur• Suppression de votre paire de clésdans leGuide de l'utilisateur Amazon EC2 pour les instances Linux

104

Page 111: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurQuotas liés aux files d'attente

Quotas Amazon SQSCette rubrique répertorie les quotas applicables à Amazon Simple Queue Service (Amazon SQS).

Rubriques• Quotas liés aux files d'attente (p. 105)• Quotas liés aux messages (p. 106)• Quotas liés aux stratégies (p. 109)

Quotas liés aux files d'attenteLe tableau suivant répertorie les quotas relatifs aux files d'attente.

Quota Description

File d'attente à retardement Le délai par défaut (minimum) pour une file d'attente est de 0secondes. Le maximum est de 15 minutes.

Files d'attente répertoriées 1000 files d'attente par demande ListQueues.

Durée d’attente pour interrogationlongue

Le temps d'attente maximal de l'interrogation est de 20secondes.

Groupes de messages Il n'y a pas de quota pour le nombre de groupes de messagesdans une file d'attente FIFO.

Messages par file d'attente (en attente) Le nombre de messages qu'une file d'attente Amazon SQSpeut stocker est illimité.

Pour la plupart des files d'attente standard (selon le traficde file d'attente et les messages en attente), il peut y avoirenviron 120 000 messages en vol (reçus d'une file d'attentepar un consommateur, mais pas encore supprimés de celle-ci). Si vous atteignez ce quota tout en utilisantinterrogationactive de courte durée (p. 45), Amazon SQS renvoieleOverLimitMessage d'erreur. Si vous utilisezinterrogationlongue (p. 46), Amazon SQS ne renvoie aucun messaged'erreur. Pour éviter d'atteindre cette limite, supprimez lesmessages de la file d'attente une fois qu'ils ont été traités.Vous pouvez également augmenter le nombre de filesd'attente que vous utilisez pour traiter vos messages. Pourdemander une augmentation de quota, envoyez une demandede support.

Messages par file d'attente (en transit)

Pour les files d'attente FIFO, il peut y avoir 20 000 messagesen vol (reçus d'une file d'attente par un consommateur, maispas encore supprimés de celle-ci). Si vous atteignez ce quota,Amazon SQS ne renvoie aucun message d'erreur.

Nom de la file d'attente Le nom des files d'attente peut contenir jusqu'à 80 caractères.Les caractères suivants sont acceptés : caractèresalphanumériques, tirets (-), et les traits de soulignement (_).

105

Page 112: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurQuotas liés aux messages

Quota Description

Note

Les noms de file d'attente sont sensible à la casse(par exemple, Test-queue et test-queuedésignent des files d'attente différentes).

Le nom d'une file d'attente FIFO doit se terminer parl'.fifosuffixe. Le suffixe compte dans le quota de nom defile d'attente de 80 caractères. Pour déterminer si une filed'attente estFILES D' (p. 28), vous pouvez vérifier si le nomde la file d'attente se termine par le suffixe.

Nous ne recommandons pas d'ajouter plus de 50 balises àune file d'attente.

La balise Key est obligatoire, mais la balise Value estfacultative.

La balise Key et la balise Value sont sensibles à la casse.

La balise Key et la balise Value peuvent inclure descaractères alphanumériques Unicode en UTF-8 et desespaces blancs. Les caractères spéciaux suivants sontacceptés : _ . : / = + - @

La balise Key ou Value ne doit pas inclure le préfixe réservéaws: (vous ne pouvez pas supprimer les clés de balise ou lesvaleurs ayant ce préfixe).

La longueur Key de balise maximale est de 128 caractèresUnicode en UTF-8. La balise Key ne doit pas être vide ou null.

La longueur Value de balise maximale est de 256 caractèresUnicode en UTF-8. La balise Value peut être vide ou null.

Balise de file d'attente

Les actions de marquage sont limitées à 5 TPS parCompte AWS . Si votre application nécessite un débit plusélevé,Envoyez une demande.

Quotas liés aux messagesLe tableau suivant répertorie les quotas relatifs aux messages.

Quota Description

ID de message par lots Un ID de message par lot peut contenir jusqu'à 80 caractères.Les caractères suivants sont acceptés : caractèresalphanumériques, tirets (-), et les traits de soulignement (_).

Attributs de message Un message peut contenir jusqu'à 10 attributs demétadonnées.

Traitement par lots des messages Une demande de traitement par lots de messagespeut inclure un maximum de 10 messages. Pourplus d'informations, consultez Configuration

106

Page 113: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurQuotas liés aux messages

Quota Descriptiond'AmazonSQSBufferedAsyncClient (p. 176) dans la sectionActions de traitement par lots Amazon SQS (p. 174).

Contenu des messages Un message peut contenir uniquement du texte XML ouJSON et du texte non formaté. Les caractères Unicodesuivants sont acceptés : #x9 | #xA | #xD | #x20 to #xD7FF |#xE000 à #xFFFD | #x10000 à #x10FFFF

Tous les caractères non inclus dans cette liste sont refusés.Pour plus d'informations, consultez la spécification W3C enmatière de caractères.

ID de groupe de messages Utilisez les messages en attente pour éviter d'accumuler unjournal volumineux des messages en attente avec le même IDde groupe de messages (p. 65).

Conservation des messages Par défaut, un message est conservé pendant 4 jours. Ladurée minimale est de 60 secondes (1 minute). La duréemaximale est de 1 209 600 secondes (14 jours).

Les files d'attente standard prennent en charge un nombrepresque illimité d'appels d'API par seconde, par action d'API(SendMessage, ReceiveMessage ou DeleteMessage).

Débit de message

Files d'attente FIFO

• Sans traitement par lots, les files d'attente FIFO prennenten charge jusqu'à 300 appels d'API par seconde, parméthode d'API (SendMessage, ReceiveMessage ouDeleteMessage).

• Si vous utilisezTraitement par lot (p. 174), lesfiles d'attente FIFO prennent en charge jusqu'à3 000 messages par seconde et par méthoded'API (SendMessageBatch,ReceiveMessage,ouDeleteMessageBatch). Les 3 000 messages parseconde représentent 300 appels d'API, chacun avec unlot de 10 messages. Pour demander une augmentation dequota, envoyez une demande de support.

107

Page 114: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurQuotas liés aux messages

Quota Description

Débit élevé pour les files d'attente FIFO (p. 32)

• Sans traitement par lot (SendMessage,ReceiveMessage,etDeleteMessage), le débit élevé des files d'attente FIFOprend en charge jusqu'à 3 000 messages par seconde etpar méthode d'API. Pour un débit maximal, augmentez lenombre d'ID de groupe de messages que vous utilisez pourles messages envoyés sans traitement par lots.

• Vous pouvez augmenter le débit jusqu'à 30 000 messagespar seconde en utilisant les API de traitement par lots(SendMessageBatchandDeleteMessageBatch).Les 30 000 messages par seconde représentent3 000 appels d'API, chacun avec un lot de 10messages. Pour atteindre le débit maximal lors del'utilisationSendMessageBatchandDeleteMessageBatch,tous les messages d'une demande par lot doivent utiliser lemême ID de groupe de messages.

Pour plus d'informations, consultez Partitions et distributionde données pour un débit élevé pour les files d'attente SQSFIFO (p. 33).

Note

Les quotas ci-dessus sont disponibles danslesAWSRégions concernées par

• US East (Ohio)• US East (N. Virginia)• US West (Oregon)• Europe (Ireland)

Dans toutes les autresAWSRégions, le débit maximalest de 1 500 (sans traitement par lots) ou de 15 000(par lots) messages par seconde, par action d'API.

Temporisateur de message Le délai par défaut (minimum) pour un message est de 0secondes. Le maximum est de 15 minutes.

Taille de message La taille minimale de message est de 1 octet (1 caractère). Lataille maximale est de 262 144 octets (256 Ko).

Pour envoyer des messages de plus de 256 Ko, vous pouvezutiliser laBibliothèque client étendue Amazon SQS pourJava. Cette bibliothèque vous permet d'envoyer un messageAmazon SQS qui contient une référence à une charge utilede message dans Amazon S3. La taille de la charge utilemaximale est de 2 Go.

Délai de visibilité des messages Le délai de visibilité par défaut d'un message est de 30secondes. Le minimum est de 0 seconde. Le maximum est de12 heures.

108

Page 115: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurQuotas liés aux stratégies

Quota Description

Informations sur les stratégies Le quota maximal est de 8 192 octets, 20 instructions,50 mandataires ou 10 conditions. Pour plus d'informations,consultez Quotas liés aux stratégies (p. 109).

Quotas liés aux stratégiesLe tableau suivant répertorie les quotas relatifs aux stratégies.

Nom Maximum

Octets 8 192

Conditions 10

Mandataires 50

Instructions 20

109

Page 116: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurAutomatisation des notifications à l'aide de EventBridge

Automatisation et dépannage desfiles d'attente Amazon SQS

Cette section fournit des informations sur l'automatisation et le dépannage des files d'attente Amazon SQS.

Rubriques• Automatisation des notifications deAWSservices à Amazon SQS à l'aide d'Amazon

EventBridge (p. 110)• Résolution des problèmes d'attente Amazon Simple Queue Service à l'aide deAWS X-Ray (p. 110)

Automatisation des notifications deAWSservices àAmazon SQS à l'aide d'Amazon EventBridge

Amazon EventBridge vous permet d'automatiserAWSet de répondre à des événements système tels quedes problèmes de disponibilité d'application ou des modifications de ressource. Événements provenantdeAWSLes services sont transmis à EventBridge presque en temps réel. Vous pouvez écrire des règlessimples pour préciser les événements qui vous intéressent et les actions automatisées à effectuer quandun événement correspond à une règle.

EventBridge vous permet de définir une variété detargets, telles que les files d'attente standard AmazonSQS et FIFO, qui reçoivent des événements au format JSON. Pour de plus amples informations, veuillezconsulter le Guide de l'utilisateur Amazon EventBridge.

Résolution des problèmes d'attente Amazon SimpleQueue Service à l'aide deAWS X-Ray

AWS X-Ray collecte des données sur des demandes servies par votre application et vous permet d'afficheret de filtrer des données afin d'identifier les problèmes potentiels et les possibilités d'optimisation. Pourtoutes les demandes suivies transmises à votre application, vous pouvez consulter des informationsdétaillées sur la demande et la réponse, mais également sur les appels que votre application effectue versdes bases de données, microservices, ressources AWS en aval et API web HTTP.

Pour envoyerAWS X-RayEn-tête de suivi via Amazon SQS, vous pouvez effectuer l'une des actionssuivantes :

• Utilisation de l'X-Amzn-Trace-Id En-tête de suivi.• Utilisation de l'AWSTraceHeader Attribut de système de message (p. 43).

Pour collecter des données sur les erreurs et la latence, vous devez instrumenter lademandeAmazonSQSUtilisation du clientAWSSDK X-Ray.

Vous pouvez utiliser le pluginAWS X-RayPour afficher la carte de connexions entre Amazon SQS et lesautres services que votre application utilise. Vous pouvez également utiliser la console pour afficher desmesures comme la latence moyenne et les taux de défaillance. Pour de plus amples informations, veuillezconsulterAmazon SQS etAWS X-Raydans leAWS X-RayManuel du développeur.

110

Page 117: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurProtection des données

Sécurité dans Amazon SQSCette section fournit des informations sur la sécurité Amazon SQS, l'authentification et le contrôle d'accèsd'et le langage d'access policy.

Rubriques• Protection des données (p. 111)• Identity and Access Management dans Amazon SQS (p. 120)• Journalisation et surveillance dans Amazon SQS (p. 150)• Validation de conformité pour Amazon SQS (p. 163)• Résilience dans Amazon SQS (p. 163)• Sécurité de l'infrastructure dans Amazon SQS (p. 164)• Bonnes pratiques de sécurité Amazon SQS (p. 165)

Protection des donnéesLeAWS Modèle de responsabilité partagées'applique à la protection des données dans Amazon SimpleQueue Service. Comme décrit dans ce modèle, AWS est responsable de la protection de l'infrastructureglobale sur laquelle l'ensemble de AWS Cloud s'exécute. La gestion du contrôle de votre contenu hébergésur cette infrastructure est de votre responsabilité. Ce contenu comprend les tâches de configurationet de gestion de la sécurité des services AWS que vous utilisez. Pour de plus amples informations surla confidentialité des données, veuillez consulter FAQ sur la confidentialité des données. Pour de plusamples informations sur la protection des données en Europe, veuillez consulter le billet de blog Modèle deresponsabilité partagée AWS et RGPD sur le Blog de sécurité AWS.

À des fins de protection des données, nous vous recommandons de protéger Compte AWS et configurezdes comptes d'utilisateur individuels avecAWS Identity and Access Management(IAM). Ainsi, chaqueutilisateur se voit attribuer uniquement les autorisations nécessaires pour exécuter ses tâches. Nous vousrecommandons également de sécuriser vos données comme indiqué ci-dessous :

• Utilisez l'authentification multi-facteurs (MFA) avec chaque compte.• Utilisez SSL/TLS pour communiquer avec des ressources AWS. Nous recommandons TLS 1.2 ou

version ultérieure.• Configurez l'API et la journalisation des activités utilisateur avec AWS CloudTrail.• Utilisez des solutions de chiffrement AWS, ainsi que tous les contrôles de sécurité par défaut au sein des

services AWS.• Utilisez des services de sécurité gérés avancés tels que Amazon Macie, qui contribuent à la découverte

et à la sécurisation des données personnelles stockées dans Amazon S3.• Si vous avez besoin de modules cryptographiques validés FIPS 140-2 lorsque vous accédez à AWS

via une interface de ligne de commande ou une API, utilisez un point de terminaison FIPS. Pour deplus amples informations sur les points de terminaison FIPS disponibles, consultez Federal InformationProcessing Standard (FIPS) 140-2.

Nous vous recommandons vivement de ne jamais placer d'informations confidentielles ou sensibles, tellesque des adresses e-mail, dans des balises ou des champs de format libre tels que Nom. Cela s'appliqueégalement lorsque vous utilisez Amazon SQS ou d'autresAWSà l'aide de la console, de l'API,AWS CLI,ouAWSKits de développement logiciel. Toutes les données que vous entrez dans les balises ou les

111

Page 118: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurChiffrement des données

champs de format libre utilisés pour les noms peuvent être utilisées pour les journaux de facturation ou dediagnostic. Si vous fournissez une URL à un serveur externe, nous vous recommandons fortement de nepas inclure les informations d'identification non chiffrées dans l'URL pour valider votre demande adresséeau serveur.

Les sections suivantes présentent des informations sur la protection des données dans Amazon SQS.

Rubriques• Chiffrement des données (p. 112)• Confidentialité du trafic inter-réseaux (p. 119)

Chiffrement des donnéesLa protection des données fait référence au fait de protéger les données pendant leur transit (lorsqu'ellessont transmises en direction ou en provenance d'Amazon SQS) et au repos (lorsqu'elles sont stockées surdes disques dans les centres de données Amazon SQS). Vous pouvez protéger les données en transit àl'aide de la technologie Secure Sockets Layer (SSL) ou du chiffrement côté client. Vous pouvez protégerles données au repos en demandant à Amazon SQS de chiffrer vos messages avant de les enregistrer surdisque dans ses centres de données, puis de les déchiffrer à la réception des messages.

Rubriques• Chiffrement au repos (p. 112)• Gestion des clés (p. 115)

Chiffrement au reposLe chiffrement côté serveur (SSE) vous permet de transférer des données sensibles dans des filesd'attente chiffrées. SSE protège le contenu des messages présents dans les files d'attente à l'aide de clésgérées dansAWS Key Management Service(AWS KMS). Pour plus d'informations sur la gestion d'une SSEavecAWS Management Console, consultezConfiguration du chiffrement côté serveur (SSE) pour une filed'attente (console) (p. 16).

Pour plus d'informations sur la gestion d'une SSE avecAWS SDK for Java(etleCreateQueue,SetQueueAttributes, etGetQueueAttributes), consultez les exemples suivants :

• Utilisation du chiffrement côté serveur (SSE) (p. 66)• Configurer les autorisations de KMS pour les services AWS (p. 115)

SSE chiffre les messages une fois reçus par Amazon SQS. Les messages sont stockés sous forme chiffréeet Amazon SQS les déchiffre uniquement lorsqu'ils sont envoyés à un consommateur autorisé.

Important

Toutes les requêtes adressées aux files d'attente avec le chiffrement SSE activé doivent utiliserHTTPS etSignature Version 4.Unfile d'attente chiffrée (p. 112)qui utilise la clé par défaut (AWSCMK géré pour Amazon SQS)ne peut pas appeler une fonction Lambda dans un autre Compte AWS .Certaines fonctionnalités deAWSqui peuvent envoyer des notifications à Amazon SQSà l'aide duAWS Security Token Service AssumeRolesont compatibles avec SSE maisfonctionnentuniquement avec les files d'attente standard :

• Hooks de cycle de vie Auto Scaling• AWS Lambda Files d'attente de lettres mortes

112

Page 119: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurChiffrement des données

Pour de plus amples informations sur la compatibilité d'autres services avec les filesd'attente chiffrées, veuillez consulterConfigurer les autorisations de KMS pour les servicesAWS (p. 115)et la documentation de votre service.

AWS KMS combine du matériel et des logiciels sécurisés et hautement disponibles pour fournir un systèmede gestion de clés à l'échelle du cloud. Lorsque vous utilisez Amazon SQS avecAWS KMS, leClés dedonnées (p. 113)qui chiffrent les données de vos messages sont également chiffrées et stockées avecles données qu'elles protègent.

L'utilisation d'AWS KMS offre les avantages suivants :

• Vous pouvez créer et gérer les clés principales client (CMK) (p. 113) vous-même.• Vous pouvez également utiliser l'AWSCMK gérée par pour Amazon SQS, unique pour chaque compte et

région.• Les normes de sécurité AWS KMS peuvent vous aider à respecter les exigences de conformité liées au

chiffrement.

Pour de plus amples informations, veuillez consulter Présentation d'AWS Key Management Service dans leGuide du développeur AWS Key Management Service.

Rubriques• Portée du chiffrement (p. 113)• Termes clés (p. 113)

Portée du chiffrement

SSE chiffre le corps d'un message dans une file d'attente Amazon SQS.

Le chiffrement SSE ne chiffre pas les éléments suivants :

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

Le chiffrement d'un message rend son contenu indisponible pour les utilisateurs non autorisés ouanonymes. Cela n'affecte pas le fonctionnement normal d'Amazon SQS :

• Un message est chiffré uniquement s'il est envoyé après l'activation du chiffrement d'une file d'attente.Amazon SQS ne crypte pas les messages en attente.

• Tout message chiffré reste chiffré même si le chiffrement de sa file d'attente est désactivé.

Le placement d'un message dans une file d'attente de lettres mortes (p. 47) n'affecte pas son chiffrement :

• Lorsqu'Amazon SQS transfère un message d'une file d'attente source chiffrée vers une file d'attente delettres mortes non chiffrée, le message reste chiffré.

• Lorsqu'Amazon SQS transfère un message d'une file d'attente source non chiffrée vers une file d'attentede lettres mortes chiffrée, le message reste non chiffré.

Termes clés

Les termes clés suivants peuvent vous aider à mieux comprendre les fonctionnalités de chiffrement SSE.Pour des descriptions détaillées, consultez laRéférence d'API Amazon Simple Queue Service.

113

Page 120: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurChiffrement des données

Clé de données

Clé de chiffrement des données (DEK) permettant de chiffrer le contenu des messages Amazon SQS.

Pour de plus amples informations, veuillez consulterClés de donnéesdans leAWS Key ManagementServiceManuel du développeurdans leAWS Encryption SDKManuel du développeur.

Période de réutilisation des clés de données

Durée en secondes pendant laquelle Amazon SQS peut réutiliser une clé de données pour chiffrer oudéchiffrer des messages avant d'appelerAWS KMS. Entier en secondes, compris entre 60 secondes(1 minute) et 86 400 secondes (24 heures). La valeur par défaut est 300 (5 minutes). Pour deplus amples informations, veuillez consulter Présentation de la période de réutilisation des clés dedonnées (p. 117).

Note

Dans le cas improbable d'être incapable d'atteindreAWS KMS, Amazon SQS continue àutiliser la clé de données en cache jusqu'à ce qu'une connexion soit rétablie.

ID de clé principale client (Customer Master Key)

L'alias, l'ARN d'alias, l'ID de clé ou l'ARN de clé d'uneAWSClé principale du client gérée par ou uneclé CMK personnalisée dans votre compte ou un autre compte. Alors que l'alias de laAWSCMKgéré pour Amazon SQS est toujoursalias/aws/sqs, l'alias d'une clé CMK personnalisée peut, parexemple, êtrealias/MyAlias. Vous pouvez utiliser ces clés CMK pour protéger les messages desfiles d'attente Amazon SQS.

Note

Gardez à l'esprit les points suivants :• Si vous ne spécifiez pas de clé CMK personnalisée, Amazon SQS utilise l'AWSGestion

CMK gérée par pour Amazon SQS.• La première fois que vous utilisez leAWS Management Consolepour spécifier leAWSCMK

géré pour Amazon SQS pour une file d'attente,AWS KMScrée leAWSGestion CMK géréepar pour Amazon SQS.

• Alternativement, la première fois que vous utilisezleSendMessageouSendMessageBatchAction sur une file d'attente avec SSE activée,AWSKMScrée leAWSGestion CMK gérée par pour Amazon SQS.

Vous pouvez créer des clés CMK, définir les stratégies qui contrôlent la façon dont les clés CMKpeuvent être utilisées et vérifier l'utilisation des clés CMK à l'aide de la section Clés gérées parle client de la console AWS KMS ou de l'action AWS KMS CreateKey. Pour de plus amplesinformations, veuillez consulterClés principales client (clés CMK)andCréation de clésdans leAWSKey Management ServiceManuel du développeur. Pour plus d'exemples d'identifiants de clés CMK,consultezKeyIddans leAWS Key Management ServiceAPI Reference. Pour plus d'informations sur larecherche d'identifiants de clés CMK, consultezRecherche de l'ID et de l'ARN d'une clédans leAWSKey Management ServiceManuel du développeur.

Important

Des frais supplémentaires sont facturés pour l'utilisation d'AWS KMS. Pour de plus amplesinformations, veuillez consulter les sections Estimation des coûts AWS KMS (p. 117) etTarification d'AWS Key Management Service.

Chiffrement d'enveloppe

La sécurité de vos données chiffrées dépend partiellement de la protection de la clé de donnéescapable de les déchiffrer. Amazon SQS utilise la clé CMK pour chiffrer la clé de données, puis la cléde données chiffrée est stockée avec le message chiffré. La pratique qui consiste à utiliser une cléprincipale pour chiffrer des clés de données s'appelle le chiffrement d'enveloppe.

114

Page 121: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurChiffrement des données

Pour de plus amples informations, veuillez consulterChiffrement d'enveloppedans leAWS EncryptionSDKManuel du développeur.

Gestion des clésAmazon SQS s'intègre avec leAWS Key Management Serviceà gérerClés principales client(CMK) pour lechiffrement côté serveur (SSE). VoirChiffrement au repos (p. 112)pour les informations sur les SSE et lesdéfinitions de gestion clés. Amazon SQS utilise des clés CMK pour valider et sécuriser les clés de donnéesqui chiffrent et déchiffrent les messages. Les sections suivantes présentent des informations sur l'utilisationdes CMK et des clés de données dans le service Amazon SQS.

Rubriques• Configuration des autorisations AWS KMS (p. 115)• Présentation de la période de réutilisation des clés de données (p. 117)• Estimation des coûts AWS KMS (p. 117)• Erreurs AWS KMS (p. 118)

Configuration des autorisations AWS KMS

Chaque CMK doit avoir une stratégie clé. Notez que vous ne pouvez pas modifier la stratégie de cléd'unAWSGestion CMK gérée par pour Amazon SQS. La stratégie de cette CMK inclut des autorisationspermettant à tous les mandataires du compte (autorisés à utiliser Amazon SQS) d'utiliser des files d'attentechiffrées.

Pour une CMK gérée par le client, vous devez configurer la stratégie de clé afin d'ajouter des autorisationspour chaque producteur et consommateur de file d'attente. Pour ce faire, vous nommez le producteur etle consommateur en tant qu'utilisateurs dans la stratégie de clé CMK. Pour plus d'informations surAWSKMSautorisations, voirAWS KMSRessources et opérationsou AWS KMSRéférence des autorisationsd'APIdans leAWS Key Management ServiceManuel du développeur.

Vous pouvez également spécifier les autorisations requises dans une stratégie IAM affectée auxmandataires qui produisent et consomment des messages chiffrés. Pour de plus amples informations,veuillez consulterUtilisation des stratégies IAM avecAWS KMSdans leAWS Key ManagementServiceManuel du développeur.

Note

Alors que vous pouvez configurer des autorisations globales pour envoyer et recevoir desmessages à destination et en provenance d'Amazon SQS,AWS KMSexige que l'ARN complet desclés CMK soit explicitement nommé dans des régions spécifiques dans la fenêtreResourced'unestratégie IAM.

Configurer les autorisations de KMS pour les services AWS

PlusieursAWSagissent comme des sources d'événements pouvant envoyer des événements vers des filesd'attente Amazon SQS. Pour permettre à ces sources d'événements de fonctionner avec des files d'attentechiffrées, vous devez créer une CMK gérée par le client et ajouter des autorisations dans la stratégie declé pour que le service utilise les méthodes d'API AWS KMS requises. Effectuez les étapes suivantes pourconfigurer les autorisations.

1. Créez une clé CMK gérée par le client. Pour plus d'informations, consultez Création des clés dans leGuide du développeur AWS Key Management Service.

2. Pour autoriser la source d'événement du service AWS afin d'utiliser les méthodesd'APIkms:GenerateDataKey et kms:Decrypt, ajoutez l'instruction suivante à la stratégie de cléCMK.

115

Page 122: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurChiffrement des données

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Principal": { "Service": "service.amazonaws.com" }, "Action": [ "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": "*" }]}

Remplacez « service » dans l'exemple ci-dessus par le nom de service de la source de l'événement.Les sources d'événements incluent les services suivants.

Origine de l'événement Nom du service

Amazon CloudWatch Events events.amazonaws.com

Notification d'événement Amazon S3 s3.amazonaws.com

Abonnements aux rubriques Amazon SNS sns.amazonaws.com

3. configurer une file d'attente SSE existante (p. 16)à l'aide de l'ARN de votre CMK.4. Fournissez l'ARN de la file d’attente chiffrée à la source de l'événement.

Configurer les autorisations KMS pour les producteurs

Lorsque la période de réutilisation de la clé de données (p. 117) expire, le prochain appel duproducteur vers SendMessage ou SendMessageBatch déclenche également des appels verskms:GenerateDataKey et kms:Decrypt. L'appel à kms:Decrypt a pour but de vérifier l'intégrité de lanouvelle clé de données avant de l'utiliser. Par conséquent, le producteur doit disposer des autorisationskms:GenerateDataKey et kms:Decrypt pour la clé principale client (CMK).

Ajoutez l'instruction suivante à la stratégie IAM du producteur. N'oubliez pas d'utiliser les valeurs ARNcorrectes pour la ressource clé et la ressource de file d'attente.

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": "arn:aws:kms:us-east-2:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab" }, { "Effect": "Allow", "Action": [ "sqs:SendMessage" ], "Resource": "arn:aws:sqs:*:123456789012:MyQueue" }]}

116

Page 123: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurChiffrement des données

Configurer les autorisations KMS pour les consommateurs

Lorsque la période de réutilisation de la clé de données expire, le prochain appel du consommateurvers ReceiveMesssage déclenche également un appel de kms:Decrypt, pour vérifier l'intégrité de lanouvelle clé de données avant de l'utiliser. Par conséquent, le consommateur doit disposer de l'autorisationkms:Decrypt pour toute clé principale client (CMK) permettant de chiffrer les messages dans la filed'attente spécifiée. Si la file d'attente sert de file d'attente de lettres mortes (p. 47), le consommateurdoit également disposer de l'autorisation kms:Decrypt pour toute clé CMK permettant de chiffrer lesmessages dans la file d'attente source. Ajoutez l'instruction suivante à la stratégie IAM du consommateur.N'oubliez pas d'utiliser les valeurs ARN correctes pour la ressource clé et la ressource de file d'attente.

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "kms:Decrypt" ], "Resource": "arn:aws:kms:us-east-2:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab" }, { "Effect": "Allow", "Action": [ "sqs:ReceiveMessage" ], "Resource": "arn:aws:sqs:*:123456789012:MyQueue" }]}

Présentation de la période de réutilisation des clés de données

LePériode de réutilisation des clés (p. 113)définit la durée maximale d'Amazon SQS pour réutiliser lamême clé de données. Lorsque la période de réutilisation de la clé de données se termine, Amazon SQSgénère une nouvelle clé de données. Notez les instructions suivantes concernant la période de réutilisation.

• Une période de réutilisation plus courte offre davantage de sécurité, mais entraîne plus d'appels à AWSKMS, ce qui peut générer des frais au-delà de l'offre gratuite.

• Bien que la clé de données soit mise en cache séparé pour le chiffrement et le déchiffrement, la périodede réutilisation s'applique aux deux copies de cette clé.

• Lorsque la période de réutilisation de la clé de données se termine, l'appel suivant de SendMessage ouSendMessageBatch déclenche généralement un appel de la méthode AWS KMS GenerateDataKeypour obtenir une nouvelle clé de données. En outre, les appels suivants de SendMessage etReceiveMessage déclencheront chacun un appel de AWS KMS Decrypt pour vérifier l'intégrité de laclé de données avant de l'utiliser.

• Mandataires( Comptes AWS ou utilisateurs IAM) ne partagent pas de clés de données (les messagesenvoyés par des mandataires uniques sont toujours associés à des clés de données uniques). Parconséquent, le volume des appels vers AWS KMS est un multiple du nombre de mandataires uniquesutilisés pendant la période de réutilisation des clés de données :

Estimation des coûts AWS KMS

Pour prédire les coûts et mieux comprendre votreAWSVous souhaiterez peut-être connaître la fréquence àlaquelle Amazon SQS utilise votre clé principale client (CMK).

Note

Bien que la formule suivante puisse vous donner une très bonne idée des coûts à prévoir, lescoûts réels peuvent être plus élevés en raison de la nature distribuée d'Amazon SQS.

117

Page 124: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurChiffrement des données

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

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

B est la période de facturation (en secondes).

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

Pest le nombre deprincipalsqui envoient à la file d'attente Amazon SQS.

Cest le nombre de mandataires consommateurs qui reçoivent des messages de la file d'attente AmazonSQS.

Important

En général, les mandataires productifs ont un coût deux fois plus élevé que celui des mandatairesconsommateurs. Pour de plus amples informations, veuillez consulter Présentation de la périodede réutilisation des clés de données (p. 117).Si le producteur et le consommateur ont des utilisateurs différents d'IAM, le coût augmente.

Voici des exemples de calcul. Pour obtenir des informations précises sur la tarification, consultezTarification AWS Key Management Service.

Exemple 1 : Calcul du nombre deAWS KMSAppels d'API pour 2 mandataires et 1 file d'attente

Cet exemple suppose que :

• La période de facturation va du 1er au 31 janvier (2 678 400 secondes).• La période de réutilisation des clés de données est définie sur 5 minutes (300 secondes).• Il y a 1 file d'attente.• Il y a 1 mandataire productif et 1 mandataire consommateur.

2,678,400 / 300 * (2 * 1 + 1) = 26,784

Exemple 2 : Calcul du nombre deAWS KMSAppels d'API pour plusieurs producteurs et plusieursconsommateurs et 2 files d'attente

Cet exemple suppose que :

• La période de facturation va du 1er au 28 février (2 419 200 secondes).• La période de réutilisation des clés de données est définie sur 24 heures (86 400 secondes).• Il y a 2 files d'attente.• La première file d'attente comporte 3 mandataires productifs et 1 mandataire consommateur.• La seconde file d'attente comporte 5 mandataires productifs et 2 mandataires consommateurs.

(2,419,200 / 86,400 * (2 * 3 + 1)) + (2,419,200 / 86,400 * (2 * 5 + 2)) = 532

Erreurs AWS KMSLorsque vous travaillez avec Amazon SQS etAWS KMS, vous risquez de rencontrer des erreurs. Lesréférences suivantes décrivent les erreurs et les solutions de dépannage possibles.

• CourantAWS KMSErreurs• AWS KMS Erreurs de déchiffrement• AWS KMS Erreurs GenerateDataKey

118

Page 125: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurConfidentialité du trafic inter-réseaux

Confidentialité du trafic inter-réseauxUn point de terminaison Amazon Virtual Private Cloud (Amazon VPC) pour Amazon SQS est une entitélogique au sein d'un VPC qui autorise la connectivité uniquement à Amazon SQS. Le VPC achemine lesdemandes vers Amazon SQS et les réponses renvoyées au VPC. Les sections suivantes fournissentdes informations sur l'utilisation des points de terminaison de VPC et la création de stratégies de point determinaison de VPC.

Rubriques• Points de terminaison Amazon Virtual Private Cloud pour Amazon SQS (p. 119)• Création d'une stratégie de point de terminaison Amazon VPC pour Amazon SQS (p. 119)

Points de terminaison Amazon Virtual Private Cloud pour AmazonSQSSi vous utilisez Amazon VPC pour héberger votreAWS, vous pouvez établir une connexion entre votre VPCet Amazon SQS. Vous pouvez utiliser cette connexion pour envoyer des messages à vos files d'attenteAmazon SQS sans passer par l'Internet public.

Amazon VPC vous permet de lancerAWSdans un réseau virtuel personnalisé. Vous pouvez utiliser unVPC pour contrôler vos paramètres réseau, tels que la plage d'adresses IP, les sous-réseaux, les tablesde routage et les passerelles réseau. Pour plus d'informations sur les VPC, consultez laAmazon VPC UserGuide.

Pour connecter votre VPC à Amazon SQS, vous devez d'abord définir unPoint de terminaison d'un VPCd'interface, ce qui vous permet de connecter votre VPC à d'autresAWSServices . Le point de terminaisonassure une connectivité scalable et fiable à Amazon SQS sans qu'une passerelle Internet, une instanceNAT (Network Address Translation) ou une connexion VPN ne soit nécessaire. Pour de plus amplesinformations, veuillez consulterDidacticiel : Envoyer un message à une file d'attente Amazon SQS àpartir d'Amazon Virtual Private Cloud (p. 100)andExemple 5 : Refuser l'accès s'il n'émane pas d'unpoint de terminaison de VPC (p. 146)dans ce guide etPoints de terminaison de VPC d'interface ( AWSPrivateLink )dans leAmazon VPC User Guide.

Important

• Vous pouvez utiliser Amazon Virtual Private Cloud uniquement avec les points de terminaisonHTTPS Amazon SQS.

• Lorsque vous configurez Amazon SQS pour envoyer des messages à partir d'Amazon VPC,vous devez activer le DNS privé et spécifier des points de terminaison au formatsqs.us-east-2.amazonaws.com.

• Le DNS privé ne prend pas en charge les points de terminaison existants, tels quequeue.amazonaws.com ou us-east-2.queue.amazonaws.com.

Création d'une stratégie de point de terminaison Amazon VPCpour Amazon SQSVous pouvez créer une stratégie pour les points de terminaison Amazon VPC pour Amazon SQS danslaquelle vous pouvez spécifier :

• Le mandataire qui peut exécuter des actions.• Les actions qui peuvent être effectuées.• Les ressources sur lesquelles les actions peuvent être exécutées.

119

Page 126: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurIdentity and Access Management

Pour de plus amples informations, veuillez consulterContrôle de l'accès aux services avec les points determinaison d'un VPCdans leAmazon VPC User Guide

L'exemple suivant de stratégie de point de terminaison d'un VPC spécifie que l'utilisateur IAMMyUserestautorisé à envoyer des messages à la file d'attente Amazon SQSMyQueue.

{ "Statement": [{ "Action": ["sqs:SendMessage"], "Effect": "Allow", "Resource": "arn:aws:sqs:us-east-2:123456789012:MyQueue", "Principal": { "AWS": "arn:aws:iam:123456789012:user/MyUser" } }]}

Ce qui suit est refusé :

• Autres actions d'API Amazon SQS, telles quesqs:CreateQueueandsqs:DeleteQueue.• Autres utilisateurs IAM et règles qui tentent d'utiliser ce point de terminaison de VPC.• MyUserEnvoi de messages à une autre file d'attente Amazon SQS.

Note

L'utilisateur IAM peut toujours utiliser d'autres actions d'API Amazon SQS depuisOutsideLe VPC.Pour de plus amples informations, veuillez consulter Exemple 5 : Refuser l'accès s'il n'émane pasd'un point de terminaison de VPC (p. 146).

Identity and Access Management dans AmazonSQS

L'accès à Amazon SQS nécessite des informations d'identificationAWSpeut utiliser pour authentifier vosdemandes. Ces informations d'identification doivent être autorisées à accéder àAWS, telles que des filesd'attente et des messages Amazon SQS. Les sections suivantes vous expliquent comment vous pouvezutiliserAWS Identity and Access Management(IAM)et Amazon SQS pour sécuriser vos ressources encontrôlant l'accès à.

Rubriques• Authentication (p. 120)• Contrôle d'accès (p. 122)• Présentation de la gestion de l'accès dans Amazon SQS (p. 122)• Utilisation de stratégies basées sur l'identité avec Amazon SQS (p. 128)• Utilisation de stratégies personnalisées avec le langage de stratégie d'accès Amazon SQS (p. 136)• Utilisation d'informations d'identification de sécurité temporaires avec Amazon SQS (p. 147)• Autorisations de l'API Amazon SQS : Référence des actions et ressources (p. 148)

AuthenticationVous pouvez utiliser les types d'identité suivants pour accéder à AWS :

120

Page 127: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurAuthentication

• Utilisateur racine de Compte AWS – lorsque vous créez dans un premier temps un Compte AWS , vouscommencez avec une identité de connexion unique qui bénéficie d'un accès complet à tous les serviceset ressources AWS du compte. Cette identité est appelée l'utilisateur racine du Compte AWS . Vouspouvez y accéder en vous connectant à l'aide de l'adresse e-mail et du mot de passe que vous avezutilisés pour créer le compte. Il est vivement recommandé de ne pas utiliser l'utilisateur racine pour vostâches quotidiennes, y compris pour les tâches administratives. Respectez plutôt la bonne pratique quiconsiste à avoir recours à l'utilisateur racine uniquement pour créer le premier utilisateur IAM. Ensuite,mettez en sécurité les informations d'identification de l'utilisateur racine et utilisez-les uniquement poureffectuer certaines tâches de gestion des comptes et des services.

• Utilisateur IAM— UnUtilisateur IAMest une identité au sein de votre Compte AWS dispose d'autorisationspersonnalisées spécifiques (par exemple, autorisation de créer une file d'attente dans Amazon SQS).Vous pouvez utiliser un nom d'utilisateur et un mot de passe IAM pour vous connecter aux pages webAWS sécurisées telles que la AWS Management Console, les forums de discussion AWS ou le centreAWS Support.

 

En plus de générer un nom utilisateur et un mot de passe, vous pouvez générer des clés d'accèspour chaque utilisateur. Vous pouvez utiliser ces clés lorsque vous accédez aux services AWS parprogrammation, soit par le biais d'un kit SDK soit à l'aide d'AWS Command Line Interface (CLI). Lesoutils de l'interface de ligne de commande et les kits SDK utilisent les clés d'accès pour signer de façoncryptographique votre demande. Si vous n'utilisez pas les outils AWS, vous devez signer la demandevous-même. Amazon SQS prend en chargeSignature Version 4, protocole permettant l'authentificationdes demandes d'API entrantes. Pour de plus amples informations sur l'authentification des demandes,veuillez consulter Processus de signature Signature Version 4 dans les Références générales AWS.

 • Rôle IAM : un rôle IAM est une identité IAM que vous pouvez créer dans votre compte et qui dispose

d'autorisations spécifiques. Un rôle IAM est similaire à un utilisateur IAM, car il s'agit d'une identitéAWS avec des stratégies d'autorisation qui déterminent ce que l'identité peut et ne peut pas fairedans AWS. En revanche, au lieu d’être associé de manière unique à une personne, un rôle est conçupour être assumé par tout utilisateur qui en a besoin. En outre, un rôle ne dispose pas d'informationsd'identification standard à long terme comme un mot de passe ou des clés d'accès associées. Au lieu decela, lorsque vous adoptez un rôle, il vous fournit des informations d'identification de sécurité temporairespour votre session de rôle. Les rôles IAM avec des informations d'identification temporaires sont utilesdans les cas suivants :

 • Accès par des utilisateurs fédérés – Au lieu de créer un utilisateur IAM, vous pouvez utiliser des

identités existantes provenant d'AWS Directory Service, de votre répertoire d'utilisateurs d'entrepriseou d'un fournisseur d'identité web. On parle alors d'utilisateurs fédérés. AWS attribue un rôle à unutilisateur fédéré lorsque l'accès est demandé via un fournisseur d'identité. Pour de plus amplesinformations sur les utilisateurs fédérés, veuillez consulter Utilisateurs fédérés et rôles dans le Guidede l'utilisateur IAM.

 • Accès par un service AWS – Un rôle de service est un rôle IAM qu'un service endosse pour effectuer

des actions en votre nom. Les rôles de service fournissent un accès uniquement au sein de votrecompte et ne peuvent pas être utilisés pour accorder l'accès à des services dans d'autres comptes.Un administrateur IAM peut créer, modifier et supprimer un rôle de service à partir d'IAM. Pour deplus amples informations, veuillez consulter Création d'un rôle pour la délégation d'autorisations à unservice AWS dans le Guide de l'utilisateur IAM.

 • Applications s'exécutant sur Amazon EC2 – Vous pouvez utiliser un rôle IAM pour gérer des

informations d'identification temporaires pour les applications s'exécutant sur une instance EC2 eteffectuant des demandes par la AWS CLI ou par des API AWS. Cette solution est préférable au

121

Page 128: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurContrôle d'accès

stockage des clés d'accès au sein de l'instance EC2. Pour attribuer un rôle AWS à une instance EC2et le rendre disponible à toutes les applications associées, vous pouvez créer un profil d'instanceattaché à l'instance. Un profil d'instance contient le rôle et permet aux programmes qui s'exécutentsur l'instance EC2 d'obtenir des informations d'identification temporaires. Pour de plus amplesinformations, veuillez consulter Utilisation d'un rôle IAM pour accorder des autorisations à desapplications s'exécutant sur des instances Amazon EC2 dans le Guide de l’utilisateur IAM.

Contrôle d'accèsAmazon SQS dispose de son propre système d'autorisations basées sur les ressources qui utilise desstratégies écrites dans la même langue que celle desAWS Identity and Access ManagementStratégies(IAM). Cela signifie que vous pouvez obtenir le même type de résultat avec les stratégies Amazon SQS etles stratégies IAM.

Note

Il est important de comprendre que tous Comptes AWS peuvent déléguer leurs autorisations à desutilisateurs possédant leur propre compte. L'accès intercomptes vous permet de partager l'accèsà vos ressources AWS sans avoir à gérer d'utilisateurs supplémentaires. Pour plus d'informationssur l'utilisation intercompte, consultezActivation de l'accès intercomptedans leIAM User Guide.Les autorisations entre comptes ne s'appliquent pas aux actions suivantes :

• AddPermission

• CreateQueue

• DeleteQueue

• ListQueues

• ListQueueTags

• RemovePermission

• SetQueueAttributes

• TagQueue

• UntagQueue

Actuellement, Amazon SQS prend en charge uniquement un sous-ensemble limité duclés decondition disponibles dans IAM. Pour de plus amples informations, veuillez consulter Autorisationsde l'API Amazon SQS : Référence des actions et ressources (p. 148).

Présentation de la gestion de l'accès dans AmazonSQSEVERYAWSappartient à un Compte AWS et les autorisations permettant de créer ou d'accéder à uneressource sont gérées par des stratégies d'autorisations. Un administrateur de compte peut accorderdes stratégies d'autorisation à des identités IAM (utilisateurs, groupes et rôles), et certains services(tels qu'Amazon SQS) prennent également en charge l'attachement de stratégies d'autorisation à desressources.

Note

Un administrateur de compte (ou utilisateur administrateur) est un utilisateur doté des privilègesd'administration. Pour plus d'informations, consultez Bonnes pratiques IAM dans le IAM Guide del'utilisateur.

122

Page 129: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurPrésentation

Lorsque vous accordez des autorisations, vous indiquez quels utilisateurs en bénéficient, à quellesressources ces autorisations s'appliquent et les actions spécifiques que vous souhaitez autoriser sur laressource.

Rubriques• Ressources et opérations Amazon Simple Queue Service (p. 123)• Présentation de la propriété des ressources (p. 123)• Gestion de l'accès aux ressources (p. 124)• Spécification des éléments de stratégie : Actions, effets, ressources et mandataires (p. 127)• Spécification de conditions dans une stratégie (p. 127)

Ressources et opérations Amazon Simple Queue ServiceDans Amazon SQS, la seule ressource est lequeue. Dans une stratégie, utilisez un Amazon ResourceName (ARN) pour identifier la ressource à laquelle la stratégie s'applique. La ressource suivante est dotéed'un ARN unique qui lui est associé :

Type de ressource Format ARN

File d'attente arn:aws:sqs:region:account_id:queue_name

Vous trouverez ci-dessous des exemples de format ARN pour les files d'attente :

• ARN d'une file d'attente nomméemy_queuedans la région USA Est (Ohio), appartenant àAWSCompte123456789012 :

arn:aws:sqs:us-east-2:123456789012:my_queue

• ARN d'une file d'attente nomméemy_queueDans chacune des différentes régions prises en charge parAmazon SQS :

arn:aws:sqs:*:123456789012:my_queue

• ARN utilisant * ou ? comme caractère générique pour le nom de la file d'attente. Dans les exemplessuivants, l'ARN correspond à toutes les files d'attente dont le préfixe est my_prefix_ :

arn:aws:sqs:*:123456789012:my_prefix_*

Vous pouvez obtenir la valeur de l'ARN d'une file d'attente existante en appelant l'actionGetQueueAttributes. La valeur de l'attribut QueueArn correspond à l'ARN de la file d'attente. Pour plusd'informations sur les ARN, consultezARN IAMdans leIAM User Guide.

Amazon SQS fournit un ensemble d'actions qui fonctionnent avec la ressource de file d'attente. Pour deplus amples informations, veuillez consulter Autorisations de l'API Amazon SQS : Référence des actions etressources (p. 148).

Présentation de la propriété des ressourcesLe Compte AWS possède les ressources créées dans le compte, quel que soit le créateur. Plusprécisément, le propriétaire de la ressource est le Compte AWS de laentité principale(c'est-à-dire, lecompte racine, un utilisateur IAM ou un rôle IAM) qui authentifie la demande de création de ressource. Lesexemples suivants illustrent comment cela fonctionne :

123

Page 130: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurPrésentation

• Si vous utilisez les informations d'identification de compte racine de votre Compte AWS Pour créer unefile d'attente Amazon SQS, votre Compte AWS est le propriétaire de la ressource (dans Amazon SQS, laressource est la file d'attente Amazon SQS).

• Si vous créez un utilisateur IAM dans votre Compte AWS et accorder des autorisations lui permettant decréer une file d'attente, l'utilisateur peut créer la file d'attente. Cependant, votre Compte AWS (auquell'utilisateur appartient) est propriétaire de la ressource file d'attente.

• Si vous créez un rôle IAM dans votre Compte AWS Avec l'autorisation de créer une file d'attente AmazonSQS, quiconque capable d'assumer ce rôle peut créer une file d'attente. Votre Compte AWS (auquelappartient le rôle) est propriétaire de la ressource file d'attente.

Gestion de l'accès aux ressourcesAstratégie d'autorisationdécrit les autorisations accordées aux comptes. La section suivante explique lesoptions disponibles pour créer des stratégies d'autorisation.

Note

Cette section décrit l'utilisation d'IAM dans le contexte d'Amazon SQS. Elle ne fournit pasd'informations détaillées sur le service IAM. Pour accéder à la documentation complète d'IAM,consultezEn quoi consiste IAM ?dans leIAM User Guide. Pour plus d'informations sur la syntaxedes stratégies IAM et les descriptions, consultezAWSRéférence de la stratégie IAMdans leIAMUser Guide.

Les stratégies attachées à une identité IAM sont appeléesbasée sur l'identitéLes stratégies (stratégies IAM)et les stratégies attachées à une ressource sont appeléesbasée sur les ressourcespolitiques.

Stratégies basées sur l'identité (stratégies IAM et stratégies Amazon SQS)

Deux options s'offrent à vous pour autoriser les utilisateurs à accéder à vos files d'attente Amazon SQS : lesystème de stratégies Amazon SQS ou le système de stratégies IAM. Vous pouvez utiliser l'un et/ou l'autredes systèmes pour associer des stratégies à des utilisateurs ou à des rôles. Dans la plupart des cas, vousobtenez le même résultat avec l'un ou l'autre système. Par exemple, vous pouvez effectuer les opérationssuivantes :

• Attacher une stratégie d'autorisation à un utilisateur ou à un groupe de votre compte— Pour accorder àl'utilisateur l'autorisation de créer une file d'attente Amazon SQS, attachez une stratégie d'autorisations àun utilisateur ou à un groupe auquel l'utilisateur appartient.

• Joindre une stratégie d'autorisation à un utilisateur dans un autre Compte AWS — Pour accorder àl'utilisateur l'autorisation de créer une file d'attente Amazon SQS, attachez une stratégie d'autorisationsAmazon SQS à un utilisateur dans un autre Compte AWS .

Les autorisations entre comptes ne s'appliquent pas aux actions suivantes :• AddPermission

• CreateQueue

• DeleteQueue

• ListQueues

• ListQueueTags

• RemovePermission

• SetQueueAttributes

• TagQueue

• UntagQueue

• Attacher une stratégie d'autorisation à un rôle (accorder des autorisations sur des comptes)— Pouraccorder des autorisations entre comptes, vous pouvez attacher une stratégie d'autorisation basée sur

124

Page 131: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurPrésentation

une identité à un rôle IAM. Par exemple, les recettes Compte AWS Un administrateur peut créer un rôlepour accorder des autorisations sur des comptes Compte AWS B (ou unAWS) comme suit :• L'administrateur du Compte A crée un rôle IAM et attache une stratégie d'autorisation (qui accorde des

autorisations sur les ressources du compte A) au rôle.• L'administrateur du compte A attache une stratégie d'approbation au rôle qui identifie le compte B

comme mandataire pouvant assumer ce rôle.• L'administrateur du compte B délègue l'autorisation d'assumer le rôle à n'importe quel utilisateur du

compte B. Cela permet aux utilisateurs du compte B de créer des files d'attente pour le compte A et d'yaccéder.

Note

Si vous voulez accorder l'autorisation d'assumer le rôle à un service AWS, le mandataire de lastratégie d'approbation peut également être le mandataire du service AWS.

Pour plus d'informations sur l'utilisation d'IAM pour déléguer des autorisations, consultezGestion desaccèsdans leIAM User Guide.

Amazon SQS fonctionne avec les stratégies IAM, mais dispose aussi de sa propre infrastructurede stratégies. Vous pouvez utiliser une stratégie Amazon SQS avec une file d'attente pour spécifierquelleAWSLes comptes ont accès à la file d'attente. Vous pouvez définir le type d'accès et les conditions(par exemple, une condition accordant des autorisations pour utiliser SendMessage, ReceiveMessagesi la demande a lieu avant le 31 décembre 2010). Les actions spécifiques pour lesquelles vous pouvezaccorder des autorisations représentent un sous-ensemble de la liste complète des actions Amazon SQS.Lorsque vous écrivez une stratégie Amazon SQS et spécifiez*Pour « autoriser toutes les actions AmazonSQS », cela signifie qu'un utilisateur peut effectuer toutes les actions de ce sous-ensemble.

Le schéma suivant illustre le concept de l'une des stratégies Amazon SQS de base, qui couvre le sous-ensemble d'actions. Cette stratégie s'applique à la file d'attente queue_xyz, et donne aux comptes 1AWS et 2 AWS les autorisations nécessaires pour utiliser une des actions autorisées avec la file d'attentespécifiée.

Note

La ressource de la stratégie est spécifiée sous la forme 123456789012/queue_xyz, où123456789012 est l'ID du compte AWS qui possède la file d'attente.

Avec l'introduction de IAM et les concepts deUsersandAmazon Resource Names (ARN), quelques chosesont changé au sujet des stratégies SQS. Le graphique et le tableau suivants décrivent ces modifications.

125

Page 132: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurPrésentation

Pour plus d'informations sur l'octroi d'autorisations à des utilisateurs dans des comptes différents,consultezDidacticiel : Déléguer l'accès entreAWSComptes utilisant des rôles IAMdans leIAM User Guide.

Le sous-ensemble d'actions inclus dans * est plus vaste. Pour obtenir la liste des actions autorisées,consultez Autorisations de l'API Amazon SQS : Référence des actions et ressources (p. 148).

Vous pouvez spécifier la ressource à l'aide de l'ARN (Amazon Resource Name). Il s'agit de la méthodestandard pour spécifier des ressources dans des stratégies IAM. Pour plus d'informations sur le formatARN pour les files d'attente Amazon SQS, consultezRessources et opérations Amazon Simple QueueService (p. 123).

Par exemple, conformément à la stratégie Amazon SQS illustrée par le schéma précédent, toute personnepossédant les informations d'identification de sécurité pourAWSCompte 1 ouAWSLe compte 2 peutaccéderqueue_xyz. De plus, les utilisateurs Bob et Susan, qui appartiennent à votre compte AWS (avecl'ID 123456789012) peuvent également accéder à la file d'attente.

Avant l'introduction d'IAM, Amazon SQS accordait automatiquement au créateur d'une file d'attente uncontrôle complet sur celle-ci (c'est-à-dire l'accès à toutes les actions Amazon SQS sur cette file d'attente).Ce n'est plus le cas, sauf si le créateur utilise des informations d'identification de sécurité AWS. Toututilisateur qui dispose d'autorisations pour créer une file d'attente doit également avoir les autorisationsnécessaires pour utiliser les autres actions Amazon SQS pour pouvoir exploiter les files d'attente créées.

Dans l'exemple suivant, la stratégie autorise un utilisateur à utiliser toutes les actions Amazon SQS, maisseulement avec les files d'attente dont le nom comporte la chaîne littérale en préfixe.bob_queue_.

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "sqs:*", "Resource": "arn:aws:sqs:*:123456789012:bob_queue_*" }]}

126

Page 133: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurPrésentation

Pour de plus amples informations, veuillez consulterUtilisation de stratégies basées sur l'identité avecAmazon SQS (p. 128), etIdentités (utilisateurs, groupes et rôles)dans leIAM User Guide.

Spécification des éléments de stratégie : Actions, effets,ressources et mandatairesPour chaqueRessource Amazon Simple Queue Service (p. 123), le service définit un ensemble d'Actions.Pour accorder des autorisations pour ces actions, Amazon SQS définit un ensemble d'actions que vouspouvez spécifier dans une stratégie.

Note

Une action peut exiger des autorisations pour plusieurs actions. Lors de l'octroi des autorisationspour des actions spécifiques, vous identifiez également la ressource pour laquelle les actions sontautorisées ou refusées.

Voici les éléments les plus élémentaires d'une stratégie :

• Ressource – Dans une stratégie, vous utilisez un Amazon Resource Name (ARN) pour identifier laressource à laquelle la stratégie s'applique.

• Action— Vous utilisez des mots clés d'action pour identifier les actions de ressource que vous voulezaccorder ou refuser. Par exemple, les recettessqs:CreateQueuepermet à l'utilisateur d'effectuer leservice de file d'attente Amazon SimpleCreateQueueaction.

• Effet— Vous spécifiez l'effet produit lorsque l'utilisateur demande l'action spécifique, qui peut être unaccord ou un refus. Si vous n'accordez pas explicitement l'accès à une ressource, il est implicitementrefusé. Vous pouvez aussi explicitement refuser l'accès à une ressource, ce que vous pouvez faire afinde vous assurer qu'un utilisateur n'y a pas accès, même si une stratégie différente accorde l'accès.

• Mandataire : dans les stratégies basées sur une identité (stratégies IAM), l'utilisateur auquel la stratégieest attachée est le mandataire implicite. Pour les stratégies basées sur une ressource, vous spécifiezl'utilisateur, le compte, le service ou une autre entité qui doit recevoir les autorisations (s'appliqueuniquement aux stratégies basées sur une ressource).

Pour en savoir plus sur la syntaxe des stratégies Amazon SQS et obtenir des descriptions,consultezAWSRéférence de la stratégie IAMdans leIAM User Guide.

Pour visualiser un tableau répertoriant toutes les actions Amazon Simple Queue Service et les ressourcesauxquelles elles s'appliquent, consultez la sectionAutorisations de l'API Amazon SQS : Référence desactions et ressources (p. 148).

Spécification de conditions dans une stratégieLorsque vous accordez des autorisations, vous pouvez utiliser le langage de stratégie d'accès AmazonSQS pour spécifier quand une stratégie doit prendre effet. Par exemple, il est possible d'appliquer unestratégie après seulement une date spécifique. Pour de plus amples informations sur la spécification deconditions dans un langage de stratégie, veuillez consulter Condition dans le Guide de l'utilisateur IAM.

Pour exprimer des conditions, vous utilisez des clés de condition prédéfinies. Il n'existe pas de clés decondition spécifiques à Amazon SQS. Cependant, il existeAWSclés de condition à l'échelle que vouspouvez utiliser avec Amazon SQS. Actuellement, Amazon SQS prend en charge uniquement un sous-ensemble limité des clés de condition disponibles dans IAM. Voir the section called “Référence desautorisations d'API” (p. 148).

127

Page 134: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurUtilisation de stratégies basées sur l'identité

Utilisation de stratégies basées sur l'identité avecAmazon SQSCette rubrique fournit des exemples de stratégies basées sur une identité dans lesquelles un administrateurde compte peut attacher des stratégies d'autorisation aux identités IAM (utilisateurs, groupes et rôles).

Important

Nous vous recommandons tout d'abord d'examiner les rubriques de présentation qui détaillent lesconcepts de base et les options disponibles pour gérer l'accès à vos ressources Amazon SimpleQueue Service. Pour de plus amples informations, veuillez consulter Présentation de la gestion del'accès dans Amazon SQS (p. 122).À l'exception deListQueues, toutes les actions Amazon SQS prennent en charge lesautorisations de niveau ressource. Pour de plus amples informations, veuillez consulterAutorisations de l'API Amazon SQS : Référence des actions et ressources (p. 148).

Rubriques• Utilisation de stratégies Amazon SQS et IAM (p. 128)• Autorisations requises pour utiliser la console Amazon SQS (p. 130)• AWSStratégies gérées par (prédéfinies) pour Amazon SQS (p. 130)• Exemples de stratégies IAM pour Amazon SQS (p. 131)• Exemples de stratégies de base Amazon SQS (p. 132)

Utilisation de stratégies Amazon SQS et IAMDeux options s'offrent à vous pour autoriser les utilisateurs à accéder à vos ressources Amazon SQS : lesystème de stratégies Amazon SQS ou le système de stratégies IAM. Vous pouvez utiliser l'un ou l'autre,ou les deux. Dans l'ensemble, vous obtenez les mêmes résultats avec l'un ou l'autre système.

Par exemple, le schéma suivant illustre une stratégie IAM et une stratégie Amazon SQS équivalente.La politique IAM accorde les droits sur Amazon SQSReceiveMessageandSendMessagepour la filed'attente appeléequeue_xyzdans vosAWSCompte, et la stratégie est attachée aux utilisateurs Bob etSusan (Bob et Susan disposent des autorisations définies dans la stratégie). Cette stratégie Amazon SQSdonne également à Bob et à Susan des droits sur leReceiveMessageandSendMessagepour la même filed'attente.

128

Page 135: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurUtilisation de stratégies basées sur l'identité

Note

Cet exemple montre des stratégies simples, sans conditions. Vous pouvez spécifier une conditionparticulière dans l'une ou l'autre des stratégies et aboutir au même résultat.

Il existe cependant une différence majeure entre les stratégies IAM et Amazon SQS : le système destratégie Amazon SQS vous permet d'accorder une autorisation à d'autresAWSComptes, alors que IAM nele fait pas.

Il vous incombe de décider si vous voulez utiliser les deux systèmes conjointement pour gérer vosautorisations. Les exemples suivants illustrent la façon dont les deux systèmes de stratégie interagissent.

• Dans le premier exemple, Bob possède une stratégie IAM et une stratégie Amazon SQS qui s'appliquentà son compte. La stratégie IAM accorde à son compte l'autorisation deReceiveMessageactionsurqueue_xyz, alors que la politique Amazon SQS donne à son compte l'autorisationdeSendMessagesur la même file d'attente. Le diagramme suivant illustre le concept.

Si Bob envoie unReceiveMessagede la demande àqueue_xyz, la stratégie IAM autorise l'action. SiBob envoie unSendMessagede la demande àqueue_xyz, la stratégie Amazon SQS autorise l'action.

• Dans le deuxième exemple, Bob abuse de son accès à la file d'attente queue_xyz de telle sorte qu'ildevient nécessaire de supprimer cet accès. La méthode la plus simple consiste à ajouter une stratégiequi lui refuse l'accès à toutes les actions pour cette file d'attente. Cette stratégie prévaut sur les deuxautres car une action deny explicite prévaut toujours sur une action allow. Pour plus d'informations surla logique d'évaluation de stratégie, consultez la section Utilisation de stratégies personnalisées avec lelangage de stratégie d'accès Amazon SQS (p. 136). Le diagramme suivant illustre le concept.

129

Page 136: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurUtilisation de stratégies basées sur l'identité

Vous pouvez également ajouter une instruction supplémentaire à la stratégie Amazon SQS, qui refuse àBob tout type d'accès à la file d'attente. Cette approche a le même effet que l'ajout d'une stratégie IAMrefusant à Bob l'accès à la file d'attente. Pour obtenir des exemples de stratégies couvrant les actions etressources Amazon SQS, consultezExemples de stratégies de base Amazon SQS (p. 132). Pour plusd'informations sur l'écriture de stratégies Amazon SQS, consultezUtilisation de stratégies personnaliséesavec le langage de stratégie d'accès Amazon SQS (p. 136).

Autorisations requises pour utiliser la console Amazon SQSUn utilisateur désireux d'utiliser la console Amazon SQS doit disposer d'un ensemble minimald'autorisations pour utiliser les files d'attente Amazon SQS dans le Compte AWS . Par exemple, l'utilisateurdoit avoir l'autorisation d'appeler l'action ListQueues pour répertorier les files d'attente ou l'actionCreateQueue pour créer des files d'attente. Outre les autorisations Amazon SQS, pour abonner une filed'attente Amazon SQS à une rubrique Amazon SNS, la console exige également des autorisations pour lesactions Amazon SNS.

Si vous créez une stratégie IAM plus restrictive que les autorisations minimales requises, la console peutne pas fonctionner comme prévu pour les utilisateurs dotés de la stratégie IAM.

Vous n'avez pas besoin d'accorder les autorisations minimales de console pour les utilisateurs quieffectuent des appels uniquement auAWS CLIou les actions Amazon SQS.

AWSStratégies gérées par (prédéfinies) pour Amazon SQSAWSrépond à de nombreux cas d'utilisation courants en fournissant desAWSstratégies IAM gérées. Cesstratégies gérées par AWS simplifient l'utilisation des autorisations en octroyant les autorisations requisespour les cas d'utilisation courants. Pour plus d'informations, consultez Stratégies gérées par AWS dans leGuide de l'utilisateur IAM.

Procédez comme suit :AWSLes stratégies gérées par (que vous pouvez attacher aux utilisateurs de votrecompte) sont spécifiques à Amazon SQS :

• AmazonSQSReadOnlyAccess— Accorder un accès en lecture seule aux files d'attente Amazon SQS àl'aide duAWS Management Console.

• AmazonSQSFullAccess : accorde un accès complet aux files d'attente Amazon SQS avec leAWSManagement Console.

130

Page 137: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurUtilisation de stratégies basées sur l'identité

Vous pouvez rechercher et afficher les stratégies disponibles dans la console IAM. Vous pouvez égalementcréer vos propres stratégies IAM personnalisées afin d'accorder des autorisations pour les actions etles files d'attente Amazon SQS. Vous pouvez attacher ces stratégies personnalisées aux utilisateurs ougroupes IAM qui nécessitent des autorisations.

Exemples de stratégies IAM pour Amazon SQSLes exemples suivants présentent la composition des stratégies d'autorisation Amazon SQS.

Note

Lorsque vous configurez des hooks de cycle de vie pour Amazon EC2 Auto Scaling, vous n'avezpas besoin d'écrire de stratégie pour envoyer des messages à une file d'attente Amazon SQS.Pour de plus amples informations, veuillez consulterHooks de cycle de vie Amazon EC2 AutoScalingdans leGuide de l'utilisateur Amazon EC2 pour les instances Linux.

Exemple 1 : Autoriser un utilisateur à créer des files d'attenteDans l'exemple suivant, nous créons une stratégie qui permet à Bob d'accéder à toutes les actionsAmazon SQS, mais seulement avec les files d'attente dont le nom comporte la chaîne littérale enpréfixe.alice_queue_.

Amazon SQS n'accorde pas automatiquement au créateur d'une file d'attente les autorisations d'utiliserla file d'attente. Par conséquent, dans la stratégie, nous devons explicitement accorder à Bob lesautorisations d'utiliser toutes les actions Amazon SQS en plus deCreateQueueaction dans la stratégieIAM.

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "sqs:*", "Resource": "arn:aws:sqs:*:123456789012:alice_queue_*" }]}

Exemple 2 : Permettre aux développeurs d'écrire des messages dans une filed'attente partagéeDans l'exemple suivant, nous créons un groupe pour les développeurs et associons une stratégie quipermet au groupe d'utiliser le Amazon SQSSendMessage, mais seulement avec la file d'attente quiappartient à la Compte AWS et est nomméMyCompanyQueue.

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "sqs:SendMessage", "Resource": "arn:aws:sqs:*:123456789012:MyCompanyQueue" }]}

Vous pouvez utiliser * au lieu de SendMessage pour attribuer les actions suivantes à un mandataire surune file d'attente partagée : ChangeMessageVisibility, DeleteMessage, GetQueueAttributes,GetQueueUrl, ReceiveMessage et SendMessage.

Note

Bien que*inclut l'accès fourni par d'autres types d'autorisation, Amazon SQS examine lesautorisations séparément. Par exemple, il est possible d'accorder à la fois les autorisations * etSendMessage à un utilisateur, même si le symbole * inclut l'accès fourni par SendMessage.

131

Page 138: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurUtilisation de stratégies basées sur l'identité

Ce concept s'applique également quand vous supprimez une autorisation. Si un mandatairedispose uniquement d'une autorisation *, toute demande de suppression de l'autorisationSendMessage ne signifie pas que l'utilisateur peut tout faire, sauf cette action. Au lieu de cela,cette demande n'a aucun effet, car le mandataire n'a aucune autorisation SendMessage explicite.Pour attribuer uniquement l'autorisation ReceiveMessage au mandataire, commencez parajouter l'autorisation ReceiveMessage, puis supprimez l'autorisation *.

Exemple 3 : Permettre aux responsables d'obtenir la taille générale des filesd'attente

Dans l'exemple suivant, nous créons un groupe de responsables et associons une stratégie qui permet augroupe d'utiliser le Amazon SQSGetQueueAttributesavec toutes les files d'attente qui appartiennent àlaAWS.

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "sqs:GetQueueAttributes", "Resource": "*" }]}

Exemple 4 : Permettre à un partenaire d'envoyer des messages à une filed'attente spécifique

Vous pouvez accomplir cette tâche à l'aide d'une stratégie Amazon SQS ou IAM. Si votre partenaire a unCompte AWS , il sera peut-être plus facile d'utiliser une stratégie Amazon SQS. Cependant, tout utilisateurde l'entreprise du partenaire qui dispose des informations d'identification de sécurité AWS peut envoyerdes messages à la file d'attente Si vous souhaitez limiter l'accès à un utilisateur ou une application enparticulier, vous devez traiter le partenaire comme un utilisateur de votre propre entreprise et utiliser unestratégie IAM au lieu d'une stratégie Amazon SQS.

L'exemple suivant effectue les actions suivantes :

1. Création d'un groupe appelé WidgetCo pour représenter l'entreprise du partenaire.2. Création d'un utilisateur pour la personne ou l'application spécifique qui a besoin d'un accès dans

l'entreprise du partenaire.3. Ajoutez l'utilisateur au groupe .4. Association d'une stratégie qui donne au groupe l'accès à l'action SendMessage, mais uniquement

pour la file d'attente WidgetPartnerQueue.

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "sqs:SendMessage", "Resource": "arn:aws:sqs:*:123456789012:WidgetPartnerQueue" }]}

Exemples de stratégies de base Amazon SQSCette section présente des exemples de stratégies pour les cas d'utilisation les plus courants d'AmazonSQS.

132

Page 139: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurUtilisation de stratégies basées sur l'identité

Vous pouvez utiliser la console pour vérifier les effets de chaque stratégie lorsque vous les associez àl'utilisateur. Au départ, l'utilisateur n'a pas les autorisations requises et ne peut donc effectuer aucuneaction dans la console. A mesure que vous lui associez des stratégies, vous pouvez vérifier que l'utilisateurpeut exécuter diverses actions dans la console.

Note

Nous vous recommandons d'utiliser deux fenêtres de navigateur : une pour accorder desautorisations, l'autre pour vous connecter à AWS Management Console avec les informationsd'identification de l'utilisateur afin de vérifier au fur et à mesure les autorisations que vous luiaccordez.

Exemple 1 : Octroi d'une autorisation à un Compte AWS

L'exemple de stratégie suivant donne Compte AWSnumber111122223333l'opérateurSendMessageAutorisation de la file d'attente nommée444455556666/queue1dans la région USA Est (Ohio).

{ "Version": "2012-10-17", "Id": "Queue1_Policy_UUID", "Statement": [{ "Sid":"Queue1_SendMessage", "Effect": "Allow", "Principal": { "AWS": [ "111122223333" ] }, "Action": "sqs:SendMessage", "Resource": "arn:aws:sqs:us-east-2:444455556666:queue1" }] }

Exemple 2 : Octroi de deux autorisations à un Compte AWS

L'exemple de stratégie suivant donne Compte AWS number111122223333LesdeuxSendMessageandReceiveMessageAutorisation de la file d'attente nommée444455556666/queue1.

{ "Version": "2012-10-17", "Id": "Queue1_Policy_UUID", "Statement": [{ "Sid":"Queue1_Send_Receive", "Effect": "Allow", "Principal": { "AWS": [ "111122223333" ] }, "Action": [ "sqs:SendMessage", "sqs:ReceiveMessage" ], "Resource": "arn:aws:sqs:*:444455556666:queue1" }]}

133

Page 140: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurUtilisation de stratégies basées sur l'identité

Exemple 3 : Accorder toutes les autorisations à deux Comptes AWSL'exemple de stratégie suivant accorde deux Comptes AWS Numéros(111122223333and444455556666) l'autorisation d'utiliser toutes les actions pour lesquelles AmazonSQS permet un accès partagé pour la file d'attente nommée123456789012/queue1dans la région USAEst (Ohio).

{ "Version": "2012-10-17", "Id": "Queue1_Policy_UUID", "Statement": [{ "Sid":"Queue1_AllActions", "Effect": "Allow", "Principal": { "AWS": [ "111122223333", "444455556666" ] }, "Action": "sqs:*", "Resource": "arn:aws:sqs:us-east-2:123456789012:queue1" }]}

Exemple 4 : Accorder des autorisations inter-comptes à un rôle et à un nomd'utilisateurL'exemple de stratégie suivant donnerole1andusername1UNDER Compte AWSnumber111122223333Autorisation entre comptes d'utiliser toutes les actions pour lesquelles AmazonSQS permet un accès partagé pour la file d'attente nommée123456789012/queue1dans la région USAEst (Ohio).

Les autorisations entre comptes ne s'appliquent pas aux actions suivantes :

• AddPermission

• CreateQueue

• DeleteQueue

• ListQueues

• ListQueueTags

• RemovePermission

• SetQueueAttributes

• TagQueue

• UntagQueue

{ "Version": "2012-10-17", "Id": "Queue1_Policy_UUID", "Statement": [{ "Sid":"Queue1_AllActions", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::111122223333:role/role1", "arn:aws:iam::111122223333:user/username1" ] }, "Action": "sqs:*",

134

Page 141: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurUtilisation de stratégies basées sur l'identité

"Resource": "arn:aws:sqs:us-east-2:123456789012:queue1" }]}

Exemple 5 : Octroi d'une autorisation à tous les utilisateursL'exemple de stratégie suivant accorde à tous les utilisateurs (anonymes) l'autorisation ReceiveMessagepour la file d'attente dénommée 111122223333/queue1.

{ "Version": "2012-10-17", "Id": "Queue1_Policy_UUID", "Statement": [{ "Sid":"Queue1_AnonymousAccess_ReceiveMessage", "Effect": "Allow", "Principal": "*", "Action": "sqs:ReceiveMessage", "Resource": "arn:aws:sqs:*:111122223333:queue1" }]}

Exemple 6 : Octroi d'une autorisation limitée dans le temps à tous les utilisateursL'exemple de stratégie suivant accorde à tous les utilisateurs (anonymes) l'autorisation ReceiveMessagepour la file d'attente dénommée 111122223333/queue1, mais seulement entre 12 h (midi) et 15 h le31 janvier 2009.

{ "Version": "2012-10-17", "Id": "Queue1_Policy_UUID", "Statement": [{ "Sid":"Queue1_AnonymousAccess_ReceiveMessage_TimeLimit", "Effect": "Allow", "Principal": "*", "Action": "sqs:ReceiveMessage", "Resource": "arn:aws:sqs:*:111122223333:queue1", "Condition" : { "DateGreaterThan" : { "aws:CurrentTime":"2009-01-31T12:00Z" }, "DateLessThan" : { "aws:CurrentTime":"2009-01-31T15:00Z" } } }]}

Exemple 7 : Accorder toutes les autorisations à tous les utilisateurs d'une plaged'adresses CIDRL'exemple de stratégie suivant accorde à tous les utilisateurs (anonymes) l'autorisation d'utiliser toutes lesactions Amazon SQS qui peuvent être partagées pour la file d'attente dénommée111122223333/queue1,mais seulement si la requête provient de la192.168.143.0/24Plage CIDR.

{ "Version": "2012-10-17", "Id": "Queue1_Policy_UUID", "Statement": [{ "Sid":"Queue1_AnonymousAccess_AllActions_AllowlistIP", "Effect": "Allow", "Principal": "*",

135

Page 142: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurUtilisation de stratégies personnalisées

avec le langage d'access policy

"Action": "sqs:*", "Resource": "arn:aws:sqs:*:111122223333:queue1", "Condition" : { "IpAddress" : { "aws:SourceIp":"192.168.143.0/24" } } }]}

Exemple 8 : Autorisations de liste d'autorisations et de liste de blocage pour lesutilisateurs de différentes plages d'adresses CIDR

L'exemple de stratégie suivant comporte deux instructions :

• La première instruction accorde à tous les utilisateurs (anonymes) de la plage d'adresses CIDR192.168.143.0/24 (à l'exception de 192.168.143.188) l'autorisation d'utiliser l'actionSendMessage pour la file d'attente dénommée 111122223333/queue1.

• La deuxième instruction empêche tous les utilisateurs (anonymes) de la plage d'adresses CIDR10.1.2.0/24 d'utiliser la file d'attente en les ajoutant à une liste de blocage.

{ "Version": "2012-10-17", "Id": "Queue1_Policy_UUID", "Statement": [{ "Sid":"Queue1_AnonymousAccess_SendMessage_IPLimit", "Effect": "Allow", "Principal": "*", "Action": "sqs:SendMessage", "Resource": "arn:aws:sqs:*:111122223333:queue1", "Condition" : { "IpAddress" : { "aws:SourceIp":"192.168.143.0/24" }, "NotIpAddress" : { "aws:SourceIp":"192.168.143.188/32" } } }, { "Sid":"Queue1_AnonymousAccess_AllActions_IPLimit_Deny", "Effect": "Deny", "Principal": "*", "Action": "sqs:*", "Resource": "arn:aws:sqs:*:111122223333:queue1", "Condition" : { "IpAddress" : { "aws:SourceIp":"10.1.2.0/24" } } }]}

Utilisation de stratégies personnalisées avec lelangage de stratégie d'accès Amazon SQSSi vous souhaitez autoriser l'accès Amazon SQS uniquement sur la base d'un Compte AWS ID etautorisations de base (comme pourSendMessageouReceiveMessage), vous n'avez pas besoin d'écrirevos propres stratégies. Vous pouvez simplement utiliser Amazon SQSAddPermissionaction.

136

Page 143: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurUtilisation de stratégies personnalisées

avec le langage d'access policy

Si vous souhaitez refuser ou autoriser explicitement l'accès sur la base de conditions plus spécifiques (parexemple, l'heure de la demande ou l'adresse IP du demandeur), vous devez écrire vos propres stratégiesAmazon SQS et les importer dans leAWSsystème utilisant Amazon SQSSetQueueAttributesaction.

Rubriques• Architecture de contrôle d'accès Amazon SQS (p. 137)• Flux de travail des processus de contrôle d'accès Amazon SQ (p. 138)• Concepts clés de langue de stratégie d'accès Amazon SQS (p. 138)• Logique d'évaluation du langage de stratégie d'accès Amazon SQS (p. 140)• Relations entre les refus explicites et les refus par défaut dans le langage de stratégie d'accès Amazon

SQS (p. 142)• Exemples de langue de stratégie d'accès Amazon SQS personnalisés (p. 144)

Architecture de contrôle d'accès Amazon SQSLe schéma suivant décrit le système de contrôle d'accès s'appliquant à vos ressources Amazon SQS.

Vous-même, le propriétaire de la ressource.

Vos ressources contenues dans leAWS(par exemple, les files d'attente Amazon SQS).

Vos stratégies. Il est recommandé d'avoir une stratégie par ressource. Le service AWS fournit une APIque vous utilisez pour importer et gérer vos stratégies.

Les demandeurs et leurs demandes entrantes au service AWS.

Code d'évaluation du langage d'access policy. Il s'agit du code du service AWS qui évalue les demandesentrantes par rapport aux stratégies applicables et de détermine si le demandeur est autorisé à accéder àla ressource.

137

Page 144: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurUtilisation de stratégies personnalisées

avec le langage d'access policy

Flux de travail des processus de contrôle d'accès Amazon SQLe schéma suivant décrit le flux de travail général du contrôle d'accès avec le langage de stratégie d'accèsAmazon SQS.

Vous écrivez une stratégie Amazon SQS pour votre file d'attente.

Vous importez la stratégie dansAWS. Le service AWS fournit une API que vous utilisez pour téléchargervos stratégies. Par exemple, vous utilisez Amazon SQSSetQueueAttributesAction pour téléchargerune stratégie pour une file d'attente Amazon SQS spécifique.

Quelqu'un envoie une demande d'utilisation de votre file d'attente Amazon SQS.

Amazon SQS examine toutes les stratégies Amazon SQS disponibles et détermine lesquelles sontapplicables.

Amazon SQS évalue les stratégies et détermine si le demandeur est autorisé à utiliser votre file d'attente.

En fonction du résultat de l'évaluation de la stratégie, Amazon SQS renvoie unAccess deniedErreur audemandeur ou continue à traiter la demande.

Concepts clés de langue de stratégie d'accès Amazon SQSPour écrire vos propres stratégies, vous devez être familiarisé avec le langage JSON et un certain nombrede concepts clés.

Autorisation

Résultat d'une Instruction (p. 139) dont l'Effet (p. 139) est défini sur allow.Action

L'activité que leMandataire (p. 139)est autorisé à effectuer, généralement une demande deAWS.Default-deny

Résultat d'une Instruction (p. 139) ne disposant d'aucun paramètre Autorisation (p. 138) ou Explicit-deny (p. 139).

Condition

Tout détail ou restriction concernant une Autorisation (p. 139). Les conditions typiques sont liées à ladate et à l'heure, ainsi qu'aux adresses IP.

138

Page 145: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurUtilisation de stratégies personnalisées

avec le langage d'access policy

Effet

Résultat que vous souhaitez que la Instruction (p. 139) d'une Policy (p. 139) renvoie au momentde l'évaluation. Vous spécifiez la valeur deny ou allow lorsque vous écrivez la déclaration destratégie. Trois résultats sont possibles lors de l'évaluation de stratégie : Default-deny (p. 138),Autorisation (p. 138) ou Explicit-deny (p. 139).

Explicit-deny

Résultat d'une Instruction (p. 139) dont l'Effet (p. 139) est défini sur deny.Evaluation

Processus utilisé par Amazon SQS pour déterminer si une demande entrante doit être refusée ouautorisée en fonction d'unePolicy (p. 139).

Emetteur

Utilisateur qui écrit une Policy (p. 139) pour accorder des autorisations à une ressource. L'émetteur,par définition, est toujours le propriétaire de la ressource.AWSn'autorise pas les utilisateurs AmazonSQS à créer des stratégies pour les ressources qui ne leur appartiennent pas.

Key

Caractéristique spécifique à la base d'une restriction d'accès.Autorisation

Concept consistant à autoriser ou refuser l'accès à une ressource à l'aide d'une Condition (p. 138) etd'une Key (p. 139).

Policy

Document jouant le rôle de conteneur pour une ou plusieurs déclarations (p. 139).

Amazon SQS utilise la stratégie pour déterminer s'il convient d'autoriser un utilisateur à accéder à uneressource.

Mandataire

Utilisateur qui reçoit l'Autorisation (p. 139) dans la Policy (p. 139).Ressource

Objet auquel le Mandataire (p. 139) demande l'accès.Instruction

Description formelle d'une autorisation unique, écrite dans le langage de la stratégie d'accès, dans lecadre d'unePolicy (p. 139)document.

139

Page 146: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurUtilisation de stratégies personnalisées

avec le langage d'access policy

Demandeur

Utilisateur qui envoie une demande d'accès à une Ressource (p. 139).

Logique d'évaluation du langage de stratégie d'accès AmazonSQSAu moment de l'évaluation, Amazon SQS détermine si une demande d'un utilisateur qui n'est pas lepropriétaire de la ressource doit être autorisée ou refusée. La logique d'évaluation suit plusieurs règles debase :

• Par défaut, toutes les demandes d'utilisation de votre ressource ne provenant pas de vous-même sontrefusées.

• La valeur Autorisation (p. 138) prévaut sur Default-deny (p. 138).• La valeur Explicit-deny (p. 139) prévaut sur allow.• L'ordre dans lequel les stratégies sont évaluées n'a pas d'importance.

Le schéma suivant décrit en détail la façon dont Amazon SQS évalue les décisions relatives auxautorisations d'accès.

140

Page 147: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurUtilisation de stratégies personnalisées

avec le langage d'access policy

La décision commence par un refus par défaut (default-deny).

Le code d'application évalue toutes les stratégies qui s'appliquent à la demande (en se basant sur laressource, le mandataire, l'action et les conditions). L'ordre dans lequel le code d'application évalue lesstratégies n'a pas d'importance.

Le code d'application recherche une instruction explicit-deny qui peut s'appliquer à la demande. S'il entrouve une, le code d'application renvoie une décision de type deny (refus) et le processus se termine.

141

Page 148: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurUtilisation de stratégies personnalisées

avec le langage d'access policy

En l'absence d'instruction explicit-deny (refus explicite), le code d'application recherche des instructionsallow (autorisation) pouvant s'appliquer à la demande. S'il en trouve une, il renvoie une décision de typeallow (autoriser) et le processus se termine (le service continue à traiter la demande).

Si aucune instruction allow n'est détectée, la décision finale est un refus (deny). En l'absence de refusexplicite (explicit-deny) ou d'autorisation (allow), nous parlons d'un refus par défaut (default-deny).

Relations entre les refus explicites et les refus par défaut dans lelangage de stratégie d'accès Amazon SQSSi une stratégie Amazon SQS ne s'applique pas directement à une demande, celle-ci se conclut parunDefault-deny (p. 138). Par exemple, si un utilisateur demande l'autorisation d'utiliser Amazon SQS,mais que la seule stratégie qui s'applique à l'utilisateur indique qu'il peut utiliser DynamoDB, la demande seconcluent par undefault-deny (refus par défaut).

Si une condition de la déclaration n'est pas respectée, la demande se conclut par un default-deny. Sitoutes les conditions d'une déclaration sont respectées, la demande se conclut par une décision de typeAutorisation (p. 138) ou Explicit-deny (p. 139), en fonction de la valeur de l'élément Effet (p. 139)de la stratégie. Les stratégies ne spécifient pas comment procéder si une condition n'est pas respectée.Le résultat par défaut est donc un default-deny dans ce cas. Supposons par exemple que vous souhaitezrefuser les demandes provenant de l'Antarctique. Vous créez une stratégie Policy A1 qui autorise unedemande uniquement si elle ne provient pas de l'Antarctique. Le schéma suivant illustre la stratégieAmazon SQS.

Si un utilisateur envoie une demande depuis les États-Unis, la condition est respectée (la demande neprovient pas de l'Antarctique) et la demande se conclut par une décision allow. Par contre, si un utilisateurenvoie une demande depuis l'Antarctique, la condition n'est pas respectée et la demande se conclut pardéfaut par un default-deny. Vous pouvez modifier le résultat et le faire passer en explicit-deny en écrivantune stratégie Policy A2 qui refuse explicitement toute demande provenant de l'Antarctique. Le schémasuivant illustre la stratégie.

142

Page 149: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurUtilisation de stratégies personnalisées

avec le langage d'access policy

Si un utilisateur envoie une demande depuis l'Antarctique, la condition est remplie et la demande se conclutpar un explicit-deny.

Il est important de bien faire la distinction entre un default-deny et un explicit-deny, car une décisionallow peut prévaloir sur le premier mais pas sur le second. Par exemple, la stratégie Policy B autorise lesdemandes si elles arrivent le 1er juin 2010. Le schéma suivant compare l'association de cette stratégieavec une stratégie Policy A1 et une stratégie Policy A2.

Dans le scénario 1, la stratégie Policy A1 se conclut par un default-deny et la stratégie Policy B par unallow, car la stratégie autorise les demandes qui arrivent le 1er juin 2010. L'autorisation allow de Policy Bremplace le refus par défaut (default-deny) de Policy A1 et, par conséquent, la demande est autorisée.

Dans le scénario 2, la stratégie Policy B2 génère un explicit-deny et la stratégie Policy B génère unedécision allow. Le refus explicite (explicit-deny) de Policy A2 remplace l'autorisation (allow) de Policy B et,par conséquent, la demande est refusée.

143

Page 150: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurUtilisation de stratégies personnalisées

avec le langage d'access policy

Exemples de langue de stratégie d'accès Amazon SQSpersonnalisésVoici des exemples classiques de stratégies d'accès Amazon SQS.

Exemple 1 : Accorder une autorisation à un compte

L'exemple suivant de stratégie Amazon SQS donne Compte AWS 111122223333 Autorisation d'envoyer etde recevoirqueue2Appartient à Compte AWS 444455556666.

{ "Version": "2012-10-17", "Id": "UseCase1", "Statement" : [{ "Sid": "1", "Effect": "Allow", "Principal": { "AWS": [ "111122223333" ] }, "Action": [ "sqs:SendMessage", "sqs:ReceiveMessage" ], "Resource": "arn:aws:sqs:us-east-2:444455556666:queue2" }]}

Exemple 2 : Accorder une autorisation à un ou plusieurs comptes

L'exemple suivant de stratégie Amazon SQS donne un ou plusieurs Comptes AWS Accès à desfiles d'attente détenues par votre compte pendant une période de temps spécifique. Il est nécessaired'écrire cette stratégie et de la télécharger dans Amazon SQS à l'aide duSetQueueAttributescarl'actionAddPermissionne permet pas de spécifier une restriction de durée lors de l'octroi de l'accès à unefile d'attente.

{ "Version": "2012-10-17", "Id": "UseCase2", "Statement" : [{ "Sid": "1", "Effect": "Allow", "Principal": { "AWS": [ "111122223333", "444455556666" ] }, "Action": [ "sqs:SendMessage", "sqs:ReceiveMessage" ], "Resource": "arn:aws:sqs:us-east-2:444455556666:queue2", "Condition": { "DateLessThan": { "AWS:CurrentTime": "2009-06-30T12:00Z" } } }]

144

Page 151: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurUtilisation de stratégies personnalisées

avec le langage d'access policy

}

Exemple 3 : Accorder une autorisation à des demandes provenant d'instancesAmazon EC2

L'exemple de stratégie Amazon SQS suivant donne accès aux demandes provenant d'instances AmazonEC2. Cet exemple repose sur l'exemple « Exemple 2 : Accorder une autorisation à un ou plusieurscomptes (p. 144) » : il restreint l'accès aux demandes envoyées avant le 30 juin 2009 à midi (UTC), ainsiqu'à la plage d'adresses IP 203.0.113.0/24. Il est nécessaire d'écrire cette stratégie et de la téléchargerdans Amazon SQS à l'aide duSetQueueAttributescar l'actionAddPermissionne permet pas despécifier une restriction d'adresse IP lors de l'octroi de l'accès à une file d'attente.

{ "Version": "2012-10-17", "Id": "UseCase3", "Statement" : [{ "Sid": "1", "Effect": "Allow", "Principal": { "AWS": [ "111122223333" ] }, "Action": [ "sqs:SendMessage", "sqs:ReceiveMessage" ], "Resource": "arn:aws:sqs:us-east-2:444455556666:queue2", "Condition": { "DateLessThan": { "AWS:CurrentTime": "2009-06-30T12:00Z" }, "IpAddress": { "AWS:SourceIp": "203.0.113.0/24" } } }]}

Exemple 4 : Refuser l'accès à un compte spécifique

L'exemple suivant de stratégie Amazon SQS refuse une Compte AWS Accès à la file d'attente. Cetexemple s'appuie sur le »Exemple 1 : Accorder une autorisation à un compte (p. 144)Exemple : il refusel'accès à la Compte AWS . Il est nécessaire d'écrire cette stratégie et de la télécharger dans Amazon SQSà l'aide duSetQueueAttributescar l'actionAddPermissionne permet pas de refuser l'accès à une filed'attente (elle permet uniquement d'accorder l'accès à une file d'attente).

{ "Version": "2012-10-17", "Id": "UseCase4", "Statement" : [{ "Sid": "1", "Effect": "Deny", "Principal": { "AWS": [ "111122223333" ] }, "Action": [ "sqs:SendMessage",

145

Page 152: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurUtilisation de stratégies personnalisées

avec le langage d'access policy

"sqs:ReceiveMessage" ], "Resource": "arn:aws:sqs:us-east-2:444455556666:queue2" }]}

Exemple 5 : Refuser l'accès s'il n'émane pas d'un point de terminaison de VPC

L'exemple de stratégie Amazon SQS suivant restreint l'accès àqueue1 : 111122223333 peut exécuterl'SendMessageandReceiveMessageactions uniquement à partir de l'ID du point de terminaisondu VPCvpce-1a2b3c4d(spécifié à l'aide deaws:sourceVpceCondition IN). Pour de plus amplesinformations, veuillez consulter Points de terminaison Amazon Virtual Private Cloud pour AmazonSQS (p. 119).

Note

• La condition aws:sourceVpce ne requiert pas d'ARN pour la ressource du point determinaison de VPC, uniquement l'ID du point de terminaison de VPC.

• Vous pouvez modifier l'exemple suivant pour restreindre toutes les actions à un point determinaison de VPC spécifique en refusant toutes les actions Amazon SQS (sqs:*) dans ladeuxième déclaration. Toutefois, une telle déclaration de stratégie stipulerait que toutes lesactions (y compris les actions administratives requises pour modifier les autorisations de la filed'attente) doivent être effectuées via le point de terminaison de VPC spécifique défini dans lastratégie, ce qui pourrait empêcher l'utilisateur de modifier les autorisations de la file d'attentepar la suite.

{ "Version": "2012-10-17", "Id": "UseCase5", "Statement": [{ "Sid": "1", "Effect": "Allow", "Principal": { "AWS": [ "111122223333" ] }, "Action": [ "sqs:SendMessage", "sqs:ReceiveMessage" ], "Resource": "arn:aws::sqs:us-east-2:111122223333:queue1" }, { "Sid": "2", "Effect": "Deny", "Principal": "*", "Action": [ "sqs:SendMessage", "sqs:ReceiveMessage" ], "Resource": "arn:aws::sqs:us-east-2:111122223333:queue1", "Condition": { "StringNotEquals": { "aws:sourceVpce": "vpce-1a2b3c4d" } } } ]}

146

Page 153: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurUtilisation d'informations

d'identification de sécurité temporaires

Utilisation d'informations d'identification de sécuritétemporaires avec Amazon SQSOutre la création d'utilisateurs IAM avec leurs propres informations d'identification de sécurité, IAMvous permet également d'accorder des informations d'identification de sécurité temporaires à n'importequel utilisateur en l'autorisant à accéder à votreAWSservices et ressources. Vous pouvez gérer lesutilisateurs qui possèdent Comptes AWS (utilisateurs IAM). Vous pouvez également gérer les utilisateursde votre système qui ne disposent pas de Comptes AWS (utilisateurs fédérés). De plus, les applicationsque vous créez pour accéder à vos ressources AWS peuvent également être considérées comme des« utilisateurs ».

Vous pouvez utiliser ces informations d'identification de sécurité temporaires pour effectuer des demandesauprès d'Amazon SQS. Les bibliothèques d'API calculent la valeur de signature nécessaire en utilisant cesinformations d'identification pour authentifier votre demande. Si vous envoyez des demandes en utilisantdes informations d'identification expirées, Amazon SQS les rejette.

Note

Vous ne pouvez pas définir une stratégie en fonction d'informations d'identification temporaires.

Prerequisites1. Utilisez IAM pour créer des informations d'identification de sécurité temporaires :

• Jeton de sécurité• ID de clé d’accès• Clé d’accès secrète

2. Préparez votre chaîne pour signer avec l'ID de clé d'accès temporaire et le jeton de sécurité.3. Utilisez la clé d'accès secrète temporaire au lieu de votre propre clé d'accès secrète pour signer votre

demande d'API de requête.

Note

Lorsque vous envoyez la demande d'API de requête signée, utilisez l'ID de clé d'accès temporaireau lieu de votre propre ID de clé d'accès, et incluez le jeton de sécurité. Pour plus d'informationssur la prise en charge par IAM pour les informations d'identification de sécurité temporaires,consultezOctroi d'un accès temporaire à votreAWSRessourcesdans leIAM User Guide.

Pour appeler une action d'API de requête Amazon SQS à l'aided'informations d'identification de sécurité temporaires1. Demandez un jeton de sécurité temporaire à l'aide d'AWS Identity and Access Management. Pour

de plus amples informations, veuillez consulterCréation d'informations d'identification de sécuritétemporaires pour activer l'accès pour les utilisateurs IAMdans leIAM User Guide.

IAM renvoie un jeton de sécurité, un ID de clé d'accès et une clé d'accès secrète.2. Préparez votre requête en utilisant l'ID de clé d'accès temporaire à la place de votre propre ID de

clé d'accès, et incluez le jeton de sécurité. Signez votre demande à l'aide de la clé d'accès secrètetemporaire au lieu de la vôtre.

3. Soumettez votre chaîne de requête signée avec l'ID de clé d'accès temporaire et le jeton de sécurité.

L'exemple suivant montre comment utiliser des informations d'identification de sécurité temporairespour authentifier une demande Amazon SQS. La structure deAUTHPARAMSdépend de la signature de

147

Page 154: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurRéférence des autorisations d'API

la requête API. Pour de plus amples informations, veuillez consulterSignerAWSDemandes d’APIdansleRéférence générale d'Amazon Web Services.

https://sqs.us-east-2.amazonaws.com/?Action=CreateQueue&DefaultVisibilityTimeout=40&QueueName=MyQueue&Attribute.1.Name=VisibilityTimeout&Attribute.1.Value=40&Expires=2020-12-18T22%3A52%3A43PST&SecurityToken=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY&AWSAccessKeyId=AKIAIOSFODNN7EXAMPLE&Version=2012-11-05&AUTHPARAMS

L'exemple suivant utilise des informations d'identification de sécurité temporaires pour envoyer deuxmessages à l'aide de l'action SendMessageBatch.

https://sqs.us-east-2.amazonaws.com/?Action=SendMessageBatch&SendMessageBatchRequestEntry.1.Id=test_msg_001&SendMessageBatchRequestEntry.1.MessageBody=test%20message%20body%201&SendMessageBatchRequestEntry.2.Id=test_msg_002&SendMessageBatchRequestEntry.2.MessageBody=test%20message%20body%202&SendMessageBatchRequestEntry.2.DelaySeconds=60&Expires=2020-12-18T22%3A52%3A43PST&SecurityToken=je7MtGbClwBF/2Zp9Utk/h3yCo8nvbEXAMPLEKEY&AWSAccessKeyId=AKIAI44QH8DHBEXAMPLE&Version=2012-11-05&AUTHPARAMS

Autorisations de l'API Amazon SQS : Référence desactions et ressourcesLorsque vous configurezContrôle d'accès (p. 122)et des stratégies d'autorisations d'écriture que vouspouvez attacher à une identité IAM, vous pouvez utiliser le tableau suivant comme référence. Le listecomprendChaque action Amazon Simple Queue Service, les actions correspondantes pour lesquelles vouspouvez accorder des autorisations d'exécution, et leAWSRessource pour laquelle vous pouvez accorderles autorisations.

Spécifiez les actions dans le champ Action de la stratégie, et la valeur des ressources dans le champResource de la stratégie. Pour spécifier une action, utilisez le préfixe sqs: suivi du nom de l'action (parexemple, sqs:CreateQueue).

Actuellement, Amazon SQS prend en charge uniquement un sous-ensemble limité duclés de conditiondisponibles dans IAM :

• aws:CurrentTime

• aws:EpochTime

• aws:SecureTransport

• aws:SourceAccount

• aws:SourceArn

148

Page 155: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurRéférence des autorisations d'API

Note

Cette condition garantit queAWSn'accordent l'accès qu'au nom des ressources que votreCompte AWS possède. Vous ne pouvez pas spécifier l'ARN d'un rôle IAM en tant qu'ARNsource, car un rôle IAM n'est ni une source ni un service.

• aws:SourceIP

• aws:UserAgent

• aws:MultiFactorAuthAge

• aws:MultiFactorAuthPresent

• aws:PrincipalOrgID

• aws:RequestTag

• aws:sourceVpce

• aws:TagKeys

• aws:TokenAge

API Amazon Simple Queue Service et autorisations requises pour les actions

AddPermission

Action(s) : sqs:AddPermission

Ressource: arn:aws:sqs:region:account_id:queue_nameChangeMessageVisibility

Action(s) : sqs:ChangeMessageVisibility

Ressource: arn:aws:sqs:region:account_id:queue_nameChangeMessageVisibilityBatch

Action(s) : sqs:ChangeMessageVisibilityBatch

Ressource: arn:aws:sqs:region:account_id:queue_nameCreateQueue

Action(s) : sqs:CreateQueue

Ressource: arn:aws:sqs:region:account_id:queue_nameDeleteMessage

Action(s) : sqs:DeleteMessage

Ressource: arn:aws:sqs:region:account_id:queue_nameDeleteMessageBatch

Action(s) : sqs:DeleteMessageBatch

Ressource: arn:aws:sqs:region:account_id:queue_nameDeleteQueue

Action(s) : sqs:DeleteQueue

Ressource: arn:aws:sqs:region:account_id:queue_nameGetQueueAttributes

Action(s) : sqs:GetQueueAttributes

Ressource: arn:aws:sqs:region:account_id:queue_name

149

Page 156: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurJournalisation et surveillance

GetQueueUrl

Action(s) : sqs:GetQueueUrl

Ressource: arn:aws:sqs:region:account_id:queue_nameListDeadLetterSourceQueues

Action(s) : sqs:ListDeadLetterSourceQueues

Ressource: arn:aws:sqs:region:account_id:queue_nameListQueues

Action(s) : sqs:ListQueues

Ressource: arn:aws:sqs:region:account_id:queue_nameListQueueTags

Action(s) : sqs:ListQueueTags

Ressource: arn:aws:sqs:region:account_id:queue_namePurgeQueue

Action(s) : sqs:PurgeQueue

Ressource: arn:aws:sqs:region:account_id:queue_nameReceiveMessage

Action(s) : sqs:ReceiveMessage

Ressource: arn:aws:sqs:region:account_id:queue_nameRemovePermission

Action(s) : sqs:RemovePermission

Ressource: arn:aws:sqs:region:account_id:queue_nameSendMessage et SendMessageBatch

Action(s) : sqs:SendMessage

Ressource: arn:aws:sqs:region:account_id:queue_nameSetQueueAttributes

Action(s) : sqs:SetQueueAttributes

Ressource: arn:aws:sqs:region:account_id:queue_nameTagQueue

Action(s) : sqs:TagQueue

Ressource: arn:aws:sqs:region:account_id:queue_nameUntagQueue

Action(s) : sqs:UntagQueue

Ressource: arn:aws:sqs:region:account_id:queue_name

Journalisation et surveillance dans Amazon SQSCette section fournit des informations sur la journalisation et la surveillance des files d'attente AmazonSQS.

150

Page 157: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurJournalisation des appels d'API à l'aide de CloudTrail

Rubriques• Journalisation des appels d'API Amazon SQS avecAWS CloudTrail (p. 151)• Surveillance des files d'attente Amazon SQS avec CloudWatch (p. 155)

Journalisation des appels d'API Amazon SQSavecAWS CloudTrailAmazon SQS est intégré àAWS CloudTrail, un service qui enregistre les appels Amazon SQS qu'unutilisateur, un rôle ouAWSles marques de service. CloudTrail capture tous les appels d'API liés aux filesd'attente Amazon SQS en tant qu'événements, y compris les appels depuis la console Amazon SQS et lesappels de code issus des API Amazon SQS. Pour de plus amples informations, veuillez consulter le Guidede l'utilisateur AWS CloudTrail.

Note

La journalisation CloudTrail est prise en charge pour les files d'attente standard et FIFO.

À l'aide des informations collectées par CloudTrail, vous pouvez identifier une demande spécifique àune API Amazon SQS, l'adresse IP du demandeur, l'identité du demandeur, la date et l'heure de l'action,etc. Si vous configurez unJournal de suivi, vous pouvez diffuser en continu les événements CloudTraildans un compartiment Amazon S3. Si vous ne configurez pas de journal de suivi, vous pouvez afficherles événements les plus récents de l'historique des événements dans la console CloudTrail. Pour deplus amples informations, veuillez consulterPrésentation de la création d'un journal de suividans leAWSCloudTrailGuide de l'utilisateur.

Informations Amazon SQS dans CloudTrailLorsque vous créez votre Compte AWS , CloudTrail est activé. Lorsqu'une activité d'événementAmazon SQS prise en charge a lieu, elle est enregistrée dans un événement CloudTrail avecd'autresAWSévénements de service dans l'historique des événements. Vous pouvez afficher, rechercheret télécharger les événements récents pour votre Compte AWS . Pour de plus amples informations,veuillez consulterAffichage des événements avec l'historique des événements CloudTraildans leAWSCloudTrailGuide de l'utilisateur.

Un journal de suivi permet à CloudTrail de diffuser des fichiers journaux vers un compartiment AmazonS3. Vous pouvez créer un journal de suivi afin de conserver un enregistrement permanent desévénements dans votre Compte AWS . Par défaut, lorsque vous créez un journal de suivi à l'aide d'AWSManagement Console, il s'applique à toutes les régions AWS. Le sentier enregistre les événements detous lesAWSRégions et livre les fichiers journaux dans le compartiment Amazon S3 spécifié. Vous pouvezégalement configurer d'autresAWSPour analyser plus en profondeur les données d'événement collectéesdans les journaux CloudTrail et agir sur celles-ci. Pour de plus amples informations, veuillez consulter lesrubriques suivantes dans le Guide de l'utilisateur AWS CloudTrail :

• Intégrations et services pris en charge par CloudTrail• Configuration des notifications Amazon SNS pour CloudTrail• Réception de fichiers journaux CloudTrail de plusieurs régions• Réception de fichiers journaux CloudTrail de plusieurs comptes

Amazon SQS prend en charge la journalisation des actions suivantes :

• AddPermission

• CreateQueue

• DeleteQueue

151

Page 158: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurJournalisation des appels d'API à l'aide de CloudTrail

• PurgeQueue

• RemovePermission

• SetQueueAttributes

• TagQueue

• UntagQueue

Chaque événement ou entrée de journal contient des informations sur le demandeur. Cette informationpermet de déterminer les éléments suivants :

• La demande a-t-elle été effectuée avec les informations d'identification utilisateur racine ou IAM ?• La demande a-t-elle été effectuée avec des informations d'identification de sécurité temporaires pour un

rôle ou un utilisateur fédéré ?• La demande a-t-elle été effectuée par un autre service AWS ?

Pour de plus amples informations, veuillez consulterCloudTrail userIdentity Elementdans leAWSCloudTrailGuide de l'utilisateur.

Exemple : Entrées de fichier journal Amazon SQSLes fichiers journaux CloudTrail contiennent une ou plusieurs entrées de journal, et chaque entrée estcomposée de plusieurs événements au format JSON. Une entrée de journal représente une demandeindividuelle à partir d'une source quelconque et comprend des informations sur l'action demandée, sur tousles paramètres, sur la date et l'heure de l'action, etc. Les entrées de journal ne suivent aucun ordre précis.Cela signifie qu'il ne s'agit pas d'une série ordonnée retraçant les appels aux API publics.

AddPermissionL'exemple suivant montre une entrée de journal CloudTrail pour unAddPermissionAppel d'API.

{ "Records": [ { "eventVersion": "1.06", "userIdentity": { "type": "IAMUser", "principalId": "AKIAI44QH8DHBEXAMPLE", "arn": "arn:aws:iam::123456789012:user/Alice", "accountId": "123456789012", "accessKeyId": "AKIAIOSFODNN7EXAMPLE", "userName": "Alice" }, "eventTime": "2018-06-28T22:23:46Z", "eventSource": "sqs.amazonaws.com", "eventName": "AddPermission", "awsRegion": "us-east-2", "sourceIPAddress": "203.0.113.0", "userAgent": "Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Firefox/24.0", "requestParameters": { "actions": [ "SendMessage" ], "AWSAccountIds": [ "123456789012" ], "label": "MyLabel", "queueUrl": "https://sqs.us-east-2.amazon.com/123456789012/MyQueue" }, "responseElements": null,

152

Page 159: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurJournalisation des appels d'API à l'aide de CloudTrail

"requestID": "123abcde-f4gh-50ij-klmn-60o789012p30", "eventID": "0987g654-32f1-09e8-d765-c4f3fb2109fa" } ] }

CreateQueueL'exemple suivant montre une entrée de journal CloudTrail pour unCreateQueueAppel d'API.

{ "Records": [ { "eventVersion": "1.06", "userIdentity": { "type": "IAMUser", "principalId": "AKIAI44QH8DHBEXAMPLE", "arn": "arn:aws:iam::123456789012:user/Alejandro", "accountId": "123456789012", "accessKeyId": "AKIAIOSFODNN7EXAMPLE", "userName": "Alejandro" }, "eventTime": "2018-06-28T22:23:46Z", "eventSource": "sqs.amazonaws.com", "eventName": "CreateQueue", "awsRegion": "us-east-2", "sourceIPAddress": "203.0.113.1", "userAgent": "Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Firefox/24.0", "requestParameters": { "queueName": "MyQueue" }, "responseElements": { "queueUrl": "https://sqs.us-east-2.amazon.com/123456789012/MyQueue" }, "requestID": "123abcde-f4gh-50ij-klmn-60o789012p30", "eventID": "0987g654-32f1-09e8-d765-c4f3fb2109fa" } ] }

DeleteQueueL'exemple suivant montre une entrée de journal CloudTrail pour unDeleteQueueAppel d'API.

{ "Records": [ { "eventVersion": "1.06", "userIdentity": { "type": "IAMUser", "principalId": "AKIAI44QH8DHBEXAMPLE", "arn": "arn:aws:iam::123456789012:user/Carlos", "accountId": "123456789012", "accessKeyId": "AKIAIOSFODNN7EXAMPLE", "userName": "Carlos" }, "eventTime": "2018-06-28T22:23:46Z", "eventSource": "sqs.amazonaws.com", "eventName": "DeleteQueue", "awsRegion": "us-east-2", "sourceIPAddress": "203.0.113.2", "userAgent": "Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Firefox/24.0", "requestParameters": {

153

Page 160: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurJournalisation des appels d'API à l'aide de CloudTrail

"queueUrl": "https://sqs.us-east-2.amazon.com/123456789012/MyQueue" }, "responseElements": null, "requestID": "123abcde-f4gh-50ij-klmn-60o789012p30", "eventID": "0987g654-32f1-09e8-d765-c4f3fb2109fa" } ] }

RemovePermissionL'exemple suivant montre une entrée de journal CloudTrail pour unRemovePermissionAppel d'API.

{ "Records": [ { "eventVersion": "1.06", "userIdentity": { "type": "IAMUser", "principalId": "AKIAI44QH8DHBEXAMPLE", "arn": "arn:aws:iam::123456789012:user/Jane", "accountId": "123456789012", "accessKeyId": "AKIAIOSFODNN7EXAMPLE", "userName": "Jane" }, "eventTime": "2018-06-28T22:23:46Z", "eventSource": "sqs.amazonaws.com", "eventName": "RemovePermission", "awsRegion": "us-east-2", "sourceIPAddress": "203.0.113.3", "userAgent": "Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Firefox/24.0", "requestParameters": { "label": "label", "queueUrl": "https://sqs.us-east-2.amazon.com/123456789012/MyQueue" }, "responseElements": null, "requestID": "123abcde-f4gh-50ij-klmn-60o789012p30", "eventID": "0987g654-32f1-09e8-d765-c4f3fb2109fa" } ] }

SetQueueAttributesL'exemple suivant montre une entrée de journal CloudTrail pourSetQueueAttributes :

{ "Records": [ { "eventVersion": "1.06", "userIdentity": { "type": "IAMUser", "principalId": "AKIAI44QH8DHBEXAMPLE", "arn": "arn:aws:iam::123456789012:user/Maria", "accountId": "123456789012", "accessKeyId": "AKIAIOSFODNN7EXAMPLE", "userName": "Maria" }, "eventTime": "2018-06-28T22:23:46Z", "eventSource": "sqs.amazonaws.com", "eventName": "SetQueueAttributes", "awsRegion": "us-east-2", "sourceIPAddress": "203.0.113.4",

154

Page 161: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurSurveillance de files d'attente avec CloudWatch

"userAgent": "Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Firefox/24.0", "requestParameters": { "attributes": { "VisibilityTimeout": "100" }, "queueUrl": "https://sqs.us-east-2.amazon.com/123456789012/MyQueue" }, "responseElements": null, "requestID": "123abcde-f4gh-50ij-klmn-60o789012p30", "eventID": "0987g654-32f1-09e8-d765-c4f3fb2109fa" } ] }

Surveillance des files d'attente Amazon SQS avecCloudWatchAmazon SQS et Amazon CloudWatch sont intégrés afin que vous puissiez utiliser CloudWatchpour afficher et analyser les mesures de vos files d'attente Amazon SQS. Vous pouvez afficher etanalyser les métriques de vos files d'attente à partir de laConsole Amazon SQS (p. 155), leConsoleCloudWatch (p. 156), à l'aide de l'AWS CLI (p. 157), ou à l'aide de laCloudWatch (p. 157). Vouspouvez égalementDéfinition des alarmes CloudWatch (p. 157)pour les métriques Amazon SQS.

Les métriques CloudWatch des files d'attente Amazon SQS sont automatiquement collectées et transmisesà CloudWatch à intervalles d'une minute. Ces métriques sont rassemblées pour toutes les files d'attentequi sont considérées par CloudWatch commeactif. CloudWatch considère qu'une file d'attente est activependant six heures si elle contient des messages ou si une action y accède.

Note

• Les métriques Amazon SQS signalées dans CloudWatch ne sont pas facturées. Elles sontfournies dans le cadre du service Amazon SQS.

• Les métriques CloudWatch sont prises en charge pour les files d'attente standard et FIFO.

Rubriques• Accès aux métriques CloudWatch pour Amazon SQS (p. 155)• Création d'alarmes CloudWatch pour les mesures Amazon SQS (p. 157)• Métriques CloudWatch disponibles pour Amazon SQS (p. 158)

Accès aux métriques CloudWatch pour Amazon SQSAmazon SQS et Amazon CloudWatch sont intégrés afin que vous puissiez utiliser CloudWatchpour afficher et analyser les mesures de vos files d'attente Amazon SQS. Vous pouvez afficher etanalyser les métriques de vos files d'attente à partir de laConsole Amazon SQS (p. 155), leConsoleCloudWatch (p. 156), à l'aide de l'AWS CLI (p. 157), ou à l'aide de laCloudWatch (p. 157). Vouspouvez égalementDéfinition des alarmes CloudWatch (p. 157)pour les métriques Amazon SQS.

Console Amazon SQS

1. Connectez-vous à la consoleConsole Amazon SQS.2. Dans la liste des files d'attente, sélectionnez (cochez) les files d'attente pour lesquelles vous souhaitez

accéder aux métriques. Vous pouvez afficher les métriques de jusqu'à 10 files d'attente.3. Sélectionnez l'onglet Surveillance.

Plusieurs graphiques sont affichés dans la section métriques SQS.

155

Page 162: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurSurveillance de files d'attente avec CloudWatch

4. Pour comprendre un graphique particulier, passez la souris sur en regard du graphique souhaité ouconsultez Métriques CloudWatch disponibles pour Amazon SQS (p. 158).

5. Pour modifier la plage de temps de tous les graphiques en même temps, sélectionnez la plage detemps souhaitée dans Plage de temps (par exemple, Dernière heure).

6. Pour afficher les statistiques supplémentaires d'un graphique individuel, sélectionnez ce dernier.7. DansDétails de la surveillance CloudWatch, sélectionnez unStatistique, (par exemple,Sum). Pour

obtenir une liste des statistiques prises en charge, consultez la section Métriques CloudWatchdisponibles pour Amazon SQS (p. 158).

8. Pour modifier la plage de temps et l'intervalle de temps affichés par un graphique individuel (parexemple, pour afficher une plage de temps des dernières 24 heures au lieu des 5 dernières minutes,ou pour afficher une période de chaque heure au lieu de toutes les 5 minutes), la boîte de dialoguedu graphique étant toujours affichée, pourPlage de temps, choisissez la plage de temps souhaitée(par exemple,Dernières 24 heures). Pour Période, sélectionnez la période souhaitée dans la plagede temps spécifiée (par exemple, 1 heure). Lorsque vous en avez terminé avec le graphe, cliquez surFermer.

9. (Facultatif) Pour utiliser des fonctionnalités CloudWatch supplémentaires, sur la pageSurveillance,choisissezAfficher toutes les métriques CloudWatch, puis suivez les instructions dansConsole AmazonCloudWatch (p. 156)Procédure.

Console Amazon CloudWatch

1. Connectez-vous à la consoleConsole CloudWatch.2. Dans le volet de navigation, choisissez Métriques.3. Sélectionnez l'espace de nom de métrique SQS.

4. Sélectionnez la dimension de métrique Queue Metrics.

5. Vous pouvez désormais examiner vos métriques Amazon SQS :

• Pour trier les métriques, utilisez l'en-tête de colonne.• Pour représenter graphiquement une métrique, cochez la case en regard de la métrique.

156

Page 163: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurSurveillance de files d'attente avec CloudWatch

• Pour filtrer par métrique, choisissez le nom de la métrique, puis Add to search.

Pour de plus amples informations et des options supplémentaires, consultezGraphique demétriquesandUtilisation des tableaux de bord Amazon CloudWatchdans leGuide de l'utilisateur AmazonCloudWatch..

AWS Command Line InterfacePour accéder aux métriques Amazon SQS grâce àAWS CLI, exécutez leget-metric-statisticsCommande l'.

Pour de plus amples informations, veuillez consulterObtention des statistiques d'une métriquedans leGuidede l'utilisateur Amazon CloudWatch..

CloudWatchPour accéder aux métriques Amazon SQS à l'aide de l'API CloudWatch, utilisezleGetMetricStatisticsaction.

Pour de plus amples informations, veuillez consulterObtention des statistiques d'une métriquedans leGuidede l'utilisateur Amazon CloudWatch..

Création d'alarmes CloudWatch pour les mesures Amazon SQSCloudWatch vous permet de déclencher des alarmes en fonction d'un seuil de métrique. Par exemple,vous pouvez créer une alarme pour la métrique NumberOfMessagesSent. Par exemple, si plus de100 messages sont envoyés à la file d'attente MyQueue en 1 heure, une notification par e-mail estenvoyée. Pour de plus amples informations, veuillez consulterCréation d'alarmes Amazon CloudWatchdansleGuide de l'utilisateur Amazon CloudWatch..

1. Connectez-vous à AWS Management Console et ouvrez la console CloudWatch à l'adresse https://console.aws.amazon.com/cloudwatch/.

2. Choisissez Alarmes, puis Créer une alarme.3. Dans la section Sélectionner une métrique de la boîte de dialogue Créer une alarme, choisissez

Parcourir les métriques, SQS.

157

Page 164: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurSurveillance de files d'attente avec CloudWatch

4. Pour SQS > Queue Metrics, choisissez le Nom de la file d'attente et le Nom de la métrique pourlesquels vous souhaitez définir une alarme, puis sélectionnez Suivant. Pour obtenir la liste desmétriques disponibles, consultez la section Métriques CloudWatch disponibles pour AmazonSQS (p. 158).

Dans l'exemple suivant, la sélection est destinée à une alarme pour la métriqueNumberOfMessagesSent pour la file d'attente MyQueue. L'alarme se déclenche lorsque le nombre demessages envoyés dépasse 100.

5. Dans la section Définir une alarme de la boîte de dialogue Créer une alarme, procédez comme suit :

a. Sous Seuil de l'alarme, tapez un Nom et une Description pour l'alarme.b. Définissez is sur > 100.c. Définissez pour sur 1 out of 1 datapoints (1 sur 1 point de données).d. Sous Aperçu de l'alarme, définissez Période sur 1 heure.e. Définissez Statistique sur Standard, Somme.f. Sous Actions, définissez Chaque fois que cette alarme, sur L'état est ALARME.

Si vous voulez que CloudWatch vous envoie une notification en cas de déclenchement del'alarme, sélectionnez une rubrique Amazon SNS existante ou choisissezNouvelle listeet saisissezles adresses e-mail en les séparant par des virgules.

Note

Si vous créez une rubrique Amazon SNS, les adresses e-mail doivent être vérifiées avantde pouvoir recevoir des notifications. Si l'état de l'alarme change avant la vérification desadresses e-mail, les notifications ne sont pas remises.

6. Sélectionnez Create Alarm.

L'alarme est créée.

Métriques CloudWatch disponibles pour Amazon SQSAmazon SQS envoie les métriques suivantes à CloudWatch.

Note

Pour les files d'attente standard, le résultat est approximatif en raison de l'architecture distribuéed'Amazon SQS. Dans la plupart des cas, le nombre doit être proche du nombre réel de messagesdans la file d'attente.Pour les files d'attente FIFO, le résultat est exact.

mesures Amazon SQSL'espace de noms AWS/SQS inclut les métriques suivantes.

Métrique Description

ApproximateAgeOfOldestMessage Age approximatif du plus ancien messagenon supprimé dans la file d'attente.

Note

• Lorsqu'un message a été reçutrois fois (ou plus) et qu'il n'a pasété traité, il est déplacé à la finde la file d'attente et la métriqueApproximateAgeOfOldestMessage

158

Page 165: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurSurveillance de files d'attente avec CloudWatch

Métrique Descriptionpointe vers le deuxième messagele plus ancien qui n'a pas été reçuplus de trois fois. Cette action seproduit même si la file d'attente aune stratégie de redirection.

• Un message « poison pill » (reçuplusieurs fois mais jamaissupprimé) pouvant fausser cettemétrique, l'âge d'un messagede ce type n'est pas inclusdans la métrique tant que lemessage n'est pas consommécorrectement.

• Lorsque la file d'attente disposed'une stratégie de redirection,le message est déplacé versune file d'attente de lettresmortes (p. 47) après le nombremaximal de réceptions configuré.Lorsque le message estdéplacé vers la file d'attentede lettres mortes, la métriqueApproximateAgeOfOldestMessagede la file d'attente de lettresmortes représente l'heure àlaquelle le message a été déplacévers la file d'attente de lettresmortes (et non l'heure d'origineà laquelle le message a étéenvoyé).

Critères de déclaration : Une valeur nonnégative est signaléesi la file d'attente estactive (p. 155).

Unités: Secondes

Statistiques valides : Samples Average,Minimum, Minimum, Data Samples (quiindique Sample Count dans la consoleAmazon SQS)

159

Page 166: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurSurveillance de files d'attente avec CloudWatch

Métrique Description

ApproximateNumberOfMessagesDelayed Nombre de messages dans la file d'attentequi sont retardés et qui ne peuvent pas êtrelus immédiatement. Cela peut se produirelorsque la file d'attente est configurée avecun délai d'attente ou que le message a étéenvoyé avec un paramètre de délai d'attente.

Critères de déclaration : Une valeur nonnégative est signaléesi la file d'attente estactive (p. 155).

Unités: Nombre

Statistiques valides : Samples Average,Minimum, Minimum, Data Samples (quiindique Sample Count dans la consoleAmazon SQS)

ApproximateNumberOfMessagesNotVisible Le nombre de messages « en vol ». Lesmessages sont considérés comme en courss'ils ont été expédiés à un client, mais qu'ilsn'ont pas encore été supprimés ou qu'ilsn'ont pas encore atteint la fin du délai devisibilité.

Critères de déclaration : Une valeur nonnégative est signaléesi la file d'attente estactive (p. 155).

Unités: Nombre

Statistiques valides : Samples Average,Minimum, Minimum, Data Samples (quiindique Sample Count dans la consoleAmazon SQS)

ApproximateNumberOfMessagesVisible Nombre de messages disponibles dans cettefile d'attente.

Critères de déclaration : Une valeur nonnégative est signaléesi la file d'attente estactive (p. 155).

Unités: Nombre

Statistiques valides : Samples Average,Minimum, Minimum, Data Samples (quiindique Sample Count dans la consoleAmazon SQS)

160

Page 167: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurSurveillance de files d'attente avec CloudWatch

Métrique Description

NumberOfEmptyReceives¹ Nombre d'appels d'API ReceiveMessagequi n'ont pas renvoyé de message.

Critères de déclaration : Une valeur nonnégative est signaléesi la file d'attente estactive (p. 155).

Unités: Nombre

Statistiques valides : Samples Average,Minimum, Minimum, Data Samples (quiindique Sample Count dans la consoleAmazon SQS)

NumberOfMessagesDeleted¹ Nombre de messages supprimés de cette filed'attente.

Critères de déclaration : Une valeur nonnégative est signaléesi la file d'attente estactive (p. 155).

Unités: Nombre

Statistiques valides : Samples Average,Minimum, Minimum, Data Samples (quiindique Sample Count dans la consoleAmazon SQS)Amazon SQS émetleNumberOfMessagesDeletedPour chaqueopération de suppression réussie qui utiliseundescripteur de réception, y compris lessuppressions en double. Dans les scénariossuivants, il est possible que la valeur de lamétrique NumberOfMessagesDeleted soitplus élevée que prévu :

• Appelez leDeleteMessagesurdifférents descripteurs de réception quiappartiennent au même message : Sile message n'est pas traité avantdélaide visibilitéexpire, le message devientdisponible pour les autres consommateursqui peuvent à nouveau le traiter etle supprimer, ce qui accroît la valeurduNumberOfMessagesDeletedMétriques.

• Appelez leDeleteMessagesur le mêmehandle de réception : Si le messageest traité et supprimé mais que vousappelezDeleteMessageÀ l'aide du mêmedescripteur de réception, l'état de réussiteest renvoyé, ce qui accroît la valeurdeNumberOfMessagesDeletedMétriques.

161

Page 168: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurSurveillance de files d'attente avec CloudWatch

Métrique Description

NumberOfMessagesReceived¹ Nombre de messages renvoyés par lesappels à l'action ReceiveMessage.

Critères de déclaration : Une valeur nonnégative est signaléesi la file d'attente estactive (p. 155).

Unités: Nombre

Statistiques valides : Samples Average,Minimum, Minimum, Data Samples (quiindique Sample Count dans la consoleAmazon SQS)

NumberOfMessagesSent¹ Nombre de messages ajoutés dans une filed'attente.

Critères de déclaration : Une valeur nonnégative est signaléesi la file d'attente estactive (p. 155).

Unités: Nombre

Statistiques valides : Samples Average,Minimum, Minimum, Data Samples (quiindique Sample Count dans la consoleAmazon SQS)

SentMessageSize¹ Taille des messages ajoutés à une filed'attente.

Critères de déclaration : Une valeur nonnégative est signaléesi la file d'attente estactive (p. 155).

Unités: Octets

Statistiques valides : Samples Average,Minimum, Minimum, Data Samples (quiindique Sample Count dans la consoleAmazon SQS)

Note

SentMessageSizene s'affiche pascomme métrique dans la consoleCloudWatch tant qu'au moins unmessage n'est pas envoyé à la filed'attente correspondante.

¹ Ces mesures sont calculées du point de vue du service et peuvent inclure les nouvelles tentatives. Nevous fiez pas aux valeurs absolues de ces mesures ou ne les utilisez pas pour estimer l'état actuel de la filed'attente.

162

Page 169: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurValidation de la conformité

Dimensions des métriques Amazon SQS

La seule dimension qu'Amazon SQS envoie à CloudWatch estQueueName. Cela signifie que toutes lesstatistiques disponibles sont filtrées par QueueName.

Validation de conformité pour Amazon SQSLes auditeurs tiers évaluent la sécurité et la conformité d'Amazon SQS dans le cadre de plusieursAWSlesprogrammes de conformité, y compris les suivants :

• Norme de sécurité des données de l'industrie des cartes de paiement (PCI DSS)• Health Insurance Portability and Accountability Act (HIPAA)

Pour obtenir la liste des services AWS relevant de programmes de conformité spécifiques, consultezServices AWS relevant de programmes de conformité Pour obtenir des renseignements généraux,consultez Programmes de conformitéAWS .

Vous pouvez télécharger les rapports de l'audit externe avec AWS Artifact. Pour de plus amplesinformations, veuillez consulter Téléchargement de rapports dans AWS Artifact.

Votre responsabilité de conformité lors de l'utilisation de Amazon SQS est déterminée par la sensibilité devos données, les objectifs de conformité de votre entreprise, ainsi que par la législation et la réglementationapplicables.AWSfournit les ressources suivantes pour faciliter la conformité :

• Guides de démarrage rapide de la sécurité et de la conformité— Ces guides de déploiement proposentdes considérations architecturales et indiquent les étapes à suivre pour déployer des environnements deréférence centrés sur la sécurité et la conformité dansAWS.

• Livre blanc Architecting for HIPAA Security and Compliance— Ce livre blanc décrit comment lesentreprises peuvent utiliserAWSpour créer des applications conformes à la loi HIPAA.

• AWSRessources de conformité— Cet ensemble de manuels et de guides peut s'appliquer à votresecteur et à votre emplacement.

• Évaluation des ressources à l'aide de règlesdans leAWS ConfigManuel du développeur— LeAWSConfigpermet d'évaluer comment les configurations de vos ressources se conforment aux pratiquesinternes, aux normes et aux directives industrielles.

• AWS Security Hub— CeAWSfournit une vue complète de votre état de sécurité dansAWSqui vous aide àvérifier votre conformité avec les normes et les bonnes pratiques du secteur de la sécurité.

Résilience dans Amazon SQSLa .AWSL'infrastructure mondiale d repose surAWSRégions et zones de disponibilité.AWS Les régionsfournissent plusieurs zones de disponibilité physiquement séparées et isolées, reliées par un réseau àlatence faible, à débit élevé et à forte redondance. Avec les zones de disponibilité, vous pouvez concevoiret exploiter des applications et des bases de données qui basculent automatiquement d'une zone à l'autresans interruption. Les zones de disponibilité sont plus hautement disponibles, tolérantes aux panneset évolutives que les infrastructures traditionnelles à un ou plusieurs centres de données. Pour plusd'informations sur les régions et les zones de disponibilité AWS, consultez Infrastructure mondiale AWS.

En plus duAWSAmazon SQS offre des files d'attente distribuées.

163

Page 170: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurFiles d'attente distribuées

Files d'attente distribuéesUn système de messagerie distribué comprend trois éléments principaux : les composants de votresystème distribué, votre file d'attente (distribuée sur des serveurs Amazon SQS) et les messages de la filed'attente.

Dans le scénario suivant, votre système a plusieursProducteurs(composants qui envoient des messagesà la file d'attente) etConsommateurs(composants qui reçoivent des messages de la file d'attente). La filed'attente (qui contient les messages A à E) stocke les messages de manière redondante sur plusieursserveurs Amazon SQS.

Sécurité de l'infrastructure dans Amazon SQSEn tant que service géré, Amazon SQS est protégé par leAWSprocédures globales de sécurité du réseaudécrites dans leAmazon Web Services : Présentation des processus de sécuritéLivre blanc.

Vous utilisezAWSpubliées les actions d'API publiées par pour accéder à Amazon SQS via le réseau. Lesclients doivent prendre en charge le protocole TLS (Transport Layer Security) 1.0 ou une version ultérieure.Nous recommandons TLS 1.2 ou version ultérieure. Les clients doivent également prendre en charge lessuites de chiffrement PFS (Perfect Forward Secrecy) comme Ephemeral Diffie-Hellman (DHE) ou EllipticCurve Ephemeral Diffie-Hellman (ECDHE)

Vous devez signer les demandes à l'aide d'un ID de clé d'accès et d'une clé d'accès secrète associée à unmandataire IAM. Vous pouvez également utiliser AWS Security Token Service (AWS STS) pour générerdes informations d'identification de sécurité temporaires afin de signer les demandes.

Vous pouvez appeler ces actions d'API à partir de n'importe quel emplacement sur le réseau, mais AmazonSQS prend en charge les stratégies d'accès basées sur les ressources, ce qui peut inclure des restrictionsen fonction de l'adresse IP source. Vous pouvez utiliser des stratégies Amazon SQS pour contrôler l'accèsdepuis des points de terminaison Amazon VPC spécifiques ou depuis des VPC spécifiques. Cela permetd'isoler efficacement l'accès réseau vers une file d'attente Amazon SQS donnée depuis le VPC spécifiqueuniquement au sein duAWSréseau. Pour plus d'informations, consultez Exemple 5 : Refuser l'accès s'iln'émane pas d'un point de terminaison de VPC (p. 146).

164

Page 171: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurBonnes pratiques

Bonnes pratiques de sécurité Amazon SQSAWSfournit pour Amazon SQS de nombreuses fonctions de sécurité que vous devez examiner dans lecontexte de votre propre stratégie de sécurité.

Note

Les conseil de mise en œuvre spécifiques fournies concernent les implémentations et les casd'utilisation courants. Nous vous suggérons de consulter ces bonnes pratiques dans le contexte devotre cas d'utilisation, de votre architecture et de votre modèle de menace spécifique.

Bonnes pratiques en matière de préventionVoici les bonnes pratiques de sécurité préventive pour Amazon SQS.

Rubriques• Assurez-vous que les files d'attente ne sont pas accessibles publiquement (p. 165)• Implémentation d'un accès sur la base du moindre privilège (p. 165)• Utiliser des rôles IAM pour les applications etAWSservices nécessitant un accès Amazon

SQS (p. 166)• Mise en œuvre du chiffrement côté serveur (p. 166)• Application du chiffrement des données en transit (p. 166)• Envisager d'utiliser des points de terminaison de VPC pour accéder à Amazon SQS (p. 166)

Assurez-vous que les files d'attente ne sont pas accessiblespubliquementÀ moins que vous n'ayez explicitement demandé que quiconque sur Internet puisse lire ou d'écrire dansvotre file d'attente Amazon SQS, vous devez vous assurer que celle-ci n'est pas accessible publiquement(accessible par tout le monde ou par toutAWSutilisateur).

• Évitez de créer des stratégies avec Principal défini sur "".• Évitez d'utiliser un caractère générique (*). Nommez plutôt un ou plusieurs utilisateurs spécifiques.

Implémentation d'un accès sur la base du moindre privilègeLorsque vous accordez des autorisations, vous décidez qui les reçoit, pour quelles files d'attente celles-ci sont destinées et quelles actions d'API spécifiques vous souhaitez autoriser pour ces files d'attente. Lamise en œuvre du moindre privilège est importante pour réduire les risques de sécurité et atténuer l'effetdes erreurs ou des intentions malveillantes.

Suivez les conseils de sécurité standard pour accorder le moindre privilège. Autrement dit, accordezuniquement les autorisations requises pour effectuer une tâche spécifique. Vous pouvez implémenter cecià l'aide d'une combinaison de stratégies de sécurité.

Amazon SQS utilise le modèle producteur-consommateur nécessitant trois types d'accès de compteutilisateur :

• Administrators— Accès à la création, à la modification et à la suppression de files d'attente. Lesadministrateurs contrôlent également les stratégies de file d'attente.

• Producteurs— Accès à l'envoi de messages dans les files d'attente.• Consommateurs— Accès à la réception et à la suppression de messages dans les files d'attente.

165

Page 172: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurBonnes pratiques en matière de prévention

Pour plus d'informations, consultez les sections suivantes:

• Identity and Access Management dans Amazon SQS (p. 120)• Autorisations de l'API Amazon SQS : Référence des actions et ressources (p. 148)• Utilisation de stratégies personnalisées avec le langage de stratégie d'accès Amazon SQS (p. 136)

Utiliser des rôles IAM pour les applications etAWSservicesnécessitant un accès Amazon SQSPour des applications ouAWSservices tels qu'Amazon EC2 pour accéder aux files d'attente AmazonSQS, ils doivent utiliser desAWSInformations d'identification dans leurAWSDemandes d'API. Comme cesinformations d'identification ne font pas l'objet d'une rotation automatique, vous ne devez pas stocker desinformations d'identification AWS directement dans l'application ou l'instance EC2.

Vous devez utiliser un rôle IAM pour gérer des informations d'identification temporaires pour lesapplications ou services devant accéder à Amazon SQS. Lorsque vous utilisez un rôle, vous n'avez pasà distribuer des informations d'identification à long terme (par exemple, un nom d'utilisateur et un mot depasse, et des clé d'accès) à une instance EC2 ou à un service AWS comme AWS Lambda. À la place,le rôle fournit des autorisations temporaires que les applications peuvent utiliser lors d'appels à d'autresressources AWS.

Pour de plus amples informations, veuillez consulterRôles IAMandScénarios courants pour les rôles :Utilisateurs, applications et servicesdans leGuide de l'utilisateur IAM.

Mise en œuvre du chiffrement côté serveurPour atténuer les problèmes de fuite de données, utilisez le chiffrement au repos pour chiffrer vosmessages à l'aide d'une clé stockée dans un emplacement différent de celui où les messages sont stockés.Le chiffrement côté serveur (SSE) fournit le chiffrement des données au repos. Amazon SQS chiffre vosdonnées au niveau des messages lorsqu'il les stocke et déchiffre les messages pour vous lorsque vousy accédez. SSE utilise des clés gérées dans AWS Key Management Service. Tant que vous authentifiezvotre demande et que vous avez des autorisations d'accès, il n'y a aucune différence entre l'accès auxdonnées chiffrées et aux données déchiffrées.

Pour plus d'informations, consultez Chiffrement au repos (p. 112) et Gestion des clés (p. 115).

Application du chiffrement des données en transitSans HTTPS (TLS), un pirate sur le réseau peut écouter le trafic réseau ou le manipuler, en utilisant uneattaque telle qu'une attaque de l'homme du milieu. Autorisez uniquement les connexions chiffrées viaHTTPS (TLS) en utilisant la condition aws:SecureTransport de la stratégie de file d'attente pour forcerles demandes à utiliser SSL.

Envisager d'utiliser des points de terminaison de VPC pouraccéder à Amazon SQSSi vous avez des files d'attente avec lesquelles vous devez pouvoir interagir mais qui ne doiventabsolument pas être exposées à Internet, utilisez des points de terminaison de VPC pour mettre en filed'attente l'accès uniquement aux hôtes au sein d'un VPC particulier. Vous pouvez utiliser des stratégiesde file d'attente pour contrôler l'accès aux files d'attente à partir de points de terminaison Amazon VPCspécifiques ou de VPC spécifiques.

Les points de terminaison d'Amazon SQS VPC fournissent deux façons de contrôler l'accès à vosmessages :

166

Page 173: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurBonnes pratiques en matière de prévention

• Vous pouvez contrôler les demandes, les utilisateurs ou les groupes autorisés à traverser un point determinaison d'un VPC spécifique.

• Vous pouvez contrôler quels VPC ou points de terminaison de VPC ont accès à votre file d'attente àl'aide d'une stratégie de file d'attente.

Pour plus d'informations, consultez Points de terminaison Amazon Virtual Private Cloud pour AmazonSQS (p. 119) et Création d'une stratégie de point de terminaison Amazon VPC pour AmazonSQS (p. 119).

167

Page 174: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurEnvoi de requêtes d'API Query

Utilisation des API Amazon SQSCette section fournit des informations sur la constitution de points de terminaison Amazon SQS, lesdemandes d'API Query utilisantGETandPOSTet l'utilisation des actions d'API de traitement par lot. Pour deplus amples informations sur Amazon SQSActions, y compris les paramètres, les erreurs, les exemples,etTypes de données—consultezAmazon Simple Queue Service.

Pour accéder à Amazon SQS via différents langages de programmation, vous pouvez égalementutiliserAWSKits SDKqui contiennent les fonctionnalités automatiques suivantes :

• Signature cryptographique des requêtes de service• Nouvelles tentatives de requête• Gestion des réponses d'erreur

Pour plus d'informations sur l'outil de ligne de commande, consultez les sections Amazon SQS dansleAWS CLIRéférence des commandeset l'AWS Tools for PowerShellRéférence Cmdlet.

Rubriques• Envoi de requêtes d'API Query (p. 168)• Actions de traitement par lots Amazon SQS (p. 174)

Envoi de requêtes d'API QueryDans cette section, vous apprenez à créer un point de terminaison Amazon SQS,faitesGETandPOSTdemande et interprète les réponses.

Rubriques• Constitution d'un point de terminaison (p. 168)• Envoi de requête GET (p. 169)• Envoi de requête POST (p. 169)• Authentification des requêtes (p. 170)• Interprétation des réponses (p. 173)

Constitution d'un point de terminaisonPour pouvoir utiliser des files d'attente Amazon SQS, vous devez créer un point de terminaison. Pourplus d'informations sur les points de terminaison Amazon SQS, consultez les pages suivantes dans lemanuelRéférence générale Amazon Web Services :

• Points de terminaison régionaux• Points de terminaison Amazon Simple Queue Service

Chaque point de terminaison Amazon SQS est indépendant. Par exemple, si deux files d'attente sontnommées MyQueue et que l'une d'entre elles a le point de terminaison sqs.us-east-2.amazonaws.com

168

Page 175: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurEnvoi de requête GET

tandis que l'autre a le point de terminaison sqs.eu-west-2.amazonaws.com, les deux files d'attenten'ont aucune donnée en commun.

L'exemple suivant correspond à un point de terminaison lançant une requête pour créer une file d'attente.

https://sqs.eu-west-2.amazonaws.com/ ?Action=CreateQueue&DefaultVisibilityTimeout=40&QueueName=MyQueue&Version=2012-11-05&AUTHPARAMS

Note

Les URL des files d'attente et des files d'attente sont sensibles à la casse.Structure deAUTHPARAMSdépend de la signature de la requête API. Pour de plus amplesinformations, veuillez consulterSignatureAWSDemandes d’APIdans leRéférence générale AmazonWeb Services.

Envoi de requête GETAmazon SQSGETest structurée comme une URL se composant des éléments suivants :

• Point de terminaison— Ressource sur laquelle la requête agit (leNom et URL des files d'attente (p. 39)),par exemple :https://sqs.us-east-2.amazonaws.com/123456789012/MyQueue

• Action— LeActionque vous souhaitez effectuer sur le point de terminaison. Un point d'interrogation (?)sépare le point de terminaison de l'action, par exemple : ?Action=SendMessage&MessageBody=Your%20Message%20Text.

• Paramètres— Paramètres de requête : chaque paramètre est séparé par une esperluette (&), parexemple :&Version=2012-11-05&AUTHPARAMS

Voici un exemple de fichierGETDemande qui envoie un message à une file d'attente Amazon SQS.

https://sqs.us-east-2.amazonaws.com/123456789012/MyQueue?Action=SendMessage&MessageBody=Your%20message%20text&Version=2012-11-05&AUTHPARAMS

Note

Les URL des files d'attente et des files d'attente sont sensibles à la casse.Dans la mesure où les requêtes GET sont des URL, vous devez coder en URL les valeurs desparamètres. Les espaces ne sont pas autorisés dans les URL. Dès lors, chaque espace estencodé sous la forme %20. Pour faciliter la lecture, le reste de l'exemple n'a pas été encodé selonle format URL.

Envoi de requête POSTAmazon SQSPOSTDemande envoie des paramètres de requête sous forme de corps d'une requête HTTP.

L'exemple suivant illustre un en-tête HTTP avec Content-Type défini sur application/x-www-form-urlencoded.

POST /123456789012/MyQueue HTTP/1.1

169

Page 176: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurAuthentification des requêtes

Host: sqs.us-east-2.amazonaws.comContent-Type: application/x-www-form-urlencoded

L'en-tête est suivi d'uneform-urlencoded POSTDemande qui envoie un message à une file d'attenteAmazon SQS. Chaque paramètre est séparé par une esperluette (&).

Action=SendMessage&MessageBody=Your+Message+Text&Expires=2020-10-15T12%3A00%3A00Z&Version=2012-11-05&AUTHPARAMS

Note

Seul l'en-tête HTTP Content-Type est obligatoire. L'élément AUTHPARAMS est le même quepour la requête GET.Votre client HTTP peut ajouter d'autres éléments à la requête HTTP, en fonction de laversion HTTP du client.

Authentification des requêtesL'authentification est le processus d'identification et de vérification de la partie qui envoie une requête. Aucours de la première étape de l'authentification, AWS vérifie l'identité du créateur et si celui-ci est enregistrépour utiliser AWS (pour plus d'informations, consultez Étape 1 : Créer un Compte AWS (p. 4) et Étape 2 :Création d'un utilisateur IAM (p. 4)). Ensuite, AWS applique la procédure suivante :

1. Le producteur (expéditeur) obtient les autorisations requises.2. Le créateur envoie une requête et l'autorisation au consommateur (destinataire).3. Le consommateur utilise l'autorisation pour vérifier si le producteur a envoyé la requête.4. L'une des situations suivantes se produit ensuite :

• Si l'authentification réussit, le consommateur procède au traitement de la requête.• Si l'authentification échoue, le consommateur rejette la requête et renvoie une erreur.

Rubriques• Processus d'authentification de base avec HMAC-SHA (p. 170)• Partie 1 : Demande de l'utilisateur (p. 171)• Partie 2 : Réponse deAWS (p. 172)

Processus d'authentification de base avec HMAC-SHALorsque vous accédez à Amazon SQS grâce à l'API Query, vous devez fournir les éléments suivants afind'authentifier votre demande :

• La .AWSID de clé d’accèsIdentifie votre Compte AWS , quiAWSutilise pour rechercher votre clé d'accèssecrète.

• La .Signature de requête HMAC-SHA, calculée à l'aide de votre clé d'accès secrète (code secret queseuls vous etAWS : pour plus d'informations, consultez.RFC2104). La .AWSKIT DE DÉVELOPPEMENTLOGICIELgère le processus de signature. Toutefois, si vous soumettez une requête de requête via HTTPou HTTPS, vous devez inclure une signature dans chacune de ces requêtes.

1. Dérivez une clé de signature de Signature Version 4. Pour plus d'informations, consultez Dérivationd'une clé de signature avec Java.

170

Page 177: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurAuthentification des requêtes

Note

Amazon SQS prend en charge Signature version 4, qui offre une sécurité améliorée baséesur SHA256 et de meilleures performances par rapport aux versions précédentes. Lorsquevous créez des applications qui utilisent Amazon SQS, utilisez Signature version 4.

2. Codez en Base64 la signature de la requête. C'est ce que fait l'exemple de code Java suivant :

package amazon.webservices.common;

// Define common routines for encoding data in AWS requests.public class Encoding {

/* Perform base64 encoding of input bytes. * rawData is the array of bytes to be encoded. * return is the base64-encoded string representation of rawData. */ public static String EncodeBase64(byte[] rawData) { return Base64.encodeBytes(rawData); }}

• Horodatage (ou expiration) de la requête. L'horodatage que vous utilisez dans la requête doit être unobjet dateTime, avec la date complète suivie des heures, des minutes et des secondes. Par exemple:2007-01-31T23:59:59Z Bien que ce ne soit pas obligatoire, nous vous recommandons de fournirl'heure système affichée dans la zone d'heure de l'heure universelle coordonnée (Heure de Greenwich).

Note

Assurez-vous que votre serveur affiche l'heure correcte. Si vous indiquez un horodatage (au lieud'une expiration), la requête expire automatiquement dans les 15 minutes qui suivent (AWS netraite pas une requête si l'horodatage est antérieur de plus de 15 minutes à l'heure affichée surles serveurs AWS).Si vous utilisez .NET, vous ne devez pas envoyer des heures systèmes excessivementspécifiques, en raison des diverses propositions existant sur la façon de renoncer à uneprécision horaire absolue. Dans ce cas, vous devez créer manuellement les objets dateTimeavec une précision ne dépassant pas une milliseconde.

Partie 1 : Demande de l'utilisateurVoici le processus à suivre pour authentifier les requêtes AWS à l'aide d'une signature HMAC-SHA.

171

Page 178: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurAuthentification des requêtes

1. Créez une requête à adresser à AWS.2. Calculez une signature de code d'authentification du message avec hachage à clés (HMAC-SHA) à

l'aide de votre clé d'accès secrète.3. Indiquez votre signature et votre ID de clé d’accès dans votre requête avant de l’envoyer à AWS.

Partie 2 : Réponse deAWSAWS commence le processus suivant en réponse.

172

Page 179: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurInterprétation des réponses

1. AWS utilise l'ID de clé d'accès pour rechercher votre clé d'accès secrète.2. AWS génère une signature à partir des données de la requête et de la clé d'accès secrète en utilisant

l'algorithme que vous avez utilisé pour calculer la signature envoyée dans la requête.3. L'une des situations suivantes se produit ensuite :

• Si la signature générée par AWS correspond à celle figurant dans la requête que vous avezenvoyée, AWS considère la requête comme authentique.

• Si la comparaison échoue, la requête est rejetée, et AWS renvoie une erreur.

Interprétation des réponsesEn réponse à une demande d'action, Amazon SQS renvoie une structure de données XML qui contientles résultats de la demande. Pour plus d'informations, consultez les actions individuelles dans lemanuelRéférence d'API Amazon Simple Queue Service.

Rubriques• Structure d'une réponse positive (p. 173)• Structure d'une réponse d'erreur (p. 174)

Structure d'une réponse positiveSi la requête a abouti, l'élément de réponse principal porte le nom de l'action, mais avec Response ajouté(ActionNameResponse).

Il contient les éléments enfants suivants :

173

Page 180: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurActions de traitement par lots

• ActionNameResult— Contient un élément spécifique à l'action. Par exemple, l'élémentCreateQueueResult contient l'élément QueueUrl, qui contient à son tour l'URL de la file d'attentecréée.

• ResponseMetadata— Contient leRequestIdqui contient à son tour l'UUID de la requête.

Voici un exemple de réponse ayant abouti au format XML :

<CreateQueueResponse xmlns=https://sqs.us-east-2.amazonaws.com/doc/2012-11-05/ xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance xsi:type=CreateQueueResponse> <CreateQueueResult> <QueueUrl>https://sqs.us-east-2.amazonaws.com/770098461991/queue2</QueueUrl> </CreateQueueResult> <ResponseMetadata> <RequestId>cb919c0a-9bce-4afe-9b48-9bdf2412bb67</RequestId> </ResponseMetadata></CreateQueueResponse>

Structure d'une réponse d'erreurSi une requête échoue, Amazon SQS renvoie toujours l'élément de réponse principalErrorResponse. Ilcontient un élément Error et un élément RequestId.

L'élément Error contient les éléments enfants suivants :

• Type— Spécifie si l'erreur est survenue au niveau du créateur ou du consommateur.• Code— Spécifie le type d'erreur.• Message— Spécifie la condition d'erreur dans un format lisible.• Detail— (Facultatif) Spécifie des détails supplémentaires sur l'erreur.

L'élément RequestId contient l'UUID de la requête.

Voici un exemple de réponse d'erreur au format XML :

<ErrorResponse> <Error> <Type>Sender</Type> <Code>InvalidParameterValue</Code> <Message> Value (quename_nonalpha) for parameter QueueName is invalid. Must be an alphanumeric String of 1 to 80 in length. </Message> </Error> <RequestId>42d59b56-7407-4c4a-be0f-4c88daeea257</RequestId></ErrorResponse>

Actions de traitement par lots Amazon SQSAfin de réduire les coûts ou de manipuler jusqu'à 10 messages avec une seule action, vous pouvez utiliserles actions suivantes :

• SendMessageBatch

• DeleteMessageBatch

• ChangeMessageVisibilityBatch

174

Page 181: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurActivation de la mise en tampon côté client

et du traitement par lots des requêtes

Vous pouvez profiter des fonctionnalités de traitement par lots à l'aide de l'API Query ou d'uneAWSKit dedéveloppement logiciel (SDK) prenant en charge les actions par lots Amazon SQS.

Note

La taille totale de tous les messages que vous envoyez dans un seul appel àSendMessageBatch ne peut pas dépasser 262 144 octets (256 Ko).Vous ne pouvez pas définir d'autorisations pour SendMessageBatch, DeleteMessageBatchou ChangeMessageVisibilityBatch de manière explicite. Les autorisations définies pourSendMessage, DeleteMessage, or ChangeMessageVisibility s'appliquent également auxversions correspondantes de traitement par lots de ces actions.La console Amazon SQS ne prend pas en charge les actions de traitement par lots.

Rubriques• Activation de la mise en tampon côté client et du traitement par lots des requêtes (p. 175)• Augmentation du débit à l'aide de la mise à l'échelle horizontale et du traitement par lots des

actions (p. 179)

Activation de la mise en tampon côté client et dutraitement par lots des requêtesLeAWS SDK for JavaincludesAmazonSQSBufferedAsyncClientqui accède à Amazon SQS. Ce clientfacilite le traitement par lots des demandes à l'aide d'une mise en tampon côté client. Les appels effectuéspar le client sont d'abord mis en tampon, puis transmis comme demande de traitement par lots à AmazonSQS.

La mise en tampon côté client autorise la mise en tampon et l'envoi en tant que demande de traitementpar lots de 10 demandes au maximum, ce qui réduit les coûts d'utilisation d'Amazon SQS et le nombrede demandes envoyées.AmazonSQSBufferedAsyncClientenregistre les appels synchrones etasynchrones. Les demandes par lots et la prise en charge de l'attente active de longue durée (p. 45)peuvent également permettre d'augmenter le débit. Pour de plus amples informations, veuillezconsulter Augmentation du débit à l'aide de la mise à l'échelle horizontale et du traitement par lots desactions (p. 179).

Dans la mesure où AmazonSQSBufferedAsyncClient implémente la mêmeinterface qu'AmazonSQSAsyncClient, la migration d'AmazonSQSAsyncClient versAmazonSQSBufferedAsyncClient requiert généralement très peu de changements du code existant.

Note

Le client asynchrone tampon Amazon SQS ne prend actuellement pas en charge les files d'attenteFIFO.

Rubriques• Utilisation d'AmazonSQSBufferedAsyncClient (p. 175)• Configuration d'AmazonSQSBufferedAsyncClient (p. 176)

Utilisation d'AmazonSQSBufferedAsyncClientAvant de commencer, complétez les étapes détaillées dans Configuration d'Amazon SQS (p. 4).

Important

AWS SDK for Java 2.x n'est actuellement pas compatible avecAmazonSQSBufferedAsyncClient.

175

Page 182: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurActivation de la mise en tampon côté client

et du traitement par lots des requêtes

Vous pouvez créer un nouveau AmazonSQSBufferedAsyncClient basé sur AmazonSQSAsyncClient,par exemple :

// Create the basic Amazon SQS async clientfinal AmazonSQSAsync sqsAsync = new AmazonSQSAsyncClient(); // Create the buffered clientfinal AmazonSQSAsync bufferedSqs = new AmazonSQSBufferedAsyncClient(sqsAsync);

Après avoir créé le nouveauAmazonSQSBufferedAsyncClientVous pouvez l'utiliser pour envoyerplusieurs requêtes à Amazon SQS (comme avecAmazonSQSAsyncClient), par exemple :

final CreateQueueRequest createRequest = new CreateQueueRequest().withQueueName("MyQueue"); final CreateQueueResult res = bufferedSqs.createQueue(createRequest); final SendMessageRequest request = new SendMessageRequest();final String body = "Your message text" + System.currentTimeMillis();request.setMessageBody( body );request.setQueueUrl(res.getQueueUrl()); final SendMessageResult sendResult = bufferedSqs.sendMessageAsync(request); final ReceiveMessageRequest receiveRq = new ReceiveMessageRequest() .withMaxNumberOfMessages(1) .withQueueUrl(queueUrl);final ReceiveMessageResult rx = bufferedSqs.receiveMessage(receiveRq);

Configuration d'AmazonSQSBufferedAsyncClientAmazonSQSBufferedAsyncClient est préconfiguré avec des paramètres qui fonctionnent dans laplupart des cas d'utilisation. Vous pouvez configurer davantage AmazonSQSBufferedAsyncClient, parexemple :

1. Créez une instance de la classe QueueBufferConfig avec les paramètres de configuration requis.2. Fournissez l'instance au constructeur AmazonSQSBufferedAsyncClient.

// Create the basic Amazon SQS async clientfinal AmazonSQSAsync sqsAsync = new AmazonSQSAsyncClient(); final QueueBufferConfig config = new QueueBufferConfig() .withMaxInflightReceiveBatches(5) .withMaxDoneReceiveBatches(15); // Create the buffered clientfinal AmazonSQSAsync bufferedSqs = new AmazonSQSBufferedAsyncClient(sqsAsync, config);

Paramètres de configuration QueueBufferConfig

Paramètre Valeur par défaut Description

longPoll true Lorsque longPollest défini sur true,AmazonSQSBufferedAsyncClienttente d'utiliser l'attente activede longue durée lors de laconsommation des messages.

176

Page 183: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurActivation de la mise en tampon côté client

et du traitement par lots des requêtes

Paramètre Valeur par défaut Description

longPollWaitTimeoutSeconds 20 s Durée maximale, ensecondes, pendant laquelleun ReceiveMessage restesur le serveur en attendantl'apparition de messages dans lafile d'attente avant de renvoyerun résultat de réception vide.

Note

Ce paramètre n'a pasd'impact lorsque l'attenteactive de longue duréeest désactivée.

maxBatchOpenMs 200 ms Durée maximale, enmillisecondes, pendant laquelleun appel sortant attend d'autresappels du même type pour letraitement par lots.

Plus le paramètre est élevé,moins il faut de lots poureffectuer la même quantité detravail (toutefois, le premier appeld'un lot doit passer plus de tempsà attendre).

Lorsque ce paramètre est définisur 0, les requêtes envoyéesn'attendent pas d'autresrequêtes, ce qui a pour effet dedésactiver le traitement par lots.

maxBatchSize 10 requêtes par lot Nombre maximal de messagestraités dans un même lot dans lecadre d'une seule requête. Plusce paramètre est élevé, moinsle nombre de lots requis poureffectuer le même nombre derequêtes est élevé.

Note

La valeur maximaleautorisée pour AmazonSQS est de 10 requêtespar lot.

177

Page 184: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurActivation de la mise en tampon côté client

et du traitement par lots des requêtes

Paramètre Valeur par défaut Description

maxBatchSizeBytes 256 Ko Taille maximale d'un traitementpar lots des messages, en octets,que le client essaie d'envoyer àAmazon SQS.

Note

La valeur maximaleautorisée pour AmazonSQS est de 256 Ko.

maxDoneReceiveBatches 10 lots Nombre maximalde lots de réceptionrécupérés au préalable parAmazonSQSBufferedAsyncClientet stockés côté client.

Plus le paramètre est élevé, plusil est possible de satisfaire ungrand nombre de demandessans devoir appeler AmazonSQS (toutefois, plus le nombrede messages récupérés aupréalable est important, plusils restent longtemps dans lamémoire tampon, ce qui entraînel'expiration de leur délai devisibilité).

Note

0 indique que touterécupération préalabledes messages estdésactivée. Ils sontdonc consommés à larequête.

maxInflightOutboundBatches 5 lots Nombre maximal de lots sortantsactifs pouvant être traités enmême temps.

Plus ce paramètre est élevé,plus les lots sortants peuventêtre envoyés rapidement(sous réserve d'autres quotas,tels que l'UC ou la bandepassante) et plus le nombrede threads consommés parAmazonSQSBufferedAsyncClientest important.

178

Page 185: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurAugmentation du débit à l'aide de la mise à l'échelle

horizontale et du traitement par lots des actions

Paramètre Valeur par défaut Description

maxInflightReceiveBatches 10 lots Nombre maximum de lots deréception actifs pouvant êtretraités en même temps.

Plus ce paramètre est élevé,plus le nombre de messagessusceptibles d'être reçus estimportant (sous réserve d'autresquotas, tels que l'UC ou la bandepassante) et plus le nombrede threads consommés parAmazonSQSBufferedAsyncClientest important.

Note

0 indique que touterécupération préalabledes messages estdésactivée. Ils sontdonc consommés à larequête.

visibilityTimeoutSeconds -1 Lorsqu'une valeur positive autreque zéro a été définie pour ceparamètre, le délai de visibilitédéfinit ici prévaut sur celui de lafile d'attente à partir de laquelleles messages sont consommés.

Note

-1 indique que leparamètre par défaut estsélectionné pour la filed'attente.Vous ne pouvez pasdéfinir de délai devisibilité sur 0.

Augmentation du débit à l'aide de la mise à l'échellehorizontale et du traitement par lots des actionsLes files d'attente Amazon SQS peuvent fournir un débit très élevé. Pour obtenir des informations sur lesquotas de débit, veuillez consulterQuotas liés aux messages (p. 106).

Pour atteindre un débit élevé, vous devez effectuer une mise à l'échelle horizontale des producteurs etconsommateurs de messages (ajouter des producteurs et des consommateurs supplémentaires).

Rubriques• Mise à l'échelle horizontale (p. 180)• Traitement par lots des actions (p. 180)• Exemple d'utilisation de Java pour les requêtes en une seule opération et par lots (p. 181)

179

Page 186: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurAugmentation du débit à l'aide de la mise à l'échelle

horizontale et du traitement par lots des actions

Mise à l'échelle horizontaleÉtant donné que vous accédez à Amazon SQS via un protocole de requête-réponse HTTP, leLatence de larequête(l'intervalle de temps entre la création d'une requête et la réception de la réponse) limite le débit quevous pouvez obtenir à partir d'un thread unique à l'aide d'une connexion unique. Par exemple, si la latenced'un client Amazon EC2 envoyant des requêtes à Amazon SQS dans la même région avoisine les 20 ms,le débit maximal à partir d'un thread unique sur une seule connexion est en moyenne de 50 TPS.

La mise à l'échelle horizontale consiste à augmenter le nombre de producteurs de messages (émettant desrequêtes SendMessage) et de consommateurs de messages (émettant des requêtes ReceiveMessageet DeleteMessage) afin d'augmenter le débit global de votre file d'attente. Vous pouvez mettre à l'échellehorizontalement de trois manières :

• Augmenter le nombre de threads par client• Ajouter des clients• Augmentez le nombre de threads par client et ajouter d'autres clients

Lorsque vous ajoutez des clients, vous créez essentiellement un gain de débit linéaire pour votre filed'attente. Ainsi, si vous doublez le nombre de clients, vous obtiendrez deux fois plus de débit.

Note

Lorsque vous procédez à une mise à l'échelle horizontale, assurez-vous que votre client SQSdispose de suffisamment de connexions ou de threads pour prendre en charge le nombrede producteurs et de consommateurs de messages qui envoient des requêtes et reçoiventdes réponses simultanément. Par exemple, par défaut, les instances de laAWS SDK forJava AmazonSQSClientutilisent au maximum 50 connexions à Amazon SQS. Pour créerdes producteurs et consommateurs simultanés supplémentaires, vous devez modifier lenombre maximum de threads de producteurs et de consommateurs autorisés sur un objetAmazonSQSClientBuilder, par exemple :

final AmazonSQS sqsClient = AmazonSQSClientBuilder.standard() .withClientConfiguration(new ClientConfiguration() .withMaxConnections(producerCount + consumerCount)) .build();

Pour AmazonSQSAsyncClient, vous devez également veiller à ce que le nombre de threadsdisponibles soit suffisant.

Traitement par lots des actionsLe traitement par lots effectue davantage de travail au cours de chaque aller-retour vers le service (parexemple, lorsque vous envoyez plusieurs messages avec une seule requête SendMessageBatch).Les actions par lots Amazon SQS sontSendMessageBatch,DeleteMessageBatch,etChangeMessageVisibilityBatch. Pour profiter du traitement par lots sans modifier vos producteursou consommateurs, vous pouvez utiliser leClient asynchrone tamponné Amazon SQS (p. 175).

Note

Dans la mesure où ReceiveMessage peut traiter 10 messages simultanément, il n'y a pasd'action ReceiveMessageBatch.

Le traitement par lots répartit la latence de l'action sur plusieurs messages dans une demande par lots, aulieu d'accepter la totalité de la latence pour un seul message (par exemple, une demande SendMessage).Dans la mesure où chaque échange avec le service inclut davantage de tâches à traiter, les requêtes parlots assurent une utilisation plus efficace des threads et connexions, ce qui améliore le débit.

180

Page 187: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurAugmentation du débit à l'aide de la mise à l'échelle

horizontale et du traitement par lots des actions

Vous pouvez combiner la mise à l'échelle horizontale et le traitement par lots afin de proposer un débitavec moins de threads, de connexions et de requêtes que pour les requêtes de message individuelles.Vous pouvez utiliser des actions Amazon SQS par lots pour envoyer, recevoir ou supprimer jusqu'à 10messages à la fois. Dans la mesure où Amazon SQS facture à la requête, le traitement par lots peut vousaider à réduire considérablement vos coûts.

Le traitement par lots peut ajouter un peu de complexité pour votre application (par exemple, votreapplication doit accumuler les messages avant de les envoyer, ou doit parfois attendre plus longtemps pourune réponse). Il reste toutefois efficace dans les cas suivants :

• Votre application génère de nombreux messages en peu de temps, si bien que le délai d'attente n'estjamais très long.

• Un consommateur de messages récupère les messages dans une file d'attente à sa discrétion,contrairement à un système où des producteurs de messages classiques ont besoin d'envoyer desmessages en réponse à des événements qu’ils ne contrôlent pas.

Important

Une requête de traitement par lots peut aboutir même si des messages individuels inclus danscette requête n'ont pas pu être traités. Après une requête de traitement par lot, rechercheztoujours d'éventuelles erreurs concernant des messages individuels et, le cas échéant, relancezl'action.

Exemple d'utilisation de Java pour les requêtes en une seuleopération et par lotsPrerequisitesAjoutez les packages aws-java-sdk-sqs.jar, aws-java-sdk-ec2.jar et commons-logging.jarau chemin de classe de votre version Java. L'exemple suivant illustre ces dépendances dans un fichierpom.xml de projet Maven.

<dependencies> <dependency> <groupId>com.amazonaws</groupId> <artifactId>aws-java-sdk-sqs</artifactId> <version>LATEST</version> </dependency> <dependency> <groupId>com.amazonaws</groupId> <artifactId>aws-java-sdk-ec2</artifactId> <version>LATEST</version> </dependency> <dependency> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> <version>LATEST</version> </dependency></dependencies>

SimpleProducerConsumer.javaL'exemple de code Java suivant implémente un schéma simple consommateur-producteur. Le threadprincipal génère un certain nombre de threads producteurs et consommateurs qui traitent des messages de1 Ko pendant une durée spécifiée. Cet exemple inclut des producteurs et des consommateurs qui émettentdes requêtes d'opérations simples, et d'autres qui créent des requêtes de traitement par lot.

/*

181

Page 188: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurAugmentation du débit à l'aide de la mise à l'échelle

horizontale et du traitement par lots des actions

* Copyright 2010-2021 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. * A copy of the License is located at * * https://aws.amazon.com/apache2.0 * * or in the "license" file accompanying this file. This file is distributed * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either * express or implied. See the License for the specific language governing * permissions and limitations under the License. * */

import com.amazonaws.AmazonClientException;import com.amazonaws.ClientConfiguration;import com.amazonaws.services.sqs.AmazonSQS;import com.amazonaws.services.sqs.AmazonSQSClientBuilder;import com.amazonaws.services.sqs.model.*;import org.apache.commons.logging.Log;import org.apache.commons.logging.LogFactory;

import java.math.BigInteger;import java.util.ArrayList;import java.util.List;import java.util.Random;import java.util.Scanner;import java.util.concurrent.TimeUnit;import java.util.concurrent.atomic.AtomicBoolean;import java.util.concurrent.atomic.AtomicInteger;

/** * Start a specified number of producer and consumer threads, and produce-consume * for the least of the specified duration and 1 hour. Some messages can be left * in the queue because producers and consumers might not be in exact balance. */public class SimpleProducerConsumer {

// The maximum runtime of the program. private final static int MAX_RUNTIME_MINUTES = 60; private final static Log log = LogFactory.getLog(SimpleProducerConsumer.class);

public static void main(String[] args) throws InterruptedException {

final Scanner input = new Scanner(System.in);

System.out.print("Enter the queue name: "); final String queueName = input.nextLine();

System.out.print("Enter the number of producers: "); final int producerCount = input.nextInt();

System.out.print("Enter the number of consumers: "); final int consumerCount = input.nextInt();

System.out.print("Enter the number of messages per batch: "); final int batchSize = input.nextInt();

System.out.print("Enter the message size in bytes: "); final int messageSizeByte = input.nextInt();

System.out.print("Enter the run time in minutes: "); final int runTimeMinutes = input.nextInt();

/*

182

Page 189: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurAugmentation du débit à l'aide de la mise à l'échelle

horizontale et du traitement par lots des actions

* Create a new instance of the builder with all defaults (credentials * and region) set automatically. For more information, see Creating * Service Clients in the AWS SDK for Java Developer Guide. */ final ClientConfiguration clientConfiguration = new ClientConfiguration() .withMaxConnections(producerCount + consumerCount);

final AmazonSQS sqsClient = AmazonSQSClientBuilder.standard() .withClientConfiguration(clientConfiguration) .build();

final String queueUrl = sqsClient .getQueueUrl(new GetQueueUrlRequest(queueName)).getQueueUrl();

// The flag used to stop producer, consumer, and monitor threads. final AtomicBoolean stop = new AtomicBoolean(false);

// Start the producers. final AtomicInteger producedCount = new AtomicInteger(); final Thread[] producers = new Thread[producerCount]; for (int i = 0; i < producerCount; i++) { if (batchSize == 1) { producers[i] = new Producer(sqsClient, queueUrl, messageSizeByte, producedCount, stop); } else { producers[i] = new BatchProducer(sqsClient, queueUrl, batchSize, messageSizeByte, producedCount, stop); } producers[i].start(); }

// Start the consumers. final AtomicInteger consumedCount = new AtomicInteger(); final Thread[] consumers = new Thread[consumerCount]; for (int i = 0; i < consumerCount; i++) { if (batchSize == 1) { consumers[i] = new Consumer(sqsClient, queueUrl, consumedCount, stop); } else { consumers[i] = new BatchConsumer(sqsClient, queueUrl, batchSize, consumedCount, stop); } consumers[i].start(); }

// Start the monitor thread. final Thread monitor = new Monitor(producedCount, consumedCount, stop); monitor.start();

// Wait for the specified amount of time then stop. Thread.sleep(TimeUnit.MINUTES.toMillis(Math.min(runTimeMinutes, MAX_RUNTIME_MINUTES))); stop.set(true);

// Join all threads. for (int i = 0; i < producerCount; i++) { producers[i].join(); }

for (int i = 0; i < consumerCount; i++) { consumers[i].join(); }

monitor.interrupt(); monitor.join();

183

Page 190: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurAugmentation du débit à l'aide de la mise à l'échelle

horizontale et du traitement par lots des actions

}

private static String makeRandomString(int sizeByte) { final byte[] bs = new byte[(int) Math.ceil(sizeByte * 5 / 8)]; new Random().nextBytes(bs); bs[0] = (byte) ((bs[0] | 64) & 127); return new BigInteger(bs).toString(32); }

/** * The producer thread uses {@code SendMessage} * to send messages until it is stopped. */ private static class Producer extends Thread { final AmazonSQS sqsClient; final String queueUrl; final AtomicInteger producedCount; final AtomicBoolean stop; final String theMessage;

Producer(AmazonSQS sqsQueueBuffer, String queueUrl, int messageSizeByte, AtomicInteger producedCount, AtomicBoolean stop) { this.sqsClient = sqsQueueBuffer; this.queueUrl = queueUrl; this.producedCount = producedCount; this.stop = stop; this.theMessage = makeRandomString(messageSizeByte); }

/* * The producedCount object tracks the number of messages produced by * all producer threads. If there is an error, the program exits the * run() method. */ public void run() { try { while (!stop.get()) { sqsClient.sendMessage(new SendMessageRequest(queueUrl, theMessage)); producedCount.incrementAndGet(); } } catch (AmazonClientException e) { /* * By default, AmazonSQSClient retries calls 3 times before * failing. If this unlikely condition occurs, stop. */ log.error("Producer: " + e.getMessage()); System.exit(1); } } }

/** * The producer thread uses {@code SendMessageBatch} * to send messages until it is stopped. */ private static class BatchProducer extends Thread { final AmazonSQS sqsClient; final String queueUrl; final int batchSize; final AtomicInteger producedCount; final AtomicBoolean stop; final String theMessage;

BatchProducer(AmazonSQS sqsQueueBuffer, String queueUrl, int batchSize, int messageSizeByte, AtomicInteger producedCount,

184

Page 191: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurAugmentation du débit à l'aide de la mise à l'échelle

horizontale et du traitement par lots des actions

AtomicBoolean stop) { this.sqsClient = sqsQueueBuffer; this.queueUrl = queueUrl; this.batchSize = batchSize; this.producedCount = producedCount; this.stop = stop; this.theMessage = makeRandomString(messageSizeByte); }

public void run() { try { while (!stop.get()) { final SendMessageBatchRequest batchRequest = new SendMessageBatchRequest().withQueueUrl(queueUrl);

final List<SendMessageBatchRequestEntry> entries = new ArrayList<SendMessageBatchRequestEntry>(); for (int i = 0; i < batchSize; i++) entries.add(new SendMessageBatchRequestEntry() .withId(Integer.toString(i)) .withMessageBody(theMessage)); batchRequest.setEntries(entries);

final SendMessageBatchResult batchResult = sqsClient.sendMessageBatch(batchRequest); producedCount.addAndGet(batchResult.getSuccessful().size());

/* * Because SendMessageBatch can return successfully, but * individual batch items fail, retry the failed batch items. */ if (!batchResult.getFailed().isEmpty()) { log.warn("Producer: retrying sending " + batchResult.getFailed().size() + " messages"); for (int i = 0, n = batchResult.getFailed().size(); i < n; i++) { sqsClient.sendMessage(new SendMessageRequest(queueUrl, theMessage)); producedCount.incrementAndGet(); } } } } catch (AmazonClientException e) { /* * By default, AmazonSQSClient retries calls 3 times before * failing. If this unlikely condition occurs, stop. */ log.error("BatchProducer: " + e.getMessage()); System.exit(1); } } }

/** * The consumer thread uses {@code ReceiveMessage} and {@code DeleteMessage} * to consume messages until it is stopped. */ private static class Consumer extends Thread { final AmazonSQS sqsClient; final String queueUrl; final AtomicInteger consumedCount; final AtomicBoolean stop;

Consumer(AmazonSQS sqsClient, String queueUrl, AtomicInteger consumedCount, AtomicBoolean stop) { this.sqsClient = sqsClient;

185

Page 192: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurAugmentation du débit à l'aide de la mise à l'échelle

horizontale et du traitement par lots des actions

this.queueUrl = queueUrl; this.consumedCount = consumedCount; this.stop = stop; }

/* * Each consumer thread receives and deletes messages until the main * thread stops the consumer thread. The consumedCount object tracks the * number of messages that are consumed by all consumer threads, and the * count is logged periodically. */ public void run() { try { while (!stop.get()) { try { final ReceiveMessageResult result = sqsClient .receiveMessage(new ReceiveMessageRequest(queueUrl));

if (!result.getMessages().isEmpty()) { final Message m = result.getMessages().get(0); sqsClient.deleteMessage(new DeleteMessageRequest(queueUrl, m.getReceiptHandle())); consumedCount.incrementAndGet(); } } catch (AmazonClientException e) { log.error(e.getMessage()); } } } catch (AmazonClientException e) { /* * By default, AmazonSQSClient retries calls 3 times before * failing. If this unlikely condition occurs, stop. */ log.error("Consumer: " + e.getMessage()); System.exit(1); } } }

/** * The consumer thread uses {@code ReceiveMessage} and {@code * DeleteMessageBatch} to consume messages until it is stopped. */ private static class BatchConsumer extends Thread { final AmazonSQS sqsClient; final String queueUrl; final int batchSize; final AtomicInteger consumedCount; final AtomicBoolean stop;

BatchConsumer(AmazonSQS sqsClient, String queueUrl, int batchSize, AtomicInteger consumedCount, AtomicBoolean stop) { this.sqsClient = sqsClient; this.queueUrl = queueUrl; this.batchSize = batchSize; this.consumedCount = consumedCount; this.stop = stop; }

public void run() { try { while (!stop.get()) { final ReceiveMessageResult result = sqsClient .receiveMessage(new ReceiveMessageRequest(queueUrl)

186

Page 193: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurAugmentation du débit à l'aide de la mise à l'échelle

horizontale et du traitement par lots des actions

.withMaxNumberOfMessages(batchSize));

if (!result.getMessages().isEmpty()) { final List<Message> messages = result.getMessages(); final DeleteMessageBatchRequest batchRequest = new DeleteMessageBatchRequest() .withQueueUrl(queueUrl);

final List<DeleteMessageBatchRequestEntry> entries = new ArrayList<DeleteMessageBatchRequestEntry>(); for (int i = 0, n = messages.size(); i < n; i++) entries.add(new DeleteMessageBatchRequestEntry() .withId(Integer.toString(i)) .withReceiptHandle(messages.get(i) .getReceiptHandle())); batchRequest.setEntries(entries);

final DeleteMessageBatchResult batchResult = sqsClient .deleteMessageBatch(batchRequest); consumedCount.addAndGet(batchResult.getSuccessful().size());

/* * Because DeleteMessageBatch can return successfully, * but individual batch items fail, retry the failed * batch items. */ if (!batchResult.getFailed().isEmpty()) { final int n = batchResult.getFailed().size(); log.warn("Producer: retrying deleting " + n + " messages"); for (BatchResultErrorEntry e : batchResult .getFailed()) {

sqsClient.deleteMessage( new DeleteMessageRequest(queueUrl, messages.get(Integer .parseInt(e.getId())) .getReceiptHandle()));

consumedCount.incrementAndGet(); } } } } } catch (AmazonClientException e) { /* * By default, AmazonSQSClient retries calls 3 times before * failing. If this unlikely condition occurs, stop. */ log.error("BatchConsumer: " + e.getMessage()); System.exit(1); } } }

/** * This thread prints every second the number of messages produced and * consumed so far. */ private static class Monitor extends Thread { private final AtomicInteger producedCount; private final AtomicInteger consumedCount; private final AtomicBoolean stop;

Monitor(AtomicInteger producedCount, AtomicInteger consumedCount, AtomicBoolean stop) {

187

Page 194: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeurAugmentation du débit à l'aide de la mise à l'échelle

horizontale et du traitement par lots des actions

this.producedCount = producedCount; this.consumedCount = consumedCount; this.stop = stop; }

public void run() { try { while (!stop.get()) { Thread.sleep(1000); log.info("produced messages = " + producedCount.get() + ", consumed messages = " + consumedCount.get()); } } catch (InterruptedException e) { // Allow the thread to exit. } } }}

Surveillance des métriques de volume pour l'exemple exécuté

Amazon SQS génère automatiquement des métriques de volume pour les messages envoyés, reçus etsupprimés. Vous pouvez accéder à ces métriques et à d'autres via laSurveillancede votre file d'attente ousur l'ongletConsole CloudWatch.

Note

Après le démarrage de la file d'attente, il faut patienter jusqu'à 15 minutes pour que ces métriquessoient disponibles.

188

Page 195: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeur

Ressources Amazon SQSLe tableau suivant répertorie les ressources connexes qui peuvent vous être utiles lors de l'utilisation de ceservice.

Ressource Description

Référence d'API Amazon Simple QueueService

Descriptions des actions, paramètres et types de données, etliste des erreurs renvoyées par le service.

Amazon SQSAWS CLIRéférence descommandes

Descriptions des commandes AWS CLI que vous pouvezutiliser avec des files d'attente.

Régions et points de terminaison Informations sur les régions Amazon SQS

Page produit Page web principale pour obtenir des informations surAmazon SQS.

Forum de discussion Un forum communautaire pour les développeurs où ilspeuvent discuter des questions techniques liées à AmazonSQS.

AWS Information sur Premium Support Page web principale pour obtenir des informationssurAWSPremium Support, un canal d'assistance individuellerapide pour vous aider à développer et à exécuter desapplications surAWSServices d'infrastructure.

189

Page 196: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeur

Historique de la documentationLe tableau suivant décrit les modifications importantes apportées auGuide du développeur Amazon SimpleQueue Servicedepuis janvier 2019. Pour recevoir les notifications des mises à jour de cette documentation,abonnez-vous à la région.Flux RSS.

update-history-change update-history-description update-history-date

Un débit élevé pour lesmessages dans les files d'attenteFIFO est disponible

Un débit élevé pour les filesd'attente Amazon SQS FIFOfournit un nombre plus élevé detransactions par seconde (TPS)pour les messages dans les filesd'attente FIFO. Pour obtenir desinformations sur les quotas dedébit, veuillez consulterQuotasliés aux messages.

27 mai 2021

Un débit élevé pour lesmessages dans les files d'attenteFIFO est disponible en versionpréliminaire

Le débit élevé pour les filesd'attente Amazon SQS FIFO esten version préliminaire et peutêtre modifié. Cette fonctionnalitéfournit un nombre plus élevé detransactions par seconde (TPS)pour les messages dans les filesd'attente FIFO. Pour obtenir desinformations sur les quotas dedébit, veuillez consulterQuotasliés aux messages.

17 décembre 2020

Nouvelle conception de laconsole Amazon SQS

Pour simplifier les workflows dedéveloppement et de production,la console Amazon SQSdispose d'unnouvelle expérienceutilisateur.

8 juillet 2020

Amazon SQS prend en chargela pagination pour listQueues etlistDeadLetterSourceQueues

Vous pouvez spécifier le nombremaximal de résultats à renvoyerà partir d'une requête ListQueuesou ListDeadLetterSourceQueues.

22 juin 2020

Amazon SQS prend encharge les métriques AmazonCloudWatch d'une minute danstoutes les régions.AWSRégions,à l'exception desAWSRégionsGovCloud (US)

La métrique CloudWatch d'uneminute pour Amazon SQSest disponible dans toutes lesrégions, à l'exception de larégion. AWS GovCloud (US)Régions.

9 janvier 2020

Amazon SQS prend en chargeles métriques CloudWatch d'uneminute

La métrique CloudWatch d'uneminute pour Amazon SQSest actuellement disponibleuniquement dans les régionssuivantes : USA Est (Ohio),Europe (Irlande), Europe

25 novembre 2019

190

Page 197: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeur

(Stockholm) et Asie-Pacifique(Tokyo).

AWS Lambda déclencheurs pourles files d'attente FIFO AmazonSQS sont disponibles

Vous pouvez configurer lesmessages arrivant dans unefile d'attente FIFO en tant quedéclencheur de fonction Lambda.

25 novembre 2019

Le chiffrement côté serveur(SSE) pour Amazon SQS estdisponible dans les régions Chine

SSE pour Amazon SQS estdisponible dans les régions deChine.

13 novembre 2019

Les files d'attente FIFO sontdisponibles dans la régionMoyen-Orient (Bahreïn)

Les files d'attente FIFO sontdisponibles dans la régionMoyen-Orient (Bahreïn).

October 10, 2019

Les points de terminaisonAmazon Virtual Private Cloud(Amazon VPC) pour AmazonSQS sont disponibles dans larégion.AWSGovCloud (USAEst)AWSRégions GovCloud(USA Ouest)

Vous pouvez envoyerdes messages à vos filesd'attente Amazon SQS àpartir d'Amazon VPC dans larégion.AWSGovCloud (USAEst)AWSRégions GovCloud(USA Ouest)

5 septembre 2019

Amazon SQS autorise ledépannage des files d'attenteavecAWS X-RayUtilisationdes attributs de système demessages

Vous pouvez résoudre lesmessages transitant par desfiles d'attente Amazon SQS avecX-Ray. Cette version ajoute lastratégieMessageSystemAttribute(quivous permet d'envoyerdes en-têtes de trace X-Ray via Amazon SQS) auserveurSendMessageandSendMessageBatchOpérationsd'API, lastratégieAWSTraceHeaderAttributà la stratégieReceiveMessageetl'opérationAPIMessageSystemAttributeValueTypede données.

28 août 2019

Vous pouvez baliser les filesd'attente Amazon SQS lors deleur création

Vous pouvez utiliser unseul appel API AmazonSQS,AWSfonction SDK,ouAWS Command LineInterface(AWS CLI) pour créersimultanément une file d'attenteet spécifier ses balises. En outre,Amazon SQS prend en chargeleaws:TagKeysandaws:RequestTagAWS Identity and AccessManagement(IAM).

22 août 2019

191

Page 198: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeur

Le client de file d'attentetemporaire pour Amazon SQSest désormais disponible

Les files d'attente temporairesvous permettent d'économiserdu temps de développementet des coûts de déploiementlors de l'utilisation de modèlesde messages courants telsquedemande-réponse. Vouspouvez utiliser la stratégieClientde file d'attente temporairepourcréer des files d'attentetemporaires à haut débit,économiques et gérées par lesapplications.

25 juillet 2019

SSE pour Amazon SQS estdisponible dans leAWSRégionGovCloud (USA Est)

Le chiffrement côté serveur(SSE) pour Amazon SQSest disponible dans larégion.AWSRégion GovCloud(USA Est)

20 juin 2019

Les files d'attente FIFO sontdisponibles dans la région Asie-Pacifique (Hong Kong), la Chine(Beijing),AWSGovCloud (USAEst)AWSRégions GovCloud(USA Ouest)

Les files d'attente FIFO sontdisponibles dans la région Asie-Pacifique (Hong Kong), la Chine(Beijing),AWSGovCloud (USAEst)AWSRégions GovCloud(USA Ouest)

15 mai 2019

Les stratégies de point determinaison Amazon VPC sontdisponibles pour Amazon SQS

Vous pouvez créer des stratégiesde point de terminaison AmazonVPC pour Amazon SQS.

4 avril 2019

Les files d'attente FIFO sontdisponibles dans les régionsEurope (Stockholm) et Chine(Ningxia)

Les files d'attente FIFO sontdisponibles dans les régionsEurope (Stockholm) et Chine(Ningxia).

14 mars 2019

Les files d'attente FIFO sontdisponibles dans toutes lesrégions où Amazon SQS estdisponible

Les files d'attente FIFO sontdisponibles dans les régions USAEst (Ohio), USA Est (Virginie duNord), USA Ouest (Californiedu Nord), USA Ouest (Oregon),Asie-Pacifique (Mumbai), Asie-Pacifique (Séoul), Asie-Pacifique(Singapour), Asie-Pacifique(Sydney), Asie-Pacifique (Tokyo),Canada (Central), Europe(Francfort), Irlande), Europe),Europe), Europe (Londres),Londres), Europe (Londres),Europe), Londres), Europe( Paris) et Amérique du Sud (SãoPaulo).

7 février 2019

192

Page 199: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeur

AWSGlossairePour la dernière version de l'AWS, consultez la terminologieAWSGlossairedans leAWSRéférence générale.

193

Page 200: Amazon Simple Queue Service...Amazon Simple Queue Service (Amazon SQS) offre une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de découpler

Amazon Simple Queue Service Guide du développeur

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

cxciv