Haben Sie Funktionen in Ihrer Anwendung, die E-Mails oder Kurznachrichten senden? Ich habe neulich auch eine solche Funktion implementiert. Natürlich mit AWS SES und SNS. Ich wollte es in Node.js schreiben, aber ich habe es aus verschiedenen Gründen in Python geschrieben. SES, SNS, SMS sind kompliziert! Ich habe es dabei implementiert, aber es gab einige Einschränkungen und so weiter, also habe ich es im Artikel für die Zukunft belassen ...
SES (Simple Email Service) ist eine E-Mail-Plattform, mit der Benutzer E-Mails mithilfe ihrer E-Mail-Adressen und Domains kostengünstig und einfach senden und empfangen können. Ein Service, mit dem Sie vorerst E-Mails mit AWS-Services senden und empfangen können. Es tut mir leid, dass ich angemessen bin ...
SNS (Simple Notification Service) ist ein Webdienst, der die Zustellung oder das Senden von Nachrichten an abonnierende Endpunkte koordiniert und verwaltet. Sie können Lambda, SQS, SMS usw. als Abonnenten verwenden. Dieses Mal werde ich eine kurze Nachricht per SMS senden.
Da es mehrere Anrufer wie die Anwendungsseite und andere Dienste von AWS gab, habe ich beschlossen, es in Lambda zu schreiben. Es ist im Grunde so, als würde man Lambda treten und SES oder SMS senden.
SES Wenn Sie die Ziel-E-Mail-Adresse in einem Array übergeben, können Sie sie an mehrere Adressen senden. Grundsätzlich können Sie bei Verwendung von SES nur die von SES im Voraus registrierten und zugelassenen Adressen senden und empfangen. Wenn Sie dies jedoch tun, müssen Sie SES jedes Mal registrieren und autorisieren, wenn sich die Anzahl der Adressen erhöht. Wenden Sie sich daher an den Support und lassen Sie sie aus der Sandbox-Umgebung entfernen. Dann müssen Sie sich nicht als E-Mail-Empfänger registrieren. (Beachten Sie, dass die Absenderadresse registriert sein muss)
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) Es scheint, dass die Zieltelefonnummer nur an eine internationale Telefonnummer gesendet werden kann (manchmal mit +81). Da es sich um eine Kurznachricht handelt, wird ein Fehler ausgegeben, wenn der Inhalt der Nachricht nicht moderat ist. Außerdem beträgt das Standardlimit für Nutzungsgebühren 1 $ / Monat, und Sie können nur Dutzende von Nachrichten so wie sie sind senden. Darüber hinaus können Sie das Limit nicht erhöhen (Sie erhalten eine Fehlermeldung, dass Sie es nicht erhöhen dürfen). Wenden Sie sich daher an den Support sowie an SES, damit Sie das Limit erhöhen können.
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
Ich war ein wenig mit den Einschränkungen von SES und SNS (SMS) beschäftigt, also schrieb ich diesen Artikel. Wenn Sie AWS-SDK usw. verwenden, können Sie problemlos eine Nachricht von der Anwendungsseite senden. Es ist bequem. Wenn Sie dem Lambda-Ereignis die Zieladresse, Telefonnummer, den Nachrichteninhalt usw. geben und darauf verweisen, können Sie es in einem Lambda wiederverwenden. Es ist bequem (zweites Mal).
wir sehen uns!