Formation DevOps | Formation AWS Services : 10 - Service SQS

www.itgalaxy.io

AWS Simple Queue Service

✓ Pourquoi utiliser une Queue?
✓ Intérêt du ServiceSQS
✓ Concepts
✓ Cycle de vie desmessages
✓ Monitoring
✓ ConfigurationIAM
✓ Requêtes versSQS
✓ Configuration et utilisation d’une Queue (démo)
✓ Pointsd’attention
✓ Autres fonctionnalités SQS (non détaillées enformation)
✓ SQS FIFO

Pourquoi utiliser une Queue?
✓ Traitements asynchrones
✓ Découplage des composants
✓ Reprise sur erreur
✓ Garantie de livraison ( at least once )

Service Fiable
➢ Service hautement disponible
➢ Géré par AWS
➢ Les données sont réparties dans les multiples zones de disponibilités
➢ Métriques accessibles via CloudWatch
➢ Montée en compétence rapide sur le service
➢ Trois opérations de base ( Send / Receive / Delete )
➢ D’autres API permettent d’obtenir l’accès à des fonctionnalités avancées
➢ Les queues peuvent être mise en place rapidement avec
relativement peu de configuration

Intérêts du service SQS Service évolutif

➢ Possibilité de créer autant de Queues que nécessaire
➢ Nombre de message en attente important (120K)
➢ AWS assure la mise à l’échelle ( Scalability ) et garantit la qualité du service en fonction de la charge
➢ La taille des messages peut atteindre 256Ko (cette limite peut être dépassé en couplant SQS et S3 )

Intérêts du service SQS Service Sécurisé

✓ Repose sur le service IAM en terme de gestion d’authentification et d’autorisations
✓ Seules les utilisateurs ou services autorisés peuvent lire ou écrire dans une Queue SQS
✓ AWS SQS est PCI DSS compliant ( P ayment C ard I ndustry D ataS ecurity S tandard)

Intérêts du service SQS Service peu coûteux

➢ Pas de frais de mise en place des queues
➢ Paiement au nombre de messages et au transfert de données
➢ 0,50$ / millions de requêtes (< 64Ko par message)

Concepts Visibility timeout
➢ une fois reçu, un message devient invisible durant une période donnée ( In Flight )
➢ durant cette période, seul le process ayant lu le message peut le supprimer
➢ si au terme de la période le message n’a pas été supprimé, il redevient visible et un process peut le lire

Concepts Receipt handle
➢ cet identifiant récupéré lors de la lecture d’un message permet de le supprimer
➢ contrairement a l’ID du message, cet identifiant change à chaque lecture du message

Concepts Redrive policy
➢ Permet de définir le comportement de la queue face à un message dont le traitement échoue un certain nombre de fois
➢ la Redrive Policy permet de définir le nombre de fois ou le message est présenté, et le cas échéant ce qu’il advient après un certain nombre d’échec du traitement

Concepts Dead queue
➢ Une dead queue permet de stocker les messages dont le traitement n’a pas pu aboutir
➢ Permet l’analyse a postériori des messages ne passant pas
➢ Permet la reprise de messages après que le problème soit fixé

Concepts Short Polling / Long Polling
➢ En Short Polling , une réponse à un Receive est retournée immédiatement, avec ou sans message
➢ En Long Polling , si aucun message n’est disponible, SQS attendra à concurrence du paramètre WaitTimeSeconds
➢ WaitTimeSeconds == 0 => Short Polling
➢ Le Long Polling est le mode a privilégier

Concepts Delayed Queues

➢ Permet d’introduire un délai pendant lequel les messages postés sont invisibles
➢ Configurable entre 0 et 900 sec (15 min)

Delayed Message
➢ Il est possible d’introduire le délai avant lequel un message spécifique est invisible

Producer Consumer

  1. sendmessage 2. messageinvisible 3. receivemessage
    5. deletemessage 4. processmessage

Cycle de vie des messages (Redrive Policy)

Producer Consumer

  1. sendmessage 3. receivemessage
    2. messageinvisible
    4. processXFailuremessage
  2. messagereappear
  3. process- success until: - max receivedreached
  4. move to deadqueue

Monitoring
➢ SQS est intégré à CloudWatch pour monitorer les indicateurs clé des queues
➢ Possibilité de créer des alarmes suivant certains critères
➢ ex : remplissage de la dead queue, nombre d’éléments dans une Queue …
➢ Possibilité de créer ses propres métriques via l’API CloudWatch. Ex: agrégation de comptages sur plusieurs Queues

Monitoring Quelques indicateurs clé :
➢ remplissage de la Dead Queue (messages non traités) nombre d’éléments dans une Queue
➢ ( autoscaling si on dépasse un certain seuil)

ConfigurationIAM Arn d’une QueueSQS
➢ arn:aws:sqs:region:account_ID:queue_name
➢ ex: arn:aws:sqs::123456789:my_queue_

Configuration IAM Autorisation des actions d’administration
➢ sqs:CreateQueue
➢ sqs:DeleteQueue
➢ sqs:ListQueues
➢ sqs:PurgeQueue

Configuration IAM Autorisation pour utiliser une Queue SQS
➢ sqs:ChangeMessageVisibility
➢ sqs:DeleteMessage
➢ sqs:GetQueueAttributes
➢ sqs:GetQueueUrl
➢ sqs:ReceiveMessage
➢ sqs:SendMessage

Configuration IAM Exemple de configuration d’une Policy (envoi de messages)

{ “Version”: “2012- 10 - 17”,
“Statement”:[{“Effect”:“Allow”,
“Action”:“sqs:SendMessage”,“Resource”:“arn:aws:sqs:*:123456789012:MyQueue”
] }
}

{ “Version”: “2012- 10 - 17”,
“Statement”:[{“Effect”:“Allow”, “Action”:[
“sqs:ReceiveMessage”, “sqs:GetQueueUrl”, “sqs:DeleteMessage”
“Resource”:“arn:aws:sqs:*:123456789012:MyQueue”],
] }
}

➢ Il est possible d’appliquer une Ressource Policy sur une Queue
➢ Dans ce cas le Principal doit être spécifié
➢ Nécessaire dans certains cas :
➢ Utilisation d’une Queue en Cross Account
➢ Accès àune Queue via une ressource (ex: S3)

Requêtes vers SQS Type de requêtes (principales)
➢ SendMessage
➢ ReceiveMessage (de préférence configurer du long polling en configurant ReceiveMessageWaitTime > 0 )
➢ DeleteMessage (un message reçu mais non supprimé reviendra a l’échéance du Visibility Timeout )

Requêtes vers SQS Type de requêtes (batchprocess)
➢ ReceiveMessageBatch jusqu’a 10 messages dans une mêmerequête
➢ SendMessageBatch : envoi jusqu’a 10 messages dans une même requête pour
un payload total < 256Ko
➢ Utiliserl’AmazonSQSBufferedAsyncClient
➢ DeleteMessageBatch supprime jusqu’à 10 messages dans une mêmerequête
➢ longPollWaitTimeoutSeconds < (visibilityTimeout + processing time)dans le cas du receive!

Requêtes vers SQS Authentication
➢ Les requêtes envoyées vers SQS contiennent l’ AccessKey , une signature HMAC-SHA et un timestamp
➢ Les SDK ainsi que la CLI AWS gèrent pour nous ces paramètre d’authentification
➢ Privilégiez les rôles si vous soumettez vos requêtes SQS à partir d’une instance EC2!

Configuration et utilisation d’une Queue

Pointsd’attention
➢ L’ordre des message n’est pas garantit par SQS
➢ Le traitement d’un message doit être idempotent ( at least oncedelivery )
➢ Regarder un message dans la console consomme un Receive dans le compte de MaximumReceivePolicy de la Redrive Policy

➢ Par défaut, un message non consommé est supprimé au bout de 14j
➢ A date, il n’y a pas de VPC Endpoint pour SQS.

Le traffic entre EC2 et SQS
passe donc par la NAT Gateway pour les instances sans IPpubliques

Autres fonctionnalités SQS
➢ Possible de poster des messages dont la taille est > 256Ko en passant par S3
➢ Compatibilité SQS - Java Messaging Service
SQS Batch processing (traitement par lot d’opérations Send/Receive/Delete )

SQS FIFO
➢ Annoncé mi Nov 2016. Disponible uniquement aux US pour lemoment
➢ Garantie de livraison exactly-once
➢ Garantie de l’ordre de livraison (dans un groupe de messages)
➢ Les messages dans un groupe sont consommés ( Receive puis Delete ) les
un après les autres
➢ Les performances sont limitées à 300 tps (non distribué)
➢ 20,000 messages maximum dans laqueue






Decouvrez plus d’Offres de la plateform ItGalaxy.io :

Découvrez notre gamme complète de services et formations pour accélérer votre carrière.

1. Nous contactez

  • Description: Besoin de Formation et des Solutions cloud complètes pour vos applications
  • Links:

2. Infra as a Service

  • Description: Infrastructure cloud évolutive et sécurisée
  • Links:

3. Projets Développeurs


4. Développeurs


5. Formations Complètes


6. Marketplace

7. Blogs


This website is powered by ItGalaxy.io