Wie verwende ich Lambda und Amazon SES zum Senden von E-Mails?
Ich möchte AWS Lambda verwenden, um eine E-Mail mit Amazon Simple Email Service (Amazon SES) zu senden.
Kurzbeschreibung
Gehe wie folgt vor, um Lambda und Amazon SES zum Senden von E-Mails zu verwenden:
- Erstelle eine AWS Identity and Access Management (IAM)-Richtlinie und eine Rolle für Lambda, um den API-Aufruf auszuführen.
- Verifiziere die Amazon-SES-Identität (Domain oder E-Mail-Adresse).
- Erstelle oder aktualisiere eine Lambda-Funktion, die eine Logik enthält, um E-Mails über Amazon SES zu senden.
**Hinweis:**Um den E-Mails einen PDF-Anhang beizufügen, musst du die API Amazon SES SendRawEmail verwenden.
Lösung
Eine IAM-Richtlinie erstellen und sie einer Rolle zur Ausführung des API-Aufrufs für Lambda anhängen
Führe die folgenden Schritte aus:
-
Öffne die IAM-Konsole.
-
Verwende den JSON-Richtlinieneditor, um eine IAM-Richtlinie zu erstellen. Füge beim Erstellen der Richtlinie das folgende JSON-Richtliniendokument in den Richtlinien-Editor ein:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ses:SendEmail", "ses:SendRawEmail" ], "Resource": "*" } ] }
Hinweis: Weitere Informationen und Beispiele zur Einschränkung des Zugriffs auf diese Richtlinie findest du unter Beispiel-IAM-Richtlinien für SES.
-
Ordne die IAM-Richtlinie einer IAM-Rolle zu.
Die Amazon SES-Identität bestätigen
Informationen zur Verifizierung einer Domain findest du unter Verifizieren einer DKIM-Domain-Identität beim DNS-Anbieter.
Informationen zur Verifizierung einer E-Mail-Adresse findest du unter Verifizieren der Identität einer E-Mail-Adresse.
Eine Lambda-Funktion, die Logik zum Senden von E-Mails enthält, erstellen und aktualisieren
Ersetze in den folgenden Beispielen für Lambda-Funktionscodes Node.js, Python und Ruby bei Bedarf diese Variablen durch deine Umgebung:
- us-west-2 durch die AWS-Region, in der sich die verifizierte Amazon-SES-Identität befindet.
- "RecipientEmailAddress", ... durch die E-Mail-Adresse oder -Adressen, an die du die E-Mail senden möchtest.
- SourceEmailAddress durch die von Amazon SES verifizierte Absender-E-Mail-Adresse oder eine beliebige E-Mail-Adresse von einer Amazon-SES-verifizierten Domain. Bearbeite optional den Nachrichtentext („Test“) und die Betreffzeile („Test Email“).
Hinweis: Du kannst auch den eigenen Lambda-Funktionscode in den bevorzugten unterstützten Laufzeiten entwerfen.
Führe die folgenden Schritte aus:
-
Öffne die Lambda-Konsole und wähle Funktionen.
-
Erstelle eine Lambda-Funktion, falls noch nicht geschehen.
Hinweis: Du kannst entweder die Lambda-Konsole verwenden oder ein Bereitstellungspaket erstellen und hochladen. -
Wähle den Namen der Funktion und wähle dann die Registerkarte Konfiguration.
-
Überprüfe im Bereich Berechtigungen die Ausführungsrolle der Funktion.
-
Stelle sicher, dass die IAM-Rolle mit Amazon-SES-Berechtigungen aufgeführt ist, die du zuvor erstellt hast. Wenn die richtige IAM-Rolle nicht aufgeführt ist, weise der Funktion die richtige Rolle zu.
-
Wähle die Registerkarte Code. Füge im integrierten Code-Editor eines der folgenden Funktionscodebeispiele ein.
Beispielcode für Node.js der Version 18 und höher:// Copyright 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 import { SESClient, SendEmailCommand } from "@aws-sdk/client-ses"; const ses = new SESClient({ region: "us-west-2" }); export const handler = async(event) => { const command = new SendEmailCommand({ Destination: { ToAddresses: ["RecipientEmailAddress", ...], }, Message: { Body: { Text: { Data: "Test" }, }, Subject: { Data: "Test Email" }, }, Source: "SourceEmailAddress", }); try { let response = await ses.send(command); // process data. return response; } catch (error) { // error handling. } finally { // finally. } };
Beispielcode für Node.js der Version 16 und früher:
// Copyright 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 var aws = require("aws-sdk"); var ses = new aws.SES({ region: "us-west-2" }); exports.handler = async function (event) { var params = { Destination: { ToAddresses: ["RecipientEmailAddress", ...], }, Message: { Body: { Text: { Data: "Test" }, }, Subject: { Data: "Test Email" }, }, Source: "SourceEmailAddress", }; return ses.sendEmail(params).promise() };
Beispielcode für Python der Version 3.9:
import json import boto3 client = boto3.client('ses', region_name='us-west-2') def lambda_handler(event, context): response = client.send_email( Destination={ 'ToAddresses': ['RecipientEmailAddress'] }, Message={ 'Body': { 'Text': { 'Charset': 'UTF-8', 'Data': 'This is the message body in text format.', } }, 'Subject': { 'Charset': 'UTF-8', 'Data': 'Test email', }, }, Source='SourceEmailAddress' ) print(response) return { 'statusCode': 200, 'body': json.dumps("Email Sent Successfully. MessageId is: " + response['MessageId']) }
Beispielcode für Ruby der Version 2.7:
require "aws-sdk-ses" $ses = Aws::SES::Client.new(region: "us-west-2") def lambda_handler(event:, context:) resp = $ses.send_email({ destination: { to_addresses: ["RecipientEmailAddress"], }, message: { body: { text: { charset: "UTF-8", data: "This is the message body in text format.", }, }, subject: { charset: "UTF-8", data: "Test email", }, }, source: "SourceEmailAddress" }) { statusCode: 200, body: JSON.generate("Message Sent Successfully. #{resp.to_h} ") } end
-
Wähle Bereitstellen.
(Optional) Senden einer Test-E-Mail
Führe die folgenden Schritte aus:
- Öffne die Lambda-Konsole und wähle dann die Funktionen.
- Konfiguriere ein Testereignis für die Funktion.
Hinweis: Die Testnutzdaten sind erforderlich, werden aber für dieses Codebeispiel nicht verwendet. - Wähle Testen. Lambda verwendet Amazon SES, um die Test-E-Mail an den Empfänger zu senden.
Verwandte Informationen
- Themen
- ServerlosKalkulation
- Tags
- AWS Lambda
- Sprache
- Deutsch
Ähnliche Videos


Relevanter Inhalt
- AWS OFFICIALAktualisiert vor 2 Monaten
- AWS OFFICIALAktualisiert vor 2 Monaten