Utiliser Amazon Simple Notification Service avec Python

Synopsis

Il est courant de vouloir vérifier constamment quelque chose et d'envoyer un e-mail lorsque certaines conditions se produisent. Cependant, la méthode d'envoi de courrier directement depuis une instance EC2 sur AWS est restreinte par défaut et peut nécessiter une procédure d'annulation.

Si vous souhaitez annuler, cliquez ici Formulaire de libération des restrictions d'envoi de courrier EC2

Amazon Simple Notification Service est extrêmement facile si vous envoyez simplement un e-mail à une destination de notification prédéfinie.

Émission d'ARN à partir de l'écran d'Amazon SNS

  1. Passez à Amazon SNS à partir de la liste de services d'AWS Management Console
  2. Recherchez et cliquez sur le menu déroulant Créer et ajouter dans la barre de navigation de gauche.
  3. Cliquez sur Créer un nouveau sujet
  4. Entrez le nom de la rubrique sur l'écran qui apparaît. Le nom de la rubrique fait en fait partie de l'ARN, entrez-le donc avec 256 caractères (les symboles ne peuvent être que des traits d'union et des traits de soulignement). Le nom d'affichage est pour SMS, vous pouvez donc continuer sans le saisir.
  5. Cliquez sur Crate Topic pour créer
  6. Une fois terminé, l'écran affichera Topic ARN, vérifiez donc la valeur comme "arn: aws: sns: ap-Nord-Est-1: 111111111111: testtopicname" sur le côté droit. ap-Northwest-1 doit contenir votre ID de compte AWS car le numéro à 12 chiffres que la région que vous avez créée est 111111111111. C'est important alors faites une note quelque part
  7. Cliquez sur le bouton Créer un abonnement en bas du même écran
  8. Pour Protocole, sélectionnez E-mail dans le menu déroulant, pour Endpoint, entrez l'adresse e-mail que vous souhaitez recevoir, puis cliquez sur le bouton S'abonner en bas à droite.
  9. Cliquez sur le bouton de fermeture pour revenir aux informations d'origine. À l'écran, l'élément appelé ID d'abonnement doit être en attente de confirmation
  10. Le premier e-mail de confirmation de réception sera envoyé à l'adresse e-mail enregistrée. Assurez-vous de cliquer sur le lien Confirmation dans l'e-mail concerné pour indiquer votre intention de le recevoir. Veuillez noter que si vous ne le faites pas, vous ne recevrez pas d'e-mails de notification ultérieurs.
  11. Si vous suivez correctement les étapes ci-dessus, l'ID d'abonnement "arn: aws: sns: ap-nord-est-1: 111111111111: testtopicname: 8851ea7b-0610-4def-9b38-exxxxxxxxxxxxx" sera entré à l'endroit où se trouvait la confirmation en attente. Il devrait y avoir. Mais je ne pense pas qu'il y ait eu de scène en particulier où j'ai utilisé cela. Utilisez uniquement le Topic ARN à l'étape 6

Ecrire le code

Je ne fais pas autant qu'écrire. Copiez simplement l'exemple de code, réécrivez le contenu et ajoutez-le après le code d'origine.

snstest.py


import boto.sns

region = 'ap-northeast-1'
#Étant donné que cette région spécifie la région à utiliser, entrez la région réellement acquise par ARN.

if conditionmatched:
#Si une certaine condition est remplie

        topic = 'arn:aws:sns:ap-northeast-1:111111111111:testtopicname'
#Utilisation de l'ARN de rubrique antérieur

        subject = 'Your Email Subject!!'
#Avec le titre d'un tel e-mail

        body = 'You got %s !' % (messagebody)  
#Envoyez le contenu du corps d'un tel e-mail. L'anglais est dû au fait que le code de caractère était gênant, mais peut-être que ce n'est pas si gênant...

        conn = boto.sns.connect_to_region(region)
        conn.publish(topic, body, subject)

À la fin

Le service de notification simple d'Amazon semble maintenant être à l'honneur avec la prise en charge de Mobile Push, mais c'est un héros méconnu qui n'est pas venu au premier plan. Je suis particulièrement impressionné par le travail sournois derrière les paramètres d'alarme CloudWatch ... mais juste quelques lignes derrière le code que j'ai écrit à l'origine et cela fonctionne bien. C'est un gars, donc il n'y a aucune raison de ne pas l'utiliser.

En fait, si l'appel d'API échoue, vous devrez peut-être penser à réessayer avec le retour exponentiel, mais cette fois ce n'est pas si critique, donc ça va.

Les références

Voir ici pour les erreurs d'appel d'API courantes Guide de l'API Amazon Simple Notification Service - Erreurs courantes (en anglais uniquement)

Voir ici pour savoir comment réessayer lorsqu'un appel d'API échoue Référence générale d'Amazon Web Service (traduction en japonais)

Recommended Posts

Utiliser Amazon Simple Notification Service avec Python
Essayez Amazon Simple Workflow Service (SWF) avec Python et boto3
[Python] Utiliser JSON avec Python
Utiliser mecab avec Python 3
Utiliser DynamoDB avec Python
Utilisez Python 3.8 avec Anaconda
Utiliser python avec docker
Utilisez Python / Django avec Windows Azure Cloud Service!
Utiliser l'API Trello avec python
Utiliser l'API Twitter avec Python
Utiliser TUN / TAP avec Python
Utiliser l'API subsonique avec python3
Python: comment utiliser async avec
Utiliser la caméra Point Grey avec Python (PyCapture2)
Utilisez NAIF SPICE TOOL KIT avec Python
Utiliser rospy avec virtualenv dans Python3
Utiliser Python mis en pyenv avec NeoVim
Utiliser la synthèse vocale Windows 10 avec Python
Automatisez des tâches simples avec Python Part0
Utiliser OpenCV avec Python 3 dans Window
Utiliser PostgreSQL avec Lambda (Python + psycopg2)
Service Python
Créer un fichier power simple avec Python
Utilisez smbus avec python3 sous environnement pyenv
Utiliser DeepL avec python (pour la traduction d'articles)
Client API Slack simple réalisé avec Python
Automatisez des tâches simples avec Python Part1 Scraping
Apprentissage automatique avec python (2) Analyse de régression simple
[Introduction à Python] Utilisons foreach avec Python
Utilisez PIL ou Pillow avec Cygwin Python
Utiliser le chiffrement de la bibliothèque de chiffrement avec l'image Python de Docker
Utiliser Application Insights avec Python 3 (y compris les bouteilles)
[Azure] Hit Custom Vision Service avec Python
Utilisation des fonctions C ++ de python avec pybind11
Envoyer un e-mail avec Amazon SES + Python
Utilisez le pilote Web phantomjs de sélénium avec unittest de python
Jusqu'à ce que vous puissiez utiliser opencv avec python
Utiliser Python et MeCab avec Azure Functions
J'ai fait un simple blackjack avec Python
FizzBuzz en Python3
Grattage avec Python
Je veux utiliser MATLAB feval avec python
Statistiques avec python
Utiliser des packages Python supplémentaires avec Serverless Framework (v1.x)
Grattage avec Python
Python avec Go
Spécifiez le fichier exécutable Python à utiliser avec virtualenv
Utilisez Logger avec Python pour le moment
Twilio avec Python
Intégrer avec Python
Démarrez un serveur Web Python simple avec Docker
Python> Exécuter avec des arguments d'exécution> Utiliser import argparse
Utiliser plusieurs versions de l'environnement python avec pyenv
Envelopper C avec Cython pour une utilisation à partir de Python
Jouez avec 2016-Python
AES256 avec python
Testé avec Python