• 20 heures
  • Moyenne

Ce cours est visible gratuitement en ligne.

course.header.alt.is_certifying

J'ai tout compris !

Mis à jour le 09/03/2023

Mettez en place le système de notification

Bannière chapitre

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).

Plusieurs chemins (C) mènent du groupe (A) des plusieurs producteurs (B) vers File SQS (D,E) puis se divisent en plusieurs chemins (F) qui mènent vers les consommateurs (H)

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.

Une flèche (A) mène du File SQS vers le consommateur et retourne vers File SQS (DeleteMessage, B, C)
Illustration du délai de visibilité

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.

Un chemin mène de producteurs (A,B) vers SNS (C) puis vers les groupes 'application à application' (D) qui comporte SQS, HTTP, Lambda et Amazon Kinesis Data Firehose et 'application à individu' qui comporte email et SMS ou notification push. Un chemin
Fonctionnement et intégration du service Amazon SNS pour notifier

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.

Un chemin mène de producteurs vers Rubrique SNS, puis vers les files SQS (A) et les applications correspondantes
Illustration du modèle Fanout

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.

Un chemin mène des producteurs vers message (C) vers Kinesis Data Streams (A, D, E, B) puis vers message (F) et finit sur consommateurs (B)
Fonctionnement de Kinesis Data Streams

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.

Un chemin mène de sources vers Kinesis Data Firehose qui exporte les données par lots vers les destinations (Redshift (A), S3, OpenSearch (B)). Firehose interagit avec Lambda (Appliquer une transformation avant changement des fichiers)
Fonctionnement de Kinesis Data Firehose

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 gauche - pour applications SQL: Kinesis DataAnalytics (A) interagit avec Kinesis Data Streams et Data Firehose. A droite - pour Apache Flink. Deux chemins mènent de Kinesis Data Streams et Amazon Managed Streaming for Apache Kafka (B) vers Kinesis Data
Fonctionnement de Kinesis Data Analytics

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

Bannière A 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 !

Exemple de certificat de réussite
Exemple de certificat de réussite