Verwenden der Lambda-Funktion mit Amazon SNS
Amazon SNS ist ein Dienst, der für Push-Benachrichtigungen verwendet wird. In diesem Kapitel erklären wir die Arbeitsweise von AWS Lambda und Amazon SNS anhand eines Beispiels, in dem die folgenden Aktionen ausgeführt werden:
Erstellen Sie ein Thema im SNS-Service und verwenden Sie AWS Lambda. Fügen Sie Themen zu CloudWatch hinzu
Senden Sie eine SNS-Textnachricht unter der angegebenen Telefonnummer.
Voraussetzungen
Um ein Thema in SNS Service zu erstellen und AWS Lambda zu verwenden, um Themen zu CloudWatch hinzuzufügen, müssen Sie die folgenden Schritte nicht ausführen:
- Thema in SNS erstellen
- Erstellen Sie eine Rolle für die Berechtigung in IAM
- Erstellen Sie eine AWS Lambda-Funktion
- Zum Thema veröffentlichen, um den Trigger zu aktivieren
- Überprüfen Sie die Nachrichtendetails im CloudWatch-Dienst.
Um eine SNS-Textnachricht unter der angegebenen Telefonnummer zu senden, müssen wir Folgendes tun:
- Fügen Sie in AWS Lambda Code hinzu, um eine Nachricht an Ihr Telefon zu senden.
Beispiel
In diesem Beispiel erstellen wir ein Thema in SNS. Wenn Details in das zu veröffentlichende Thema eingegeben werden, wird AWS Lambda ausgelöst. Die Themendetails werden in CloudWatch protokolliert und eine Nachricht wird von AWS Lambda telefonisch gesendet.
Hier ist ein grundlegendes Blockdiagramm, das dasselbe erklärt -
Thema in SNS erstellen
Sie müssen die folgenden Schritte ausführen, um ein Thema in SNS zu erstellen.
Schritt 1
Melden Sie sich bei AWS Console an und rufen Sie den SNS-Dienst in Amazon auf (siehe unten).
Schritt 2
Klicken Simple Notification Service und Create topic drin.
Schritt 3
Dann müssen Sie klicken Create new topic Taste wie abgebildet -
Schritt 4
Geben Sie die Topic name und Display name und klicken Sie auf Create topic. Sie sollten den Themennamen in der Anzeige wie folgt sehen:
Erstellen Sie eine Berechtigungsrolle in IAM
Um eine Rolle für die Arbeit mit AWS Lambda und SNS zu erstellen, müssen Sie sich bei der AWS-Konsole anmelden. Wählen Sie dann IAM aus den Amazon-Diensten aus und klicken Sie auf die Rolle von links, wie unten gezeigt.
Beachten Sie, dass wir Richtlinien für SNS, Lambda und CloudWatch hinzugefügt haben. Fügen Sie den Rollennamen hinzu und klicken Sie auf die Schaltfläche Rolle erstellen, um den Vorgang der Rollenerstellung abzuschließen.
Erstellen Sie eine AWS Lambda-Funktion
In diesem Abschnitt erfahren Sie, wie Sie eine AWS Lambda-Funktion mit nodejs als Laufzeit erstellen.
Melden Sie sich zu diesem Zweck bei der AWS-Konsole an und wählen Sie AWS Lambda aus den AWS-Diensten. Fügen Sie den Funktionsnamen, die Rollendetails usw. hinzu und erstellen Sie die AWS Lambda-Funktion wie gezeigt.
SNS-Trigger hinzufügen
Geben Sie zum Hinzufügen des SNS-Triggers die SNS-Konfigurationsdetails wie folgt ein:
Wählen Sie dann SNS topic und Add der Auslöser für die AWS Lambda-Funktion wie gezeigt -
Fügen Sie dann den unten angegebenen AWS-Lambda-Code hinzu -
exports.handler = function(event, context, callback) {
console.log("AWS lambda and SNS trigger ");
console.log(event);
const sns = event.Records[0].Sns.Message;
console.log(sns)
callback(null, sns);
};
Im obigen Code event.Records[0].Sns.Messagegibt die Nachrichtendetails an. Wir haben Konsolenprotokolle hinzugefügt, um sie in CloudWatch anzuzeigen. Speichern Sie nun die Lambda-Funktion mit der erforderlichen Speicher- und Zeitzuweisung.
Zum Thema veröffentlichen, um den Trigger zu aktivieren
Denken Sie daran, dass wir in Schritt 1 bereits ein Thema in SNS erstellt haben. Wir werden nun das Thema veröffentlichen und die Details in CloudWatch anzeigen, die von AWS Lambda ausgelöst werden.
Zum Thema veröffentlichen
Wählen Sie zuerst den Namen des Themas aus, das Sie veröffentlichen möchten. Klicke aufPublish to topic Knopf -
Geben Sie die Subject und Message Details wie unten gezeigt -
Sie können auch auswählen JSON Nachrichtenformat zum Senden JSONStil. KlickenPublish the message Schaltfläche am Ende des Bildschirms.
Überprüfen Sie die Nachrichtendetails im CloudWatch-Dienst
Melden Sie sich bei der AWS-Konsole an und öffnen Sie den CloudWatch-Dienst. Klicken Sie links auf Protokolle und wählen Sie die Protokolle für die erstellte AWS Lambda-Funktion aus. Sie finden die folgende Anzeige für die Protokolle mit Nachrichten, die wie oben gezeigt erstellt wurden:
Fügen Sie Code in AWS Lambda hinzu, um eine Nachricht an Ihr Telefon zu senden
Hier wird SNS-Textnachrichten verwendet, um Nachrichten mit AWS Lambda auf dem Telefon zu senden. Sie können den folgenden Code verwenden, um den AWS Lambda-Code wie folgt zu aktualisieren:
const aws = require("aws-sdk");
const sns = new aws.SNS({
region:'us-east-1'
});
exports.handler = function(event, context, callback) {
console.log("AWS lambda and SNS trigger ");
console.log(event);
const snsmessage = event.Records[0].Sns.Message;
console.log(snsmessage);
sns.publish({
Message: snsmessage,
PhoneNumber: '+911212121212'
}, function (err, data) {
if (err) {
console.log(err);
callback(err, null);
} else {
console.log(data);
callback(null, data);
}
});
};
Wir haben AWS SDK und den SNS-Service zum Senden von Nachrichten hinzugefügt. Die Nachricht von dem Ereignis, das von SNS kommt, wird als Textnachricht unter der angegebenen Telefonnummer gesendet.
Beachten Sie zum Beispiel den folgenden Code:
sns.publish({
Message: snsmessage,
PhoneNumber: '+911212121212'
}, function (err, data) {
if (err) {
console.log(err);
callback(err, null);
} else {
console.log(data);
callback(null, data);
}
});
Geben Sie jetzt das Thema ein, um die Nachricht in Cloudwatch und die oben angegebene Telefonnummer anzuzeigen.
Klicken Publish messageum die Nachricht zu veröffentlichen. Sie sehen eine Nachricht auf der Telefonnummer wie folgt: