La gestion des notifications en temps réel à travers vos applications peut être un énorme défi – du moins sans le bon service de messagerie.
Amazon Simple Notification Service (SNS) est là pour fournir une solution de messagerie entièrement gérée pour le découplage et la mise à l’échelle des microservices, des systèmes distribués et des applications serverless. SNS vous permet d’envoyer des messages à un grand nombre d’abonnés via plusieurs protocoles de transport, tels que HTTP/S, e-mail, SMS et notifications push mobile. AWS SNS gère tout le travail lourd de la livraison des messages, y compris la livraison fiable, les tentatives de réémission et la fonctionnalité de backoff, vous permettant de vous concentrer sur la construction des fonctionnalités principales de votre application.
AWS SNS suit un modèle publier-souscrire à la fois facile à mettre à l’échelle et à comprendre. Un message publié peut être distribué simultanément à plusieurs points de terminaison, ce qui rend SNS idéal pour les architectures orientées événements.
Dans ce tutoriel, je vous guiderai pour configurer et utiliser AWS SNS afin d’envoyer des notifications sur différents canaux.
Qu’est-ce que AWS SNS?
Amazon Simple Notification Service (SNS) est le service de messagerie géré par AWS qui permet de découpler les microservices, les systèmes distribués et les applications sans serveur.
Amazon SNS fonctionne sur un modèle simple de publication-abonnement où les éditeurs envoient des messages à des sujets, et les abonnés reçoivent ces messages. Pensez à un sujet SNS comme un canal de communication – vous publiez des messages sur ce canal, et toute personne abonnée est notifiée immédiatement. La beauté de ce système est que les éditeurs n’ont pas besoin de savoir qui reçoit leurs messages, et les abonnés n’ont pas besoin de savoir qui les envoie.
Vous vous demandez peut-être comment cela diffère des autres services de messagerie AWS comme Simple Queue Service (SQS). En bref, SQS utilise un modèle basé sur des files d’attente principalement conçu pour traiter des tâches de manière asynchrone, tandis que SNS se concentre sur la diffusion de messages à plusieurs destinataires en même temps. Cela rend SNS parfait pour les scénarios où vous devez notifier de nombreux systèmes d’un événement qui vient de se produire. Vous pouvez en apprendre davantage sur les diffèrences dans l’article de blog SQS vs SNS.
SNS prend en charge plusieurs protocoles de livraison, ce qui vous offre une flexibilité quant à la manière dont vos abonnés reçoivent les notifications.
Caractéristiques clés d’AWS SNS
SNS est doté de fonctionnalités qui en font le seul service de notification dont vous aurez besoin. Je vais en énumérer quelques-unes :
- Architecture de diffusion en éventail : SNS peut envoyer des messages à des milliers de points de terminaison simultanément, ce qui vous permet de diffuser des mises à jour dans l’ensemble de votre écosystème d’application avec un seul appel API.
- Multiples protocoles de transport: Vous n’êtes pas limité à un seul moyen d’envoyer des messages. SNS prend en charge les points de terminaison HTTP/HTTPS, les e-mails, les SMS, les notifications push mobiles et même les files SQS en tant que points de terminaison d’abonnement.
- Filtrage des messages: Tous les abonnés n’ont pas besoin de recevoir tous les messages. Grâce au filtrage des messages, vos abonnés peuvent créer des politiques de filtrage pour ne recevoir que les messages qui les intéressent, ce qui réduit le bruit et la charge de traitement.
- Archivage des messages: Si vous avez besoin de conserver un enregistrement de toutes les notifications envoyées, sachez que SNS s’intègre avec Amazon S3 pour l’archivage des messages et avec Amazon Redshift pour l’analyse.
- Suivi de l’état de livraison :Vous pouvez surveiller l’état de livraison de vos notifications pour vous assurer qu’elles atteignent leur destination. C’est particulièrement utile pour les SMS et les notifications push mobiles où la livraison n’est pas garantie.
- Chiffrement :Vos données sensibles restent protégées grâce au support de SNS pour le chiffrement côté serveur, qui garantit que vos messages restent confidentiels pendant la transmission.
Mais le meilleur aspect de SNS doit être la scalabilité. SNS s’adapte automatiquement aux besoins de votre application. Peu importe que vous envoyiez dix ou dix millions de notifications par jour, le service s’ajuste en conséquence sans nécessiter d’intervention manuelle.
Ensuite, je vous montrerai comment configurer SNS.
Mise en place d’AWS SNS
Avant de pouvoir envoyer votre première notification avec SNS, vous devrez suivre quelques étapes de configuration pour tout mettre en place.
Étape 1 : Créer un compte AWS
Si vous n’avez pas encore de compte AWS, vous devrez en créer un avant de pouvoir commencer à utiliser SNS.
Rendez-vous sur la page d’accueil d’AWS et cliquez sur le bouton « Créer un compte AWS » dans le coin supérieur droit. Vous devrez fournir votre adresse e-mail, créer un mot de passe et saisir quelques informations de base sur le compte. AWS vous demandera également vos coordonnées de carte de crédit – ne vous inquiétez pas, SNS propose une généreuse offre gratuite et vous ne serez pas facturé à moins de dépasser ces limites.
Une fois votre compte configuré, vous êtes prêt à aller plus loin. Cependant, je vous recommande vivement de créer un utilisateur IAM dédié au lieu d’utiliser votre compte principal. Cela sort du cadre de l’article d’aujourd’hui, mais reportez-vous aux instructions officielles pour des guides détaillés.
Étape 2 : Configuration de SNS dans la console de gestion AWS
Maintenant que vous avez un compte AWS, il est temps d’accéder au service SNS.
Connectez-vous à la console de gestion AWS avec vos identifiants et trouvez SNS. Vous pouvez le faire de trois façons :
- Tapez « SNS » dans la barre de recherche en haut de la console
- Cliquez sur « Services » dans la barre de navigation supérieure et trouvez SNS sous la catégorie « Intégration d’applications »
- Accédez directement à la console SNS
Peu importe la méthode, voici l’écran que vous devriez voir :
Image 1 – Page de service AWS SNS
Une fois dans le tableau de bord SNS, vous verrez un menu sur le côté gauche avec des options telles que « Sujets, » « Abonnements, » et « Mobile. » Le tableau de bord vous donne un aperçu de vos ressources SNS et de l’activité récente.
Cela sera assez vide pour un nouveau compte — c’est normal. Maintenant, créons notre premier sujet SNS.
Étape 3 : Création d’un sujet SNS
Un sujet SNS est essentiellement un canal de communication vers lequel les éditeurs envoient des messages et les abonnés écoutent.
Pensez-y comme une station de radio – la station diffuse sur une fréquence spécifique (le sujet), et toute personne accordée à cette fréquence reçoit la diffusion. En termes SNS, votre application publie des messages sur un sujet, et tous les points de terminaison abonnés à ce sujet reçoivent ces messages.
Voici comment créer votre premier sujet SNS :
- Sur l’écran que vous avez vu dans Image 1, saisissez un nom de sujet.
- Cliquez sur le bouton « Étape suivante ».
- Sélectionnez « Standard » pour le type (les sujets FIFO ont des cas d’utilisation différents que nous aborderons plus tard).
- (Facultatif) Saisissez un nom d’affichage. Celui-ci sera inclus dans les messages envoyés aux abonnés par SMS ou e-mail.
- Laissez tous les autres paramètres par défaut pour l’instant.
- Cliquez sur « Créer un sujet ».
Si vous préférez les images aux textes, voici à quoi votre écran devrait ressembler :
Image 2 – Création de sujet SNS
Une fois que vous êtes satisfait des valeurs, faites défiler vers le bas jusqu’à ce que vous voyiez le bouton « Créer un sujet » :
Image 3 – Création de sujet SNS (2)
Et voilà ! Votre sujet SNS est maintenant prêt à être utilisé. Vous verrez des détails tels que l’ARN du sujet (Amazon Resource Name), qui identifie de manière unique votre sujet :
Image 4 – Détails du sujet créé
Votre nouveau sujet est prêt pour les abonnements, mais il n’en a pas encore, ce qui signifie que tout message que vous publiez n’ira nulle part. Ne vous inquiétez pas, vous arrangerez cela dans la section suivante lorsque vous ajouterez des abonnés.
Abonnés et abonnements SNS
Comme je l’ai dit plus tôt, votre sujet SNS est comme une station de radio. Il n’a actuellement aucun auditeur, mais cela changera lorsque vous ajouterez des abonnés pour recevoir vos messages.
Qu’est-ce qu’un abonné SNS ?
Un abonné est tout point de terminaison qui reçoit des notifications de votre sujet SNS lorsqu’un message est publié.
Considérez l’analogie d’une newsletter. Chaque fois que vous publiez une nouvelle édition (message), elle est livrée à tous les abonnés de votre liste de diffusion. Les réseaux sociaux rendent ce processus automatique et évolutif, et ils gèrent toute la logistique de livraison pour vous.
AWS prend en charge une grande variété de types d’abonnés, ce qui vous offre une flexibilité dans la manière dont vos messages sont traités. Je vais énumérer ci-dessous les principaux types :
- Adresses e-mail : Envoyez des notifications en texte brut directement dans les boîtes de réception électroniques.
- Numéros de téléphone portable : Envoyez des notifications par SMS aux téléphones mobiles.
- Files d’attente SQS : Routage des messages vers d’autres services AWS pour un traitement ultérieur.
- Fonctions Lambda : Déclenchent l’exécution de code sans serveur en réponse aux notifications.
- Points de terminaison HTTP/HTTPS : Envoient des messages aux applications web ou aux API.
- Notification mobile : Envoyez des notifications directement aux applications mobiles.
Chaque type d’abonné a ses propres avantages et cas d’utilisation. Par exemple, l’e-mail et les SMS sont excellents pour les destinataires humains, tandis que les files SQS et les fonctions Lambda sont plus adaptées à la communication système à système.
Étape 1 : Ajout d’un abonné
Maintenant que vous comprenez ce que sont les abonnés, ajoutons-en un à votre sujet. Pour ce tutoriel, je vais utiliser l’e-mail car c’est le plus simple à configurer.
Voici comment ajouter un abonné par e-mail à votre sujet SNS :
- Depuis la page de détails de votre sujet (celle affichée dans Image 4), cliquez sur le bouton « Créer un abonnement ».
- Dans le menu déroulant « Protocole », sélectionnez « E-mail ».
- Dans le champ « Point de terminaison », saisissez l’adresse e-mail qui doit recevoir les notifications.
- Laissez tous les autres paramètres à leurs valeurs par défaut.
- Cliquez sur « Créer l’abonnement ».
Votre écran devrait ressembler à ceci :
Image 5 – Création d’un abonnement par e-mail
Une fois que vous avez cliqué sur « Créer l’abonnement », AWS ajoutera l’abonnement à votre sujet, mais il sera dans un état de « confirmation en attente » :
Image 6 – État de confirmation en attente
Il s’agit d’une fonctionnalité de sécurité importante, car AWS veut s’assurer que le propriétaire de l’adresse e-mail souhaite réellement recevoir ces notifications.
Étape 2 : Confirmation des abonnements
Après avoir ajouté un abonné, celui-ci doit confirmer qu’il souhaite recevoir des notifications de votre sujet SNS.
Pour les abonnements par e-mail, AWS envoie automatiquement un e-mail de confirmation à l’adresse que vous avez spécifiée. L’e-mail contient un lien sur lequel le destinataire doit cliquer pour activer l’abonnement. Jusqu’à ce que cela se produise, aucun message publié sur le sujet ne sera livré à ce point de terminaison.
Voici à quoi ressemble un e-mail de confirmation typique :
Image 7 – E-mail de confirmation SNS
Le destinataire n’a qu’à cliquer sur le lien « Confirmer l’abonnement » dans l’e-mail. Il sera redirigé vers une page confirmant que son abonnement est désormais actif :
Image 8 – Message de confirmation d’abonnement
Le processus est similaire pour les abonnés SMS – AWS envoie un message texte avec un lien de confirmation que le destinataire doit suivre. Les points de terminaison HTTP/HTTPS doivent répondre à une demande de confirmation d’AWS, tandis que les ressources AWS telles que les fonctions Lambda et les files SQS peuvent être configurées pour une confirmation automatique.
Vous pouvez vérifier le statut de vos abonnements en cliquant sur la section « Abonnements » dans la barre latérale gauche de la console SNS. Les abonnements confirmés afficheront un statut « Confirmé », tandis que ceux en attente de confirmation afficheront « En attente de confirmation ».
Image 9 – Statut de l’abonnement
Une fois votre abonnement confirmé, vous êtes prêt à commencer à envoyer des messages! Tout message publié sur le sujet sera livré à tous les abonnés confirmés utilisant leur protocole spécifié.
C’est tout ce qu’il y a à savoir sur la configuration des abonnements SNS. Dans la section suivante, vous apprendrez comment publier des messages sur votre sujet et tester que vos abonnés les reçoivent correctement.
Publication de messages sur les sujets SNS
Maintenant que vous avez configuré votre sujet SNS et ajouté des abonnés, il est temps d’envoyer votre première notification.
Étape 1 : Publication d’un message
Un bon moyen de commencer est de publier un message via la console AWS.
Pour envoyer votre premier message, accédez à la page de détails de votre sujet et cliquez sur le bouton « Publier le message » en haut à droite (voir Image 4). Cela ouvrira le formulaire de publication du message où vous pourrez rédiger votre notification. Vous verrez des champs pour le sujet du message et le corps du message. Le sujet est facultatif mais utile pour les notifications par e-mail car il devient la ligne d’objet de l’e-mail.
Pour un message de test simple, vous pourriez saisir quelque chose comme ceci :
Image 10 – Contenu du premier message
Lorsque vous êtes satisfait de votre message, faites défiler vers le bas et cliquez sur le bouton « Publier le message » en bas du formulaire :
Image 11 – Publication d’un message via la console
Après avoir cliqué, SNS distribue immédiatement votre message à tous les abonnés confirmés. Si vous avez configuré un abonnement par e-mail, vous devriez recevoir le message de test dans votre boîte de réception en quelques secondes :
Image 12 – Message reçu par e-mail
Simple, n’est-ce pas ? Voyons maintenant comment le personnaliser davantage.
Étape 2 : Envoi de notifications par SMS et e-mail
SNS vous permet de personnaliser l’apparence de vos messages pour différents types d’abonnés.
Lors de la publication d’un message, vous remarquerez l’option « Structure du message ». Par défaut, elle est définie sur « Charge utile identique pour tous les protocoles de distribution », ce qui signifie que tous les abonnés reçoivent exactement le même message. Cependant, vous pouvez également sélectionner « Charge utile personnalisée pour chaque protocole de distribution », ce qui vous permet de personnaliser le format du message pour chaque type d’abonné.
Pour les notifications par e-mail, vous avez deux options de format :
- Email-JSON: Envoie la charge utile JSON brute au point de terminaison e-mail.
- Email: Envoie un e-mail formaté avec le sujet et le corps du message.
Image 13 – Personnalisation de la charge utile
Pour les notifications SMS, gardez à l’esprit qu’il y a une limite de 160 caractères. SNS livrera des messages plus longs, mais ils seront traités comme plusieurs messages. Vous pouvez également définir le type de message SMS comme « Promotionnel » ou « Transactionnel », ce qui affecte l’optimisation de la livraison :
Image 14 – Options SMS
Vous savez maintenant comment envoyer et personnaliser les notifications par e-mail via la console AWS. Ensuite, vous apprendrez à faire de même via l’interface en ligne de commande (CLI) et Python.
Étape 3 : Utilisation de l’AWS CLI ou SDK pour publier des messages
La console est excellente pour les tests manuels, mais dans le monde réel, vous voudrez publier des messages de manière programmée.
L’interface de ligne de commande AWS (CLI) facilite l’envoi de messages SNS depuis votre terminal ou vos scripts d’automatisation.
En supposant que vous avez installé et configuré l’AWS CLI, exécutez cette commande pour publier un message via la CLI :
aws sns publish --topic-arn "sns-arn" --subject "CLI Notification" --message "Hello from the AWS CLI!"
Image 15 – Publication de messages via AWS CLI
En un instant, vous verrez un message similaire dans votre boîte de réception :
Image 16 – Publication de message via AWS CLI (2)
Pour des applications plus avancées, les SDK AWS offrent un accès programmatique à SNS dans de nombreux langages de programmation.
Voici un exemple simple pour publier un message en utilisant Python avec la bibliothèque boto3
:
import boto3 # Initialiser le client SNS sns_client = boto3.client("sns", region_name="eu-central-1") # ARN du sujet (Amazon Resource Name) topic_arn = "sns-arn" # Publier un message simple response = sns_client.publish( TopicArn=topic_arn, Message="Hello from Python!", Subject="Python Notification" ) # Vérifier si le message a été envoyé avec succès if "MessageId" in response: print(f"Message published successfully! Message ID: {response['MessageId']}")
Image 17 – Publication de message via SDK Python
Encore une fois, le message est instantanément livré dans ma boîte de réception :
Image 18 – Publication de messages via le SDK Python (2)
C’est tout ce qu’il faut pour publier des messages avec SNS! Vous avez maintenant plusieurs façons d’envoyer des notifications, de l’interface console simple à la publication programmatique avec AWS CLI ou SDK.
> Nouveau sur AWS Boto en Python? Inscrivez-vous à notre cours pour devenir compétent en un rien de temps.
Dans la section suivante, nous explorerons quelques fonctionnalités avancées de SNS qui amélioreront vos notifications.
Fonctionnalités avancées de SNS
Jusqu’à présent, vous avez appris les bases de SNS. Dans cette section, vous verrez quelques fonctionnalités avancées qui rendent SNS vraiment puissant.
Filtrage des messages sur les réseaux sociaux
L’envoi de la même notification à tous les abonnés entraîne souvent les destinataires à recevoir des messages qui ne les intéressent pas.
Le filtrage des messages résout ce problème en permettant aux abonnés de filtrer les messages qu’ils reçoivent en fonction des attributs des messages. Pensez à configurer des filtres d’e-mail – vous créez des règles qui déterminent quels messages passent. Pour les SNS, ces règles sont appelées politiques de filtrage.
Pour commencer, vous pouvez configurer des politiques de filtrage sur vos abonnements afin qu’ils ne reçoivent que les messages pertinents :
Image 19 – Politiques de filtrage des notifications
Dans cet exemple, l’abonné ne recevra des notifications que pour les messages ayant un attribut order_value
avec une valeur numérique de 1500 et plus.
Maintenant, pour envoyer une telle notification, vous pouvez utiliser le code Python suivant :
import boto3 # Initialiser le client SNS sns_client = boto3.client("sns", region_name="eu-central-1") # ARN du sujet (Amazon Resource Name) topic_arn = "arn:aws:sns:eu-central-1:105036517833:TestTopic" response = sns_client.publish( TopicArn=topic_arn, Message="A new high-value order has been placed", Subject="New Order Notification", MessageAttributes={ "order_value": {"DataType": "Number", "StringValue": "2000"}, "region": {"DataType": "String", "StringValue": "EU"}, "category": {"DataType": "String", "StringValue": "Electronics"}, }, ) print(response)
Voici ce que vous verrez après avoir exécuté le script Python :
Image 20 – Envoi d’une notification via Python
Seulement si la valeur de order_value
est de 1500 ou plus, vous recevrez la notification :
Image 21 – Contenu de la notification
En bref, les politiques de filtrage vous permettent d’envoyer des notifications ciblées sans modifier votre code de publication. Le meilleur est que le filtrage se fait côté AWS, pas dans votre application, ce qui améliore l’efficacité et réduit le trafic inutile.
Files d’attente de lettres mortes SNS (DLQ)
La livraison des messages peut parfois échouer même avec les systèmes les plus fiables.
Une file d’attente de lettres mortes (DLQ) est une file d’attente Amazon SQS spéciale où SNS peut envoyer des messages qui n’ont pas pu être livrés à leurs abonnés. Cela se produit généralement lorsqu’un abonné est indisponible ou renvoie une erreur. Au lieu de perdre ces messages échoués pour toujours, SNS les redirige vers la DLQ, où vous pouvez les analyser ultérieurement ou réessayer la livraison.
La configuration d’une DLQ implique deux étapes. Tout d’abord, créez une file d’attente SQS pour servir de DLQ :
Image 22 – Création d’une file d’attente SQS
Ensuite, configurez votre abonnement SNS pour utiliser cette file d’attente pour les messages non distribuables :
Image 23 – Ajout d’une stratégie de réacheminement à la file d’attente SQS
Cette configuration nécessite les permissions appropriées, car SNS doit pouvoir envoyer des messages à la file SQS. Dans la console AWS, vous pouvez configurer cela via une simple case à cocher, mais si vous utilisez CloudFormation ou d’autres outils d’infrastructure-as-code, vous devrez ajouter les autorisations IAM appropriées.
Avec une DLQ en place, vous pouvez surveiller les échecs de livraison et agir en conséquence. Par exemple, vous pourriez mettre en place une alarme qui se déclenche lorsque des messages commencent à apparaître dans votre DLQ, vous alertant ainsi de problèmes potentiels avec vos abonnés, mais cela dépasse le cadre de cette section.
Utilisation d’AWS Lambda avec SNS
Les fonctions Lambda ouvrent un monde de possibilités pour le traitement des messages SNS.
Lorsque vous abonnez une fonction Lambda à un sujet SNS, la fonction est déclenchée automatiquement chaque fois qu’un message est publié. L’approche sans serveur de Lambda signifie que vous n’avez pas besoin de gérer une infrastructure quelconque pour le traitement des messages, car elle s’adapte automatiquement en fonction du volume de messages.
Pour commencer, créez d’abord une fonction Lambda :
Image 24 – Création d’une fonction Lambda
Ensuite, remplissez-la avec un code similaire à ceci :
def lambda_handler(event, context): # Les messages SNS sont stockés dans le tableau 'Records' for record in event["Records"]: # Extraire le message message = record["Sns"]["Message"] subject = record["Sns"]["Subject"] timestamp = record["Sns"]["Timestamp"] # Traiter le message print(f"Received message: {message}") print(f"Subject: {subject}") print(f"Timestamp: {timestamp}") # Votre logique métier ici # Par exemple, stocker le message dans une base de données # ou déclencher un autre service AWS print("ALL DONE!") # Retourner le succès return {"statusCode": 200, "body": "Message processed successfully"}
Image 25 – Code de la fonction Lambda
Une fois votre code prêt, cliquez sur le bouton « Ajouter un déclencheur » pour connecter la fonction Lambda à SNS :
Image 26 – Connexion de SNS à Lambda
La fonction est maintenant connectée à la file d’attente, ce qui signifie que vous pouvez envoyer une notification de test :
Image 27 – Notification de test
Les fonctions Lambda vous permettent de surveiller les journaux, ce qui signifie que vous pouvez voir les dernières invocations de fonction – le résultat de l’envoi d’une notification :
Image 28 – Journaux de la fonction Lambda
Les fonctions Lambda peuvent faire pratiquement tout avec ces messages – les stocker dans une base de données, déclencher d’autres services AWS, envoyer des e-mails, ou même appeler des APIs externes. Cela fait de SNS et Lambda une combinaison puissante pour la construction d’architectures pilotées par des événements. Vous pouvez en savoir plus sur les fonctions Lambda dans le didacticiel Démarrer avec AWS Lambda.
Ensuite, vous apprendrez les bases de la surveillance et de l’enregistrement SNS.
Surveillance et enregistrement de l’activité SNS
Le suivi de votre activité sur les réseaux sociaux est essentiel pour maintenir un système de notification fiable.
Utilisation d’Amazon CloudWatch avec SNS
Amazon CloudWatch fournit une surveillance complète pour tous vos services AWS, y compris SNS. Lorsque vous configurez CloudWatch avec SNS, vous obtenez une visibilité sur des métriques opérationnelles importantes telles que les taux de livraison des messages, les échecs et les modèles d’utilisation de l’API.
Pour commencer la surveillance CloudWatch pour SNS, accédez à la console CloudWatch dans votre compte AWS. À partir de là, vous pouvez accéder aux métriques SNS préconfigurées collectées automatiquement par AWS.
Les métriques SNS les plus précieuses à surveiller comprennent :
- NombreDeMessagesPubliés: Suivre le nombre de messages publiés sur vos sujets.
- NombreDeNotificationsDélivrées: Affiche les livraisons de messages réussies aux abonnés.
- NombreDeNotificationsÉchouées: Met en évidence les tentatives de livraison échouées, ce qui pourrait indiquer des problèmes de configuration.
- PublishSize: Mesure la taille des messages publiés, vous aidant à rester dans les limites du service.
Image 29 – Tableau de bord CloudWatch par défaut pour SNS
La configuration des alarmes CloudWatch vous permet de répondre rapidement aux problèmes potentiels avant qu’ils n’affectent vos utilisateurs. Par exemple, vous pouvez créer une alarme qui se déclenche lorsque les échecs de livraison de messages dépassent un certain seuil :
- Dans la console CloudWatch, accédez à la section « Alarmes ».
- Cliquez sur « Créer une alarme » et sélectionnez la métrique SNS que vous souhaitez surveiller.
- Définissez votre seuil (par exemple, plus de 5 échecs de livraison en 5 minutes).
- Configurez les actions de notification, telles que l’envoi d’une alerte à une équipe d’opérations.
Si vous préférez les images aux instructions, commencez par créer une alarme pour une métrique d’intérêt, telle que NumberOfNotificationsFailed
. Configurez des seuils qui déclencheront l’alarme :
Image 30 – Création d’alarme
Et voilà – l’alarme est maintenant créée et active :
Image 31 – Création d’alarme (2)
Ces alarmes peuvent faire la différence entre traiter proactivement un problème et en être informé par des utilisateurs mécontents.
Examen des journaux SNS
AWS CloudTrail capture toutes les activités API dans votre compte AWS, y compris les actions effectuées dans le service SNS.
Chaque opération effectuée sur vos sujets SNS, que ce soit via la console, CLI ou SDK, génère une entrée dans les journaux CloudTrail. Ces journaux fournissent des informations précieuses pour l’analyse de sécurité, le suivi des modifications de ressources et l’audit de conformité.
Pour accéder aux journaux SNS dans CloudTrail :
- Ouvrez la console CloudTrail dans votre compte AWS (vous devrez probablement créer une nouvelle piste).
- Accédez à « Historique des événements » pour voir l’activité SNS récente.
- Filtrez les événements en sélectionnant « Source de l’événement » et en tapant « sns.amazonaws.com ».
Si les instructions textuelles ne suffisent pas, référez-vous aux images ci-dessous. Commencez par créer une nouvelle piste :
Image 32 – Création d’une nouvelle piste
Puis, sous « Historique des événements », filtrez les événements pour inclure uniquement ceux liés à SNS :
Image 33 – Filtrer les journaux
Les journaux sont automatiquement stockés dans un compartiment S3, ce qui signifie que cette approche offre un stockage permanent pour vos journaux et permet des capacités de requête plus avancées.
> Comment fonctionne le stockage sur AWS ?Consultez notre guide sur S3 et EFS.
Pour conclure, en combinant les métriques CloudWatch avec les journaux CloudTrail, vous créez un système de surveillance complet qui aide à garantir le bon fonctionnement de votre infrastructure SNS.
Meilleures pratiques pour l’utilisation d’AWS SNS
Vous connaissez maintenant les fonctionnalités de base et avancées d’AWS SNS. Il reste à discuter des meilleures pratiques pour la création de sujets et l’envoi de messages.
Sécurisation des sujets SNS
La sécurité devrait être une priorité absolue lors de la mise en place de votre infrastructure SNS. Sans contrôles adéquats, vos sujets pourraient être vulnérables à un accès non autorisé, ce qui représente un risque important pour la sécurité.
AWS Identity and Access Management (IAM) fournit les outils dont vous avez besoin pour sécuriser vos sujets SNS. Commencez par créer des stratégies qui suivent le principe du moindre privilège – accordez uniquement les autorisations spécifiques nécessaires à chaque utilisateur ou service. Par exemple, vous pourriez vouloir que certaines applications ne puissent que publier des messages tandis que d’autres n’ont besoin que de s’abonner à des sujets.
Voici un exemple de politique IAM qui restreint la publication à un sujet spécifique :
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "sns:Publish", "Resource": "sns-arn" } ] }
Vous pouvez également utiliser des politiques de sujet pour contrôler quels comptes AWS peuvent s’abonner à vos sujets. Cela est particulièrement important si vous partagez des données entre des entités organisationnelles distinctes.
N’oubliez pas d’auditer régulièrement les autorisations à l’aide d’AWS CloudTrail et de supprimer les accès qui ne sont plus nécessaires.
Gestion du volume des messages
Des volumes élevés de messages peuvent submerger les abonnés s’ils ne sont pas gérés correctement. C’est là qu’il est essentiel de combiner SNS avec d’autres services AWS.
Un modèle populaire est l’architecture « fanout », où vous publiez des messages sur un sujet SNS auquel plusieurs files SQS sont abonnées. Chaque file peut ensuite alimenter différents systèmes de traitement à leur propre rythme. Cela sépare vos éditeurs de vos consommateurs et fournit un tampon lors de pics de trafic.
Pour les besoins de traitement en temps réel, envisagez de souscrire des fonctions Lambda à vos sujets. Lambda s’adapte automatiquement à votre volume de messages, éliminant ainsi la nécessité de provisionner et de gérer des serveurs.
Réduction des coûts
Alors que SNS est rentable, les dépenses peuvent s’accumuler rapidement à mesure que le volume de messages augmente. Quelques choix stratégiques peuvent aider à maîtriser vos coûts.
Tout d’abord, soyez sélectif concernant vos protocoles d’abonnement. Les points de terminaison HTTP/HTTPS sont généralement l’option la plus rentable. Les notifications par e-mail, bien que pratiques, doivent être utilisées avec parcimonie car elles entraînent des coûts plus élevés par message.
Le filtrage des messages est un autre outil puissant pour économiser les coûts. En mettant en place des politiques de filtrage sur vos abonnements, vous vous assurez que les messages ne sont livrés qu’aux abonnés intéressés. Par exemple, si vous avez un sujet pour toutes les alertes système, vous voudrez peut-être que vos ingénieurs d’astreinte ne reçoivent que les alertes critiques pendant leur service, et non chaque notification :
# S'abonner avec une politique de filtrage response = sns.subscribe( TopicArn="sns-arn", Protocol="email", Endpoint="[email protected]", Attributes={"FilterPolicy": '{"severity": ["critical"]}'}, )
Enfin, passez régulièrement en revue votre utilisation des SNS dans l’AWS Cost Explorer et recherchez des opportunités pour regrouper les sujets ou supprimer les abonnements inutilisés. Les ressources inutilisées ou en double ajoutent non seulement des coûts inutiles mais compliquent également votre architecture.
En suivant ces bonnes pratiques, vous créerez une implémentation SNS sécurisée, évolutive et rentable – tout ce dont vous avez besoin pour disposer d’un service de notification fiable sans frais inattendus ni problèmes de sécurité.
Résumé d’AWS SNS
Si vous avez besoin de notifications en temps réel sur des applications distribuées, ne cherchez pas plus loin qu’AWS SNS. C’est facile à utiliser, s’intègre bien avec d’autres services AWS et s’adapte à l’infini pour répondre à vos besoins.
Le modèle de publication-abonnement dans SNS facilite la mise en place de systèmes de notification pouvant atteindre simultanément plusieurs canaux. De la création de sujets et de la gestion des abonnés à la mise en œuvre de fonctionnalités avancées telles que le filtrage des messages et les files d’attente des messages non distribués, vous avez désormais les connaissances nécessaires pour construire une infrastructure de notification robuste.
Vous avez également appris les aspects critiques du suivi, de la sécurité et de la gestion des coûts qui garantissent que votre implémentation SNS reste fiable et efficace dans des environnements de production.
Alors que les applications continuent d’adopter des architectures orientées événements, des services tels que SNS deviennent de plus en plus précieux. Que vous construisiez un système d’alerte simple ou des microservices complexes, les modèles de ce tutoriel fournissent une base pour une communication efficace entre les composants de votre système.
Pour en savoir plus sur AWS, suivez ces cours proposés par DataCamp :
Vous pouvez même utiliser DataCamp pour vous préparer aux examens de certification AWS – Praticien Cloud AWS (CLF-C02).