Avez-vous des fonctionnalités dans votre application qui envoient des e-mails ou des messages courts? J'ai également implémenté une telle fonctionnalité l'autre jour. Bien sûr, en utilisant AWS SES et SNS. Je voulais l'écrire dans Node.js, mais je l'ai écrit en Python pour diverses raisons. SES, SNS, SMS sont compliqués! Je l'ai implémenté en le faisant, mais il y avait des restrictions et ainsi de suite, alors je l'ai laissé dans l'article pour le futur ...
SES (Simple Email Service) est une plate-forme de messagerie qui permet aux utilisateurs d'envoyer et de recevoir des e-mails de manière économique et simple en utilisant leurs adresses e-mail et domaines. Un service qui vous permet d'envoyer et de recevoir des e-mails avec les services AWS pour le moment. Je suis désolé d'être approprié ...
SNS (Simple Notification Service) est un service Web qui coordonne et gère la livraison ou l'envoi de messages aux terminaux abonnés. Vous pouvez utiliser Lambda, SQS, SMS, etc. en tant qu'abonné. Cette fois, j'enverrai un court message par SMS.
Comme il y avait plusieurs appelants tels que le côté application et d'autres services d'AWS, j'ai décidé de l'écrire dans Lambda. C'est essentiellement comme lancer Lambda et envoyer des SES ou des SMS.
SES Si vous transmettez l'adresse e-mail de destination dans un tableau, vous pouvez l'envoyer à plusieurs adresses. Fondamentalement, lorsque vous utilisez SES, vous ne pouvez envoyer et recevoir que les adresses enregistrées et autorisées par SES à l'avance. Cependant, si vous le faites, vous devrez vous inscrire et autoriser SES chaque fois que le nombre d'adresses augmente, alors contactez le support et demandez-leur de quitter l'environnement sandbox. Ensuite, vous n'avez pas à vous inscrire en tant que destinataire de courrier électronique. (Notez que l'adresse de l'expéditeur doit être enregistrée)
import boto3
def lambda_handler(event, context):
try:
ses = boto3.client("ses", region_name = "us-west-2")
ses.send_email(
Source = "from_mailaddress",
Destination = {
"ToAddresses": "to_mailaddress"
},
Message = {
"Subject": {
"Data": "subject_title",
"Charset": "UTF-8"
},
"Body": {
"Text": {
"Data": "body_message",
"Charset": "UTF-8"
}
}
}
)
except Exception as e:
print e
SNS(SMS) Il semble que le numéro de téléphone de destination ne puisse être envoyé qu'à un numéro de téléphone international (parfois avec +81). C'est aussi un message court, donc si vous ne gardez pas le contenu du message modéré, vous obtiendrez une erreur. De plus, la limite de frais d'utilisation par défaut est de 1 $ / mois et vous ne pouvez envoyer que des dizaines de messages tels quels. De plus, vous ne pouvez pas augmenter la limite (vous recevrez un message d'erreur indiquant que vous n'êtes pas autorisé à l'augmenter), veuillez donc contacter le support ainsi que SES afin que vous puissiez augmenter la limite.
import boto3
def lambda_handler(event, context):
try:
sns = boto3.client("sns")
phoneNumber = "+818012345678"
message = "send message"
sns.publish(
PhoneNumber = phoneNumber
Message = message
)
except Exception as e:
print e
J'étais un peu coincé avec les restrictions de SES et SNS (SMS), j'ai donc écrit cet article. Si vous utilisez AWS-SDK, etc., vous pouvez facilement envoyer un message du côté de l'application. C'est pratique. Si vous donnez à l'événement Lambda l'adresse de destination, le numéro de téléphone, le contenu du message, etc. et que vous y faites référence, vous pouvez le réutiliser dans un seul Lambda. C'est pratique (deuxième fois).
à plus!
Recommended Posts