En s’appuyant sur les logs, les alarmes CloudWatch et les événements EventBridge, il est possible de construire un module de notification à partir des services suivants :
Amazon Simple Queue Service (SQS)
Amazon Simple Notification Service (SNS)
SQS
C’est un service de file d'attente de messagerie entièrement géré permettant de découpler et de mettre à l'échelle des applications. Il fait partie de la famille des systèmes de communication asynchrone. Une file (queue) SQS permet à des producteurs (producers) de déposer des messages destinés à être traités par des consommateurs (consumers).
A - Lambda, ECS, EC2, EKS, SNS, EventBridge, etc
B - Pour écrire ou lire une file SQS, un rôle IAM adéquat est nécessaire, ou une autorisation basée sur une ressource.
C - Taille max pour un message : 256 ko.
D - Un message est stocké jusqu’à 14 jours dans une file. Au-delà, il est supprimé.
E - SQS permet le chiffrement SSL et avec une clé KMS.
F - Un consommateur peut lire jusqu’à 10 messages à la fois.
G - Une alarme CloudWatch basée sur la taille de la file peut être utilisée pour déclencher un Auto Scaling des consommateurs dans le cas d’instances EC2.
H - Les consommateurs reçoivent tous des blocs de messages différents.
A - Le consommateur lit le message et le traite. La file SQS enclenche alors le délai de visibilité pour ce message.
B - Le consommateur doit indiquer à la file SQS de supprimer le message dans l’intervalle du délai de visibilité, ce qui finalise le traitement du message.
C - Le SDK AWS gère l’envoi de DeleteMessage.
Il existe deux types de file :
Standard :
débit illimité ;
les messages sont remis au moins une fois ;
l’ordre des messages n’est pas assuré.
FIFO (Premier Arrivé Premier Sorti) :
l’ordre des messages est assuré => débit non illimité (300 à 3000 messages/s) ;
les messages sont traités une fois.
SNS
C’est un service entièrement géré de messagerie de publication/d'abonnement. Un producteur dépose un message dans une rubrique (topic) et SNS notifie des consommateurs (services AWS, applications externes…) par sms, mail ou requête HTTP.
A - Pour écrire dans une rubrique SNS, un rôle IAM adéquat est nécessaire, ou une autorisation basée sur une ressource (cross-account).
B - De nombreux services AWS (CloudWatch, Lambda, DynamoDB, S3...) peuvent envoyer des messages dans des rubriques SNS.
C - SNS permet le chiffrement SSL et avec une clé KMS.
D - Effectuer un traitement sur la notification par différents services AWS.
E - Stocker la notification pour des analyses plus approfondies.
A - Une notification est reçue par n applications qui la traitent à leur rythme grâce à l’asynchronisme amené par la file SQS.
Amazon Kinesis & Amazon MQ
Il existe deux autre services AWS de messagerie à connaître et qu’il ne faut pas confondre avec SQS ou SNS :
Amazon Kinesis : il est composé de 3 modules qui facilitent la collecte, le traitement et l'analyse de données de streaming en temps réel :
Kinesis Data Streams capture, traite et stocke des flux de données en streaming.
A - Kinesis Data Streams a deux modes de capacité. Soit allouée (vous indiquez le nombre de partitions) ou à la demande (aucune planification nécessaire).
B - Contrairement à SQS, un message traité n’est pas supprimé, et les consommateurs reçoivent tous les mêmes messages d’un flux. Un message est stocké pendant 365 jours, et peut être retraité plusieurs fois par un même consommateur.
C - Débit en écriture max par partition = 1 Mo/s. La clé de partition permet de conserver l’ordre des messages, car les données qui ont la même partition vont dans la même partition (shard).
D - Les messages sont stockés dans des flux (streams) composés d’une ou plusieurs partitions (shards).
E - Kinesis Data Streams supporte le chiffrement en transit et au repos.
F - Grâce à la clé de partition, les consommateurs récupèrent les données dans le même ordre qu’à l’entrée.
Kinesis Data Firehose charge des flux de données dans des entrepôts de données.
A - Kinesis Data Firehose transmet d'abord les données à un compartiment S3, puis émet une commande Redshift COPY pour les charger dans un cluster Redshift.
B - Les seuls services AWS possibles comme destination.
Kinesis Data Analytics permet d’analyser les flux de données avec SQL ou Apache Flink.
A - Traite les données avec des applications SQL, et injecte les résultats dans d’autres flux.
B - Kinesis Data Firehose n’est pas supporté comme source.
C - Traite les données avec une application écrite en Java ou Spark avec le framework Flink.
Amazon MQ : un service d'agent de messages (broker) géré et compatible avec Apache ActiveMQ et RabbitMQ. Il permet de migrer dans le cloud des applications qui s'appuient sur ces deux solutions.
Amazon MQ dispose de la fonctionnalité de file d'attente comme SNS et de rubrique comme SNS, mais sans leur capacité de mise à l'échelle (scaling).
À vous de jouer
Mettez en place le système de notification pour le site The Green Earth Post :
Créez une alarme CloudWatch basée sur la métrique CPUUtilization et ajoutez une notification par e-mail grâce au service SNS.
Poursuivez avec moi pour voir si vous avez bien réussi.
En résumé
Vous pouvez créer une alarme CloudWatch et utiliser le service SNS pour envoyer une notification par SMS ou mail.
SNS et SQS permettent de découpler et notifier des applications ou personnes.
Amazon Kinesis est le service de streaming dans le cloud AWS. Il est composé des trois briques suivantes :
Kinesis Data Streams
Kinesis Data Firehose
Kinesis Data Analytics
Super, tout se passe bien jusque-là. Mais comment faire en cas de gros soucis ? Découvrons dans le prochain chapitre comment restaurer votre site en cas de désastre !