Accéder au contenu principal

AWS SNS : Le guide complet des notifications en temps réel

Ce tutoriel vous guide depuis la création de votre premier sujet jusqu'à la mise en œuvre de fonctionnalités avancées telles que le filtrage des messages et les files d'attente de lettres mortes, avec des instructions pas à pas et des exemples de code pratiques.
Actualisé 18 mars 2025  · 15 min de lecture

La gestion des notifications en temps réel dans vos applications peut constituer un défi de taille - du moins si vous ne disposez pas du service de messagerie adéquat.

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 sans serveur. Les SRS vous permettent d'envoyer des messages à un grand nombre d'abonnés par le biais de plusieurs protocoles de transport, tels que HTTP/S, le courrier électronique, les SMS et les notifications mobiles push. AWS SNS prend en charge toutes les tâches lourdes liées à la livraison des messages, y compris la livraison fiable, les nouvelles tentatives et les fonctionnalités de backoff, ce qui vous permet de vous concentrer sur le développement des fonctionnalités de votre application principale.

AWS SNS suit un modèle depublication et d'abonnement qui est à la fois facile à mettre à l'échelle et à comprendre. Un seul message publié peut être distribué à plusieurs points d'extrémité simultanément, ce qui fait de SNS un outil idéal pour les architectures axées sur les événements.

Dans ce tutoriel, je vais vous aider à configurer et à utiliser AWS SNS pour envoyer des notifications sur différents canaux.

Qu'est-ce que AWS SNS ?

Amazon Simple Notification Service (SNS) est le service de messagerie pub/sub géré par AWS qui vous permet de découpler les microservices, les systèmes distribués et les applications sans serveur.

Les SRS fonctionnent selon un modèle simple de publication et d'abonnement, dans lequel les éditeurs envoient des messages aux sujets et les abonnés reçoivent ces messages. Considérez un sujet de SRS comme un canal de communication - vous publiez des messages sur ce canal et toutes les personnes qui y sont abonnées en sont immédiatement informées. L'intérêt de ce système est que les éditeurs n'ont pas besoin de savoir qui reçoit leurs messages et que les abonnés n'ont pas besoin de savoir qui les envoie.

Vous vous demandez peut-être en quoi cela diffère des autres services de messagerie AWS tels que Simple Queue Service (SQS). En d'autres termes, SQS utilise un modèle basé sur une file 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. Le SNS est donc parfait pour les scénarios dans lesquels vous devez informer de nombreux systèmes d'un événement qui vient de se produire. Vous pouvez en savoir plus sur les différencesnces dans l'article de blog SQS vs SNS. 

SNS prend en charge plusieurs protocoles de livraison, ce qui vous permet de choisir la manière dont vos abonnés reçoivent les notifications.

Principales caractéristiques d'AWS SNS

SNS est doté de nombreuses fonctionnalités qui en font le seul service de notification dont vous aurez besoin. J'en citerai quelques-uns :

  • Architecture en éventail : SNS peut envoyer des messages à des milliers de points d'extrémité simultanément, ce qui vous permet de diffuser des mises à jour dans l'ensemble de votre écosystème d'applications avec un seul appel d'API.
  • Protocoles de transport multiples : Vous n'êtes pas limité à une seule façon d'envoyer des messages. SNS prend en charge les points d'extrémité HTTP/HTTPS, les courriels, les SMS, les notifications push mobiles et même les files d'attente SQS en tant que points d'extrémité d'abonnement.
  • Filtrage des messages : Tous les abonnés n'ont pas besoin de tous les messages. Avec le 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 les frais généraux de traitement.
  • Archivage des messages : Si vous avez besoin de garder une trace de toutes les notifications envoyées, vous serez heureux d'apprendre que SNS s'intègre à Amazon S3 pour l'archivage des messages et à Amazon Redshift pour l'analyse.
  • Suivi de l'état de la livraison : Vous pouvez suivre l'état de livraison de vos notifications pour vous assurer qu'elles arrivent à destination. Cette fonction est particulièrement utile pour les SMS et les notifications push mobiles dont la livraison n'est pas garantie.
  • Chiffre d'affaires : Vos données sensibles restent protégées grâce à la prise en charge par SNS du cryptage côté serveur, qui garantit la confidentialité de vos messages pendant la transmission.

Mais l'aspect le plus intéressant des SRS est sans aucun doute leur évolutivité. 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'adapte en conséquence sans nécessiter d'intervention manuelle.

Je vous montrerai ensuite comment configurer les SRS.

Configuration de AWS SNS

Avant d'envoyer votre première notification avec SNS, vous devrez suivre quelques étapes de configuration pour que tout soit en place.

Étape 1 : Création d'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 "Create an AWS Account" (Créer un compte AWS) dans le coin supérieur droit (). Vous devrez fournir votre adresse électronique, créer un mot de passe et saisir quelques informations de base sur votre compte. AWS vous demandera également les détails de votre carte de crédit - ne vous inquiétez pas, SNS a un niveau de gratuité assez généreux, et vous ne serez pas facturé à moins que vous ne dépassiez ces limites.

Une fois votre compte créé, vous êtes prêt à continuer. Cependant, je recommande fortement de créer unutilisateur IAM dédié à au lieu d'utiliser votre compte root. Cela n'entre pas dans le cadre de l'article d'aujourd'hui, mais vous pouvez consulter les instructions officielles à l'adressepour obtenir desconseils détaillés.

Étape 2 : Configurer 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 informations d'identification et recherchez SNS. Vous pouvez le faire de trois manières :

  • 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 dans la catégorie "Intégration d'applications".
  • Accédez directement à la console SNS

Quel que soit le moyen utilisé, c'est l'écran que vous devez voir :

Image 1 - Page du service AWS SNS

Image 1 - Page du service AWS SNS

Une fois que vous êtes dans le tableau de bord SNS, vous verrez un menu sur le côté gauche avec des options comme "Sujets", "Abonnements" et "Mobile". Le tableau de bord vous donne une vue d'ensemble de vos ressources SNS et de vos activités récentes.

Il sera assez vide pour un nouveau compte - c'est normal. Créons maintenant notre premier sujet SNS.

Étape 3 : Créer un sujet SNS

Un sujet de SRS est essentiellement un canal de communication sur lequel les éditeurs envoient des messages et les abonnés écoutent.

Pensez-y comme à une station de radio - la station émet sur une fréquence spécifique (le thème), et toute personne branchée sur cette fréquence reçoit l'émission. En termes de SNS, votre application publie des messages dans un sujet et tous les points d'extrémité abonnés à ce sujet reçoivent ces messages.

Voici comment créer votre premier sujet SNS :

  1. Sur l'écran que vous avez vu dans Image 1entrez un nom de sujet.
  2. Cliquez sur le bouton "Étape suivante".
  3. Sélectionnez "Standard" pour le type (les rubriques FIFO ont des cas d'utilisation différents que nous aborderons plus loin).
  4. (Facultatif) Entrez un nom d'affichage. Cette information sera incluse dans les messages envoyés aux abonnés par SMS ou par courrier électronique.
  5. Laissez tous les autres paramètres par défaut pour l'instant.
  6. Cliquez sur "Créer un sujet".

Si vous préférez les images au texte, voici à quoi devrait ressembler votre écran :

Image 2 - Création d'un sujet sur les SRS

Image 2 - Création d'un sujet sur les SRS

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 sujets sur les SRS (2)

Image 3 - Création de sujets sur les SRS (2)

Et c'est tout ! Votre sujet SNS est maintenant prêt à être utilisé. Vous verrez des détails comme l'ARN du sujet (Amazon Resource Name), qui identifie votre sujet de manière unique :

Image 4 - Détails du sujet créé

Image 4 - Détails du sujet créé

Votre nouveau sujet est prêt à recevoir des abonnements, mais il n'en a pas encore, ce qui signifie que les messages que vous publiez n'iront nulle part. Ne vous inquiétez pas, vous réglerez ce problème 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 de SRS est comme une station de radio. Il n'a actuellement pas d'auditeurs, mais cela changera lorsque vous ajouterez des abonnés pour recevoir vos messages.

Qu'est-ce qu'un abonné SNS ?

Un abonné est un point d'extrémité qui reçoit des notifications de votre sujet SNS lorsqu'un message est publié.

Prenons l'exemple d'une lettre d'information. Chaque fois que vous publiez une nouvelle édition (message), elle est envoyée à tous les membres de votre liste de diffusion. SNS rend ce processus automatique et évolutif, et gère pour vous toute la logistique de livraison.

AWS prend en charge une grande variété de types d'abonnés, ce qui vous offre une grande souplesse dans le traitement de vos messages. J'en énumère les principaux types ci-dessous :

  • Adresses électroniques : Envoyez des notifications en texte clair directement dans les boîtes aux lettres électroniques.
  • Numéros de SMS : Envoyez des notifications par SMS aux téléphones portables.
  • Files d'attente SQS : Acheminez les messages vers d'autres services AWS pour un traitement ultérieur.
  • Fonctions lambda : Déclenchez l'exécution de code sans serveur en réponse à des notifications.
  • Points d'extrémité HTTP/HTTPS : Envoyez des messages à des applications web ou à des API.
  • Poussée mobile : Envoyez des notifications directement aux applications mobiles.

Chaque type d'abonné a ses propres avantages et cas d'utilisation. Par exemple, les courriels et les SMS sont parfaits pour les destinataires humains, tandis que les files d'attente SQS et les fonctions Lambda sont meilleures pour la communication entre systèmes.

Étape 1 : Ajouter un abonné

Maintenant que vous savez ce que sont les abonnés, ajoutons-en un à votre sujet. Pour ce tutoriel, j'utiliserai le courrier électronique car c'est le plus simple à mettre en place.

Voici comment ajouter un abonné électronique à votre sujet SNS :

  1. A partir de la page de détail de votre thème (celle qui est illustrée dans l'image Image 4), cliquez sur le bouton "Créer un abonnement".
  2. Dans le menu déroulant "Protocole", sélectionnez "Email".
  3. Dans le champ "Endpoint", saisissez l'adresse électronique qui doit recevoir les notifications.
  4. Laissez tous les autres paramètres à leur valeur par défaut.
  5. Cliquez sur "Créer un abonnement".

Votre écran devrait ressembler à ceci :

Image 5 - Création d'un abonnement électronique

Image 5 - Création d'un abonnement électronique

Une fois que vous avez cliqué sur "Créer un abonnement", AWS ajoute l'abonnement à votre thème, mais il reste dans un état "en attente de confirmation" :

Image 6 - État de confirmation en attente

Image 6 - État de confirmation en attente

Il s'agit d'une fonction de sécurité importante, car AWS veut s'assurer que le propriétaire de l'adresse électronique 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 courriel, AWS envoie automatiquement un courriel de confirmation à l'adresse que vous avez indiquée. Le courriel 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 délivré à ce point de terminaison.

Voici à quoi ressemble un courriel de confirmation typique :

Image 7 - Courriel de confirmation SNS

Image 7 - Courriel de confirmation SNS

Le destinataire doit simplement cliquer sur le lien "Confirmer l'abonnement" dans l'e-mail. Ils seront dirigés vers une page confirmant que leur abonnement est désormais actif :

Image 8 - Message de confirmation de l'abonnement

Image 8 - Message de confirmation de l'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 comme les fonctions Lambda et les files d'attente SQS peuvent être configurées pour une confirmation automatique.

Vous pouvez vérifier l'état de vos abonnements en cliquant sur la section "Abonnements" dans la barre latérale gauche de la console SNS. Les abonnements confirmés afficheront le statut "Confirmé", tandis que les abonnements en attente de confirmation afficheront le statut "En attente de confirmation".

Image 9 - Statut de l'abonnement

Image 9 - Statut de l'abonnement

Une fois votre inscription confirmée, vous pouvez commencer à envoyer des messages ! Tout message publié sur le thème sera transmis à tous les abonnés confirmés en utilisant le protocole qu'ils ont spécifié.

C'est tout ce qu'il y a à faire pour créer des abonnements SNS. Dans la section suivante, vous apprendrez à publier des messages dans votre rubrique et à vérifier que vos abonnés les reçoivent correctement.

Publication de messages sur des 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 : Publier un message

Une bonne façon de commencer est de publier un message via la console AWS.

Pour envoyer votre premier message, accédez à la page détaillée de votre sujet et cliquez sur le bouton "Publier un message" en haut à droite (voir image 4). Cela ouvrira le formulaire de publication de message dans lequel vous pourrez rédiger votre notification. Vous verrez des champs pour l'objet et le corps du message. L'objet est facultatif mais utile pour les notifications par courrier électronique car il devient la ligne d'objet du courrier électronique.

Pour un simple message de test, vous pouvez saisir quelque chose comme ceci :

Image 10 - Contenu du premier message

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" au bas du formulaire :

Image 11 - Publication d'un message via la console

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 mis en place un abonnement électronique, vous devriez recevoir le message de test dans votre boîte de réception dans les secondes qui suivent :

Image 12 - Message reçu par courrier électronique

Image 12 - Message reçu par courrier électronique

C'est simple, n'est-ce pas ? Voyons maintenant comment le personnaliser davantage.

Étape 2 : Envoi de notifications par SMS et par courrier électronique

Les SRS vous permettent de personnaliser la façon dont vos messages apparaissent aux différents types d'abonnés.

Lors de la publication d'un message, vous remarquerez l'option "Structure du message". Par défaut, il est défini sur "Charge utile identique pour tous les protocoles de livraison", ce qui signifie que tous les abonnés reçoivent exactement le même message. Toutefois, vous pouvez également sélectionner "Charge utile personnalisée pour chaque protocole de livraison", ce qui vous permet d'adapter le format du message à chaque type d'abonné.

Pour les notifications par courrier électronique, vous avez deux options de format :

  • Email-JSON : Envoie la charge utile JSON brute au point de terminaison du courrier électronique.
  • Courriel : Envoie un courrier électronique formaté avec l'objet et le corps du message.

Image 13 - Personnalisation de la charge utile

Image 13 - Personnalisation de la charge utile

Pour les notifications par SMS, n'oubliez pas que le nombre de caractères est limité à 160. Les SRS transmettent des messages plus longs, mais ils sont traités comme des messages multiples. Vous pouvez également définir le type de message SMS comme étant "promotionnel" ou "transactionnel", ce qui affecte l'optimisation de la livraison :

Page d'options SMS dans AWS SNS

Image 14 - Options SMS

Vous savez maintenant comment envoyer et personnaliser des notifications par courrier électronique via la console AWS. Vous apprendrez ensuite à faire de même avec l'interface de programmation et Python.

Étape 3 : Utiliser le CLI ou le SDK AWS pour publier des messages

La console est idéale pour les tests manuels, mais dans le monde réel, vous voudrez publier des messages par programme.

L'interface de ligne de commande AWS (CLI) permet d'envoyer facilement des messages SNS à partir de votre terminal ou de scripts d'automatisation. 

Si vous avez installé et configuré le CLI AWS, exécutez cette commande pour publier un message via le 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

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 messages via AWS CLI (2)

Image 16 - Publication de messages via AWS CLI (2)

Pour les applications plus avancées, les SDK AWS offrent un accès programmatique au SNS dans de nombreux langages de programmation. 

Voici un exemple simple de publication d'un message en utilisant Python avec la bibliothèque boto3:

import boto3

# Initialize the SNS client
sns_client = boto3.client("sns", region_name="eu-central-1")

# Topic ARN (Amazon Resource Name)
topic_arn = "sns-arn"

# Publish a simple message
response = sns_client.publish(
    TopicArn=topic_arn, Message="Hello from Python!", Subject="Python Notification"
)

# Check if the message was sent successfully
if "MessageId" in response:
    print(f"Message published successfully! Message ID: {response['MessageId']}")

Image 17 - Publication de messages via le SDK Python

Image 17 - Publication de messages via le SDK Python

Une fois de plus, le message est livré instantanément dans ma boîte de réception :

Image 18 - Publication de messages via le SDK Python (2)

Image 18 - Publication de messages via le SDK Python (2)

C'est tout ce qu'il y a à faire pour publier des messages sur les SRS ! Vous disposez désormais de plusieurs moyens d'envoyer des notifications, depuis la simple interface de la console jusqu'à la publication programmatique avec le CLI ou le SDK AWS. 

> Nouveau sur AWS Boto in Python ? Inscrivez-vous à notre cours pour devenir compétent en un rien de temps.

Dans la section suivante, nous explorerons certaines fonctions avancées des SRS qui permettront à vos notifications d'atteindre un niveau supérieur.

Fonctionnalités avancées des SRS

Jusqu'à présent, vous avez appris les bases des SRS. Dans cette section, vous verrez quelques fonctions avancées qui rendent les SRS vraiment puissants.

Filtrage des messages SNS

L'envoi de la même notification à tous les abonnés a souvent pour conséquence que les points d'extrémité reçoivent 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 de leurs attributs. Pensez-y comme si vous mettiez en place des filtres de courrier électronique : vous créez des règles qui déterminent quels messages sont acceptés. Pour SNS, ces règles sont appelées filter policies.

Pour commencer, vous pouvez mettre en place des politiques de filtrage sur vos abonnements afin qu'ils ne reçoivent que des messages pertinents :

Image 19 - Politiques de filtrage des notifications

Image 19 - Politiques de filtrage des notifications

Dans cet exemple, l'abonné ne recevra des notifications que pour les messages dont l'attribut order_value a une valeur numérique égale ou supérieure à 1500.

Maintenant, pour envoyer une telle notification, vous pouvez utiliser le code Python suivant :

import boto3

# Initialize the SNS client
sns_client = boto3.client("sns", region_name="eu-central-1")

# Topic ARN (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 par Python

Image 20 - Envoi d'une notification par Python

Vous ne recevrez la notification que si la valeur de order_value est égale ou supérieure à 1500, vous recevrez la notification :

Image 21 - Contenu de 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 plus intéressant est que le filtrage s'effectue du côté d'AWS, et non dans votre application, ce qui améliore l'efficacité et réduit le trafic inutile.

Files d'attente de lettres mortes (DLQ) du SNS

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 spéciale d'Amazon SQS dans laquelle les SNS peuvent envoyer des messages qui n'ont pas pu être délivrés à leurs abonnés. Cela se produit généralement lorsqu'un abonné n'est pas disponible ou renvoie une erreur. Au lieu de perdre ces messages pour toujours, SNS les redirige vers le DLQ, où vous pouvez les analyser plus tard ou réessayer la livraison.

La mise en place d'un DLQ se fait en deux étapes. Tout d'abord, créez une file d'attente SQS qui servira de DLQ :

Image 22 - Création d'une file d'attente SQS

Image 22 - Création d'une file d'attente SQS

Configurez ensuite votre abonnement SNS pour qu'il utilise cette file d'attente pour les messages non distribuables :

Image 23 - Ajout de la politique redrive à la file d'attente SQS

Image 23 - Ajout de la politique redrive à la file d'attente SQS

Cette configuration nécessite les autorisations adéquates, car SNS doit pouvoir envoyer des messages à la file d'attente SQS. Dans la console AWS, vous pouvez configurer cette fonction à l'aide d'une simple case à cocher, mais si vous utilisez CloudFormation ou d'autres outils d'infrastructure en tant que code, vous devrez ajouter les autorisations IAM appropriées.

Avec un DLQ en place, vous pouvez surveiller les échecs de livraison et prendre les mesures qui s'imposent. Par exemple, vous pouvez mettre en place une alarme qui se déclenche lorsque des messages commencent à apparaître dans votre DLQ, vous avertissant ainsi de problèmes potentiels avec vos abonnés, mais cela n'entre pas dans le cadre de cette section.

Utiliser 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 pour le traitement des messages, car elle évolue automatiquement en fonction du volume des messages.

Pour commencer, créez une fonction Lambda :

Image 24 - Création d'une fonction Lambda

Image 24 - Création d'une fonction Lambda

Ensuite, remplissez-le avec un code similaire à celui-ci :

def lambda_handler(event, context):
    # SNS messages come in the 'Records' array
    for record in event["Records"]:
        # Extract the message
        message = record["Sns"]["Message"]
        subject = record["Sns"]["Subject"]
        timestamp = record["Sns"]["Timestamp"]

        # Process the message
        print(f"Received message: {message}")
        print(f"Subject: {subject}")
        print(f"Timestamp: {timestamp}")

        # Your business logic here
        # For example, store the message in a database
        # or trigger another AWS service
        print("ALL DONE!")

    # Return success
    return {"statusCode": 200, "body": "Message processed successfully"}

Image 25 - Code de la fonction Lambda

Image 25 - Code de la fonction Lambda

Une fois que votre code est prêt, cliquez sur le bouton "Ajouter un déclencheur" pour connecter la fonction Lambda à SNS :

Image 26 - Connexion de SNS à Lambda

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

Image 27 - Notification de test

Les fonctions Lambda vous permettent de surveiller les journaux, ce qui signifie que vous pouvez voir les invocations récentes de la fonction - le résultat de l'envoi d'une notification :

Image 28 - Journaux de la fonction Lambda

Image 28 - Journaux de la fonction Lambda

Les fonctions Lambda peuvent faire pratiquement n'importe quoi avec ces messages : les stocker dans une base de données, déclencher d'autres services AWS, envoyer des courriels ou même appeler des API externes. Cela fait de SNS et Lambda une combinaison puissante pour construire des architectures pilotées par les événements. Vous pouvez en savoir plus sur les fonctions Lambda dans le tutoriel Getting Started with AWS Lambda

Ensuite, vous apprendrez les bases de la surveillance et de la journalisation du SNS.

Surveillance et enregistrement de l'activité des SRS

Le cursus de l'activité de votre SRS est essentiel pour maintenir un système de notification fiable.

Utiliser Amazon CloudWatch avec SNS

Amazon CloudWatch offre une surveillance complète de tous vos services AWS, y compris SNS. Lorsque vous configurez CloudWatch avec SNS, vous bénéficiez d'une visibilité sur d'importantes mesures opérationnelles telles que les taux de livraison des messages, les échecs et les modèles d'utilisation de l'API.

Pour commencer à utiliser la surveillance CloudWatch pour SNS, accédez à la console CloudWatch dans votre compte AWS. De là, vous pouvez accéder aux mesures SNS préconfigurées qu'AWS collecte automatiquement pour vous.

Les indicateurs les plus utiles à surveiller sont les suivants :

  • Nombre de messages publiés : Couvre le nombre de messages publiés dans vos rubriques.
  • Nombre de notifications délivrées : Indique les messages qui ont été livrés avec succès aux abonnés.
  • Nombre de notifications échouées : Met en évidence les tentatives de livraison qui ont échoué, ce qui peut indiquer des problèmes de configuration.
  • PublishSize : Mesure la taille des messages publiés, ce qui vous aide à rester dans les limites du service.

Image 29 - Tableau de bord par défaut de Cloudwatch pour SNS

Image 29 - Tableau de bord par défaut de Cloudwatch pour SNS

La configuration des alarmes CloudWatch vous permet de réagir 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 distribution des messages dépassent un certain seuil :

  1. Dans la console CloudWatch, accédez à la section "Alarmes".
  2. Cliquez sur "Créer une alarme" et sélectionnez la mesure SNS que vous souhaitez surveiller.
  3. Définissez votre seuil (par exemple, plus de 5 livraisons échouées en 5 minutes).
  4. Configurez les actions de notification, comme l'envoi d'une alerte à une équipe opérationnelle.

Si vous préférez les images aux instructions, commencez par créer une alarme pour une mesure d'intérêt, telle que NumberOfNotificationsFailed. Définissez les seuils qui déclencheront l'alarme :

Image 30 - Création d'une alarme

Image 30 - Création d'une alarme

Et voilà, l'alarme est maintenant créée et active :

Image 31 - Création d'une alarme (2)

Image 31 - Création d'une alarme (2)

Ces alarmes peuvent faire la différence entre le traitement proactif d'un problème et le fait de l'apprendre par des utilisateurs mécontents.

Examen des journaux SNS

AWS CloudTrail enregistre toutes les activités API de votre compte AWS, y compris les actions effectuées dans le cadre du service SNS.

Chaque opération effectuée sur vos sujets SNS, que ce soit via la console, le CLI ou le SDK, génère une entrée dans les journaux de CloudTrail. Ces journaux fournissent des informations précieuses pour l'analyse de la sécurité, le cursus de modification des ressources et l'audit de conformité.

Pour accéder aux journaux SNS dans CloudTrail :

  1. Ouvrez la console CloudTrail dans votre compte AWS (vous devrez probablement créer une nouvelle piste).
  2. Naviguez vers "Historique des événements" pour voir l'activité récente du SNS.
  3. Filtrez les événements en sélectionnant "Event source" et en tapant "sns.amazonaws.com".

Une fois encore, si les instructions textuelles ne suffisent pas, reportez-vous aux images ci-dessous. Commencez par créer un nouveau sentier :

Image 32 - Création d'un nouveau sentier

Image 32 - Création d'un nouveau sentier

Ensuite, sous "Historique des événements", filtrez les événements pour n'inclure que ceux concernant le SNS :

Image 33 - Filtrage des journaux

Image 33 - Filtrage des journaux

Les journaux sont automatiquement stockés dans un seau S3, ce qui signifie que cette approche fournit un stockage permanent pour vos journaux et permet des capacités d'interrogation plus avancées.

> Comment fonctionne le stockage sur AWS? Lisez notre guide sur S3 et EFS.

En conclusion, en combinant les mesures de CloudWatch avec les journaux de CloudTrail, vous créez un système de surveillance complet qui aide à garantir le fonctionnement fiable 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 en matière de création de sujets et d'envoi de messages.

Sécuriser les thèmes du SNS

La sécurité doit être une priorité absolue lors de la mise en place de votre infrastructure SNS. En l'absence de contrôles appropriés, vos thèmes pourraient être vulnérables à un accès non autorisé, ce qui représente un risque considérable 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 politiques qui suivent le principe du moindre privilège - n'accordez que les autorisations spécifiques nécessaires à chaque utilisateur ou service. Par exemple, vous pouvez souhaiter que certaines applications publient uniquement des messages, tandis que d'autres n'ont besoin que de s'abonner à des sujets.

Voici un exemple de politique IAM qui limite la publication à un sujet spécifique :

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "sns:Publish",
            "Resource": "sns-arn"
        }
    ]
}

Vous pouvez également utiliser les politiques de thèmes pour contrôler les comptes AWS qui peuvent s'abonner à vos thèmes. Ceci est particulièrement important si vous partagez des données au-delà des frontières de l'organisation.

N'oubliez pas de vérifier 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

Un volume important de messages peut submerger les abonnés s'il n'est pas géré correctement. C'est là que la combinaison de SNS avec d'autres services AWS devient essentielle.

L'un des modèles les plus répandus est l'architecture "fanout", dans laquelle vous publiez des messages sur un sujet SNS auquel plusieurs files d'attente SQS sont abonnées. Chaque file d'attente peut ensuite alimenter différents systèmes de traitement à leur propre rythme. Cela permet de dissocier vos éditeurs de vos consommateurs et de créer un tampon en cas de pics de trafic.

Pour les besoins de traitement en temps réel, envisagez de souscrire des fonctions Lambda à vos sujets. Lambda évolue automatiquement en fonction de votre volume de messages, ce qui élimine la nécessité de provisionner et de gérer des serveurs.

Réduire les coûts

Bien que les SRS soient rentables, les dépenses peuvent s'accumuler rapidement à mesure que le volume de vos messages augmente. Quelques choix stratégiques peuvent vous aider à maîtriser vos coûts.

Tout d'abord, soyez sélectif dans vos protocoles d'abonnement. Les points d'extrémité HTTP/HTTPS sont généralement l'option la plus rentable. Les notifications par courrier électronique, bien que pratiques, doivent être utilisées judicieusement car elles entraînent des coûts plus élevés par message.

Le filtrage des messages est un autre outil puissant de réduction des coûts. En appliquant des politiques de filtrage à vos abonnements, vous vous assurez que les messages ne sont délivrés qu'aux abonnés intéressés. Par exemple, si vous avez un sujet pour toutes les alertes du système, vous voudrez peut-être que vos ingénieurs de garde ne reçoivent que les alertes critiques pendant leur quart de travail, et non toutes les notifications :

# Subscribe with a filter policy
response = sns.subscribe(
    TopicArn="sns-arn",
    Protocol="email",
    Endpoint="oncall@example.com",
    Attributes={"FilterPolicy": '{"severity": ["critical"]}'},
)

Enfin, examinez régulièrement votre utilisation des SRS dans l'explorateur de coûts AWS et cherchez des possibilités de consolider les sujets ou de supprimer les abonnements inutilisés. Les ressources inutilisées ou en double n'ajoutent pas seulement des coûts inutiles, mais compliquent également votre architecture.

En suivant ces meilleures 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 dépenses imprévues ni problèmes de sécurité.

Résumé de AWS SNS

Si vous avez besoin d'une notification en temps réel pour des applications distribuées, ne cherchez pas plus loin que AWS SNS. Il 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 et d'abonnement du SNS facilite la mise en œuvre de systèmes de notification capables d'atteindre plusieurs canaux simultanément. De la création de sujets et de la gestion des abonnés à la mise en œuvre de fonctions avancées telles que le filtrage des messages et les files d'attente pour les lettres mortes, vous disposez désormais des connaissances nécessaires à la mise en place d'une infrastructure de notification solide.

Vous avez également découvert les aspects essentiels de la surveillance, de la sécurité et de la gestion des coûts qui garantissent la fiabilité et l'efficacité de votre implémentation SNS dans les environnements de production.

Comme les applications continuent d'adopter des architectures basées sur les événements, les services tels que le SNS deviennent de plus en plus précieux. Que vous construisiez un simple système d'alerte 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 formations proposées par DataCamp :

Vous pouvez même utiliser DataCamp pour vous préparer aux examens de certification AWS - AWS Cloud Practitioner (CLF-C02).

FAQ

Qu'est-ce que AWS SNS et en quoi diffère-t-il de SQS ?

AWS SNS (Simple Notification Service) est un service de messagerie entièrement géré qui vous permet d'envoyer des notifications d'éditeurs à plusieurs abonnés. Contrairement à SQS (Simple Queue Service), qui suit un modèle basé sur les files d'attente où chaque message est traité par un seul consommateur, SNS utilise un modèle de publication et d'abonnement qui diffuse un message unique à de nombreux destinataires simultanément. Cette différence fondamentale rend SNS idéal pour les notifications d'événements et SQS mieux adapté au traitement des tâches.

Quels types de terminaux peuvent s'abonner à des sujets SNS ?

AWS SNS prend en charge un large éventail de points de terminaison d'abonnés, notamment les adresses électroniques, les numéros de téléphone SMS, les files d'attente SQS, les fonctions Lambda, les points de terminaison HTTP/HTTPS et les notifications push mobiles. Cette variété vous donne de la flexibilité dans la façon dont vos notifications sont délivrées et traitées, vous permettant d'atteindre à la fois des destinataires humains (par email ou SMS) et d'autres systèmes (via Lambda, SQS, ou des points de terminaison HTTP) avec le même message publié.

Comment sécuriser mes sujets SNS ?

La sécurisation des sujets SNS implique la mise en œuvre de contrôles d'accès appropriés par le biais de politiques IAM qui suivent le principe du moindre privilège. Vous pouvez limiter les personnes autorisées à publier dans les rubriques et à gérer les abonnements, et utiliser les stratégies de rubrique pour contrôler les comptes AWS autorisés à s'abonner. Pour les données sensibles, AWS SNS prend en charge le cryptage côté serveur afin de protéger le contenu des messages pendant la transmission. Des audits de sécurité réguliers utilisant les journaux de CloudTrail permettent d'identifier toute tentative d'accès non autorisé ou toute vulnérabilité potentielle dans la mise en œuvre de votre SNS.

Comment puis-je mettre en œuvre le filtrage des messages dans les SRS ?

Le filtrage des messages dans les SRS permet aux abonnés de ne recevoir que les notifications qui les concernent. Pour ce faire, les abonnés définissent des politiques de filtrage basées sur les attributs des messages. Lorsque vous publiez des messages avec des attributs spécifiques (comme la valeur de la commande, la région ou le niveau de priorité), SNS compare ces attributs avec la politique de filtrage de chaque abonné et ne délivre le message que s'il y a une correspondance. Le filtrage s'effectue du côté d'AWS plutôt que dans votre application, ce qui améliore l'efficacité et réduit le trafic de messages inutiles.

Comment les files d'attente de lettres mortes (DLQ) fonctionnent-elles avec le SNS ?

Les files d'attente pour les lettres mortes servent de filet de sécurité en cas d'échec de la livraison des messages dans les SRS. Lorsqu'un message ne peut être délivré à un abonné (généralement parce que l'abonné n'est pas disponible ou renvoie une erreur), SNS peut le rediriger vers une file d'attente SQS désignée au lieu de le perdre complètement. Ce système DLQ vous permet d'enregistrer, d'analyser et éventuellement de réessayer les livraisons qui n'ont pas abouti. Il est particulièrement utile pour les notifications critiques où la perte d'un message peut avoir des répercussions importantes sur l'activité de l'entreprise, car il offre une visibilité sur les problèmes de livraison qui pourraient autrement passer inaperçus.


Dario Radečić's photo
Author
Dario Radečić
LinkedIn
Scientifique de données senior basé en Croatie. Rédacteur technique de premier plan avec plus de 700 articles publiés, générant plus de 10 millions de vues. Auteur du livre Machine Learning Automation with TPOT.
Sujets

Apprenez-en plus sur AWS grâce à ces cours !

Certification disponible

Cours

Concepts AWS

2 hr
22.8K
Découvrez l'univers d'Amazon Web Services (AWS) et comprenez pourquoi il est à la pointe du cloud computing.
Afficher les détailsRight Arrow
Commencer le cours
Voir plusRight Arrow