Automatisches Pausieren des E-Mail-Versands für Ihr gesamtes Amazon-SES-Konto - Amazon Simple Email Service

Automatisches Pausieren des E-Mail-Versands für Ihr gesamtes Amazon-SES-Konto

Mit den Verfahren in diesem Abschnitt werden die Schritte zum Einrichten von Amazon SES, Amazon SNS, Amazon CloudWatch und AWS Lambda erläutert, um das Versenden von E-Mails für Ihr Amazon-SES-Konto in einer einzelnen AWS-Region automatisch anzuhalten. Wenn Sie E-Mails aus mehreren Regionen versenden, wiederholen Sie die Verfahren in diesem Abschnitt für jede Region, in der Sie diese Lösung implementieren möchten.

Teil 1: Erstellen einer IAM-Rolle

Der erste Schritt für die Konfiguration der automatischen Pausierung des E-Mail-Versands besteht darin, eine IAM-Rolle zu erstellen, welche die UpdateAccountSendingEnabled-API-Operation ausführen kann.

So erstellen Sie die IAM-Rolle
  1. Öffnen Sie die IAM-Konsole unter https://console.aws.amazon.com/iam/.

  2. Wählen Sie im Navigationsbereich Roles (Rolle) aus.

  3. Wählen Sie Create role (Rolle erstellen) aus.

  4. Wählen Sie auf der Seite Select trusted entity (Auswahl der vertrauenswürdigen Entität) unter Trusted entity type (Auswahl der vertrauenswürdigen Entität) die Option AWS service (AWS-Service) aus.

  5. Wählen Sie unter Use case (Anwendungsfall) die Option Lambda und dann Next (Weiter) aus.

  6. Wählen Sie auf der Seite Add permissions (Berechtigungen hinzufügen) die folgenden Richtlinien aus:

    • AWSLambdaBasicExecutionRole

    • AmazonSESFullAccess

    Tipp

    Verwenden Sie das Suchfeld unter Permission policies (Berechtigungsrichtlinien), um diese Richtlinien schnell zu finden. Beachten Sie jedoch, dass Sie nach der Suche und Auswahl der ersten Richtlinie die Option Clear (Löschen) auswählen müssen, bevor Sie die zweite Richtlinie suchen und auswählen.

    Wählen Sie anschließend Next (Weiter).

  7. Geben Sie auf der Seite Name, review, and create (Benennen, überprüfen und erstellen) unter Role details (Rollendetails) einen aussagekräftigen Namen für die Richtlinie im Feld Role name (Rollenname) ein.

  8. Stellen Sie sicher, dass die beiden Richtlinien in der Tabelle Permissions policy summary (Berechtigungsrichtlinienübersicht) ausgewählt sind, und wählen Sie dann Create role (Rolle erstellen) aus.

Teil 2: Erstellen der Lambda-Funktion

Nachdem Sie eine IAM-Rolle erstellt haben, können Sie die Lambda-Funktion erstellen, mit der das Senden von E-Mails für Ihr Konto pausiert wird.

So erstellen Sie die Lambda-Funktion:
  1. Öffnen Sie die AWS Lambda-Konsole unter https://console.aws.amazon.com/lambda/.

  2. Wählen Sie mithilfe der Regionsauswahl die Region aus, in der Sie diese Lambda-Funktion bereitstellen möchten.

    Anmerkung

    Diese Funktion pausiert nur das Senden von E-Mails in der AWS-Region, die Sie in diesem Schritt auswählen. Wenn Sie aus mehr als einer Region E-Mails versenden, wiederholen Sie die Verfahren in diesem Abschnitt für jede Region, in der das Senden von E-Mails automatisch pausiert werden soll.

  3. Wählen Sie Create function (Funktion erstellen).

  4. Wählen Sie unter Create function (Funktion erstellen) die Option Author from scratch (Scratch-Autor).

  5. Führen Sie auf der Seite Basic information (Grundlegende Informationen) folgende Schritte aus:

    • Geben Sie für Function name (Funktionsname) einen Namen für die Lambda-Funktion ein.

    • Bei Laufzeit wählen Sie Node.js 14x( oder die Version, die derzeit in der Auswahlliste angeboten wird) aus.

    • Behalten Sie für Architecture (Architektur) den vorab ausgewählten Standardnamen x86_64bei.

    • Erweitern Sie die Option Change default execution role (Standardausführungsrolle ändern) unter „Permissions“ (Berechtigungen) und wählen Sie Use an existing role (Vorhandene Rolle verwenden) aus.

    • Klicken Sie in das Feld Existing role (Vorhandene Rolle) und wählen Sie die IAM-Rolle aus, die Sie in Teil 1: Erstellen einer IAM-Rolle erstellt haben.

    Wählen dann Sie Funktion erstellen.

  6. Fügen Sie im Code-Editor unter Code source (Codequelle) den folgenden Code ein:

    'use strict'; var aws = require('aws-sdk'); // Create a new SES object. var ses = new aws.SES(); // Specify the parameters for this operation. In this case, there is only one // parameter to pass: the Enabled parameter, with a value of false // (Enabled = false disables email sending, Enabled = true enables it). var params = { Enabled: false }; exports.handler = (event, context, callback) => { // Pause sending for your entire SES account ses.updateAccountSendingEnabled(params, function(err, data) { if(err) { console.log(err.message); } else { console.log(data); } }); };

    Wählen Sie dann Deploy (Bereitstellen) aus.

  7. Wählen Sie Test aus. Wenn das Fenster Configure test event (Testereignis konfigurieren) angezeigt wird, geben Sie einen Namen im Feld Event name (Ereignisname) ein und wählen Sie dann Save (Speichern) aus.

  8. Erweitern Sie das Dropdown-Feld Test (Testen) und wählen Sie den Ereignisnamen aus, den Sie gerade erstellt haben. Wählen Sie dann Test (Testen) aus.

  9. Die Registerkarte Execution results (Ausführungsergebnisse) erscheint. Vergewissern Sie sich, dass direkt darunter und rechts Status: Succeeded angezeigt wird. Wenn die Funktion nicht ausgeführt werden kann, führen Sie die folgenden Schritte aus:

    • Überprüfen Sie, ob die IAM-Rolle, die Sie in Teil 1: Erstellen einer IAM-Rolle erstellt haben, die richtigen Richtlinien enthält.

    • Vergewissern Sie sich, dass der Code in der Lambda-Funktion keine Syntaxfehler enthält. Der Lambda-Code-Editor hebt automatisch Syntaxfehler und andere potenzielle Probleme hervor.

Teil 3: Erneutes Aktivieren des E-Mail-Versands für Ihr Konto

Ein Nebeneffekt des Testens der Lambda-Funktion in Teil 2: Erstellen der Lambda-Funktion besteht darin, dass das Versenden von E-Mails für Ihr Amazon-SES-Konto angehalten wird. In den meisten Fällen sollten Sie den Versand für Ihr Konto erst anhalten, wenn der CloudWatch-Alarm ausgelöst wird.

Mithilfe der Verfahren in diesem Abschnitt wird der E-Mail-Versand für Ihr Amazon-SES-Konto erneut aktiviert. Um diese Verfahren ausführen zu können, müssen Sie die AWS Command Line Interface installieren und konfigurieren. Weitere Informationen finden Sie im AWS Command Line Interface-Benutzerhandbuch.

So aktivieren Sie das Senden von E-Mails erneut
  1. Geben Sie in der Befehlszeile den folgenden Befehl ein, um das Senden von E-Mails für Ihr Konto erneut zu aktivieren: Ersetzen Sie sending_region durch den Namen der Region, in der Sie den E-Mail-Versand wieder aktivieren möchten.

    aws ses update-account-sending-enabled --enabled --region sending_region
  2. Geben Sie in der Befehlszeile den folgenden Befehl ein, um den Status des E-Mail-Versands für Ihr Konto zu überprüfen:

    aws ses get-account-sending-enabled --region sending_region

    Wenn die folgende Meldung ausgegeben wird, haben Sie das Senden von E-Mails für Ihr Konto erfolgreich erneut aktiviert:

    { "Enabled": true }

Teil 4: Erstellen eines Amazon-SNS-Themas und -Abonnements

Damit CloudWatch Ihre Lambda-Funktion ausführt, wenn ein Alarm ausgelöst wird, müssen Sie zuerst ein Amazon-SNS-Thema erstellen und es für die Lambda-Funktion abonnieren.

So erstellen Sie das Amazon-SNS-Thema und abonnieren die Lambda-Funktion dazu
  1. Öffnen Sie die Amazon SNS-Konsole unter https://console.aws.amazon.com/sns/v3/home.

  2. Erstellen Sie ein Thema, indem Sie den Schritten im Entwicklerhandbuch für Amazon Simple Notification Service folgen.

    1. Der Type (Typ) muss Standard sein (nicht FIFO).

  3. Erstellen Sie ein Thema, indem Sie den Schritten im Entwicklerhandbuch für Amazon Simple Notification Service folgen.

    1. Wählen Sie unter Protocol (Protokoll) die Option AWS Lambda aus.

    2. Wählen Sie für Endpoint (Endpunkt) die Lambda-Funktion aus, die Sie in Teil 2: Erstellen der Lambda-Funktion erstellt haben.

Teil 5: Erstellen eines CloudWatch-Alarms

Dieser Abschnitt enthält Verfahren zum Erstellen eines Alarms in CloudWatch, der ausgelöst wird, wenn eine Metrik einen bestimmten Schwellenwert erreicht. Wenn der Alarm ausgelöst wird, übermittelt er eine Benachrichtigung an das Teil 4: Erstellen eines Amazon-SNS-Themas und -Abonnements-Thema, das Sie in Amazon SNS erstellt haben, was dann wiederum die Lambda-Funktion auslöst, die Sie in Teil 2: Erstellen der Lambda-Funktion erstellt haben.

So erstellen Sie einen CloudWatch-Alarm
  1. Öffnen Sie die CloudWatch-Konsole unter https://console.aws.amazon.com/cloudwatch/.

  2. Wählen Sie mithilfe der Regionsauswahl die Region aus, in der Sie den E-Mail-Versand automatisch pausieren möchten.

  3. Klicken Sie im Navigationsbereich auf Alarms (Alarme).

  4. Wählen Sie Create Alarm (Alarm erstellen) aus.

  5. Wählen Sie im Fenster Create Alarm (Alarm erstellen) unter SES Metrics (SES-Metriken) die Option Account Metrics (Kontenmetriken) aus.

  6. Wählen Sie unter Metric Name (Metrikname) eine der folgenden Optionen aus:

    • Reputation.BounceRate – Wählen Sie diese Metrik aus, wenn Sie das Senden von E-Mails für Ihr Konto pausieren möchten, sobald die Quote der permanent unzustellbaren E-Mails für Ihr Konto einen von Ihnen definierten Schwellenwert überschreitet.

    • Reputation.ComplaintRate – Wählen Sie diese Metrik aus, wenn Sie das Senden von E-Mails für Ihr Konto pausieren möchten, sobald die Beschwerdequote für Ihr Konto einen von Ihnen definierten Schwellenwert überschreitet.

    Wählen Sie Next (Weiter).

  7. Führen Sie folgende Schritte aus:

    • Geben Sie unter Alarm Threshold (Alarm-Schwellenwert) im Feld Name einen Namen für den Alarm ein.

    • Geben Sie unter Whenever: Reputation.BounceRate oder Whenever: Reputation.ComplaintRate den Schwellenwert an, der zum Auslösen des Alarms führt.

      Anmerkung

      Für Ihr Konto wird automatisch eine Prüfung festgelegt, wenn Ihre Unzustellbarkeitsquote 10 % überschreitet oder wenn Ihre Beschwerdequote 0,5 % überschreitet. Wenn Sie die Unzustellbarkeits- und Beschwerdequote angeben, die dazu führt, dass der CloudWatch-Alarm ausgelöst wird, empfehlen wir, Werte zu verwenden, die unterhalb dieser Quoten liegen, um zu verhindern, dass eine Prüfung für Ihr Konto festgelegt wird.

    • Wählen Sie unter Actions (Aktionen) für Whenever this alarm die Option State is ALARM (Status ist ALARM) aus. Wählen Sie für Send notification to (Benachrichtigung senden an) das Amazon-SNS-Thema aus, das Sie in Teil 4: Erstellen eines Amazon-SNS-Themas und -Abonnements erstellt haben.

    Wählen Sie Create Alarm (Alarm erstellen) aus.

Teil 6: Testen der Lösung

Sie können jetzt den Alarm testen, um sicherzustellen, dass er die Lambda-Funktion ausführt, wenn er in den Status ALARM versetzt wird. Sie können die API-Operation SetAlarmState verwenden, um den Status des Alarms temporär zu ändern.

Die Verfahren in diesem Abschnitt sind optional, es wird jedoch empfohlen, diese durchzuführen, um sicherzustellen, dass die gesamte Lösung ordnungsgemäß konfiguriert ist.

  1. Geben Sie in der Befehlszeile den folgenden Befehl ein, um den Status des E-Mail-Versands für Ihr Konto zu überprüfen: Ersetzen Sie Region durch den Namen der Region.

    aws ses get-account-sending-enabled --region region

    Wenn der Versand für Ihr Konto aktiviert ist, wird die folgende Meldung ausgegeben:

    { "Enabled": true }
  2. Geben Sie in der Befehlszeile den folgenden Befehl ein, um den Alarmstatus vorübergehend in ALARM zu ändern: aws cloudwatch set-alarm-state --alarm-name MyAlarm --state-value ALARM --state-reason "Testing execution of Lambda function" --region region

    Ersetzen Sie MyAlarm im voranstehenden Befehl durch den Namen des Alarms, den Sie in Teil 5: Erstellen eines CloudWatch-Alarms erstellt haben, und geben Sie anstelle von Region die Region ein, in der Sie den E-Mail-Versand automatisch pausieren möchten.

    Anmerkung

    Wenn Sie diesen Befehl ausführen, wechselt der Status des Alarms innerhalb weniger Sekunden von OK zu ALARM und zurück zu OK. Die Anzeige dieser Statusänderungen erfolgt auf der Registerkarte History (Verlauf) des Alarms in der CloudWatch-Konsole oder durch Verwendung der DescribeAlarmHistory-Operation.

  3. Geben Sie in der Befehlszeile den folgenden Befehl ein, um den Status des E-Mail-Versands für Ihr Konto zu überprüfen:

    aws ses get-account-sending-enabled --region region

    Wenn die Lambda-Funktion erfolgreich ausgeführt wird, wird die folgende Meldung ausgegeben:

    { "Enabled": false }
  4. Führen Sie die Schritte in Teil 3: Erneutes Aktivieren des E-Mail-Versands für Ihr Konto aus, um den E-Mail-Versand für Ihr Konto erneut zu aktivieren.