Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Tutorial: Verwenden von Lambda mit Amazon SQS
In diesem Tutorial erstellen Sie eine Lambda-Funktion, die Nachrichten aus einer Warteschlange von Amazon Simple Queue Service (Amazon SQS) verarbeitet. Die Lambda-Funktion wird ausgeführt, wenn der Warteschlange eine neue Nachricht hinzugefügt wird. Die Funktion schreibt die Nachrichten in einen Amazon-CloudWatch-Logs-Stream. Das folgende Diagramm zeigt die AWS-Ressourcen, die Sie zur Durchführung des Tutorials verwenden.
Führen Sie für dieses Tutorial die folgenden Schritte aus:
-
Erstellen Sie eine Lambda-Funktion, die Nachrichten in CloudWatch Logs schreibt.
-
Erstellen einer Amazon SQS-Warteschlange
-
Erstellen Sie eine Zuordnung von Ereignisquellen in Lambda. Die Zuordnung von Ereignisquellen liest die Amazon-SQS-Warteschlange und ruft Ihre Lambda-Funktion auf, wenn eine neue Nachricht hinzugefügt wird.
-
Testen Sie die Einrichtung, indem Sie Ihrer Warteschlange Nachrichten hinzufügen und die Ergebnisse in CloudWatch Logs überwachen.
Voraussetzungen
Wenn Sie kein AWS-Konto haben, führen Sie die folgenden Schritte zum Erstellen durch.
Anmeldung für ein AWS-Konto
Öffnen Sie https://portal.aws.amazon.com/billing/signup
. Folgen Sie den Online-Anweisungen.
Bei der Anmeldung müssen Sie auch einen Telefonanruf entgegennehmen und einen Verifizierungscode über die Telefontasten eingeben.
Wenn Sie sich für ein AWS-Konto anmelden, wird ein Root-Benutzer des AWS-Kontos erstellt. Der Root-Benutzer hat Zugriff auf alle AWS-Services und Ressourcen des Kontos. Als bewährte Sicherheitsmethode weisen Sie einem Administratorbenutzer Administratorzugriff zu und verwenden Sie nur den Root-Benutzer, um Aufgaben auszuführen, die Root-Benutzerzugriff erfordern.
AWS sendet Ihnen eine Bestätigungs-E-Mail, sobald die Anmeldung abgeschlossen ist. Sie können jederzeit Ihre aktuelle Kontoaktivität anzeigen und Ihr Konto verwalten. Rufen Sie dazu https://aws.amazon.com/
Nachdem Sie sich für ein AWS-Kontoangemeldet haben, sichern Sie Ihr Root-Benutzer des AWS-Kontos, aktivieren Sie AWS IAM Identity Centerund erstellen Sie einen administrativen Benutzer, damit Sie nicht den Root-Benutzer für alltägliche Aufgaben verwenden.
Schützen Ihres Root-Benutzer des AWS-Kontos
-
Melden Sie sich bei AWS Management Console
als Kontobesitzer an, indem Sie Stammbenutzer auswählen und Ihre AWS-Konto-E-Mail-Adresse eingeben. Geben Sie auf der nächsten Seite Ihr Passwort ein. Hilfe bei der Anmeldung mit dem Root-Benutzer finden Sie unter Anmelden als Root-Benutzer im AWS-Anmeldung Benutzerhandbuch zu.
-
Aktivieren Sie die Multi-Faktor-Authentifizierung (MFA) für den Root-Benutzer.
Anweisungen dazu finden Sie unter Aktivieren eines virtuellen MFA-Geräts für den Root-Benutzer Ihres AWS-Konto (Konsole) im IAM-Benutzerhandbuch.
Erstellen eines Benutzers mit Administratorzugriff
-
Aktivieren Sie das IAM Identity Center.
Anweisungen finden Sie unter Aktivieren AWS IAM Identity Center im AWS IAM Identity Center Benutzerhandbuch.
-
Gewähren Sie einem Administratorbenutzer im IAM Identity Center Benutzerzugriff.
Ein Tutorial zur Verwendung von IAM-Identity-Center-Verzeichnis als Identitätsquelle finden Sie unter Konfigurieren des Benutzerzugriffs mit der Standard-IAM-Identity-Center-Verzeichnis im AWS IAM Identity Center-Benutzerhandbuch.
Anmelden als Administratorbenutzer
-
Um sich mit Ihrem IAM-Identity-Center-Benutzer anzumelden, verwenden Sie die Anmelde-URL, die an Ihre E-Mail-Adresse gesendet wurde, als Sie den IAM-Identity-Center-Benutzer erstellt haben.
Hilfe bei der Anmeldung mit einem IAM-Identity-Center-Benutzer finden Sie unter Anmelden beim AWS-Zugangsportal im AWS-Anmeldung Benutzerhandbuch zu.
Weiteren Benutzern Zugriff zuweisen
-
Erstellen Sie im IAM-Identity-Center einen Berechtigungssatz, der den bewährten Vorgehensweisen für die Anwendung von geringsten Berechtigungen folgt.
Anweisungen hierzu finden Sie unter Berechtigungssatz erstellen im AWS IAM Identity Center Benutzerhandbuch.
-
Weisen Sie Benutzer einer Gruppe zu und weisen Sie der Gruppe dann Single Sign-On-Zugriff zu.
Eine genaue Anleitung finden Sie unter Gruppen hinzufügen im AWS IAM Identity Center Benutzerhandbuch.
Wenn Sie die AWS Command Line Interface noch nicht installiert haben, folgen Sie den Schritten unter Installieren oder Aktualisieren der neuesten Version von AWS CLI, um diese zu installieren.
Das Tutorial erfordert zum Ausführen von Befehlen ein Befehlszeilenterminal oder eine Shell. Verwenden Sie unter Linux und macOS Ihre bevorzugte Shell und Ihren bevorzugten Paketmanager.
Anmerkung
In Windows werden einige Bash-CLI-Befehle, die Sie häufig mit Lambda verwenden (z. B. zip
), von den integrierten Terminals des Betriebssystems nicht unterstützt. Um eine in Windows integrierte Version von Ubuntu und Bash zu erhalten, installieren Sie das Windows-Subsystem für Linux
Erstellen der Ausführungsrolle
Eine Ausführungsrolle ist eine AWS Identity and Access Management (IAM)-Rolle, die einer Lambda-Funktion die Berechtigung zum Zugriff auf AWS-Services und Ressourcen gewährt. Fügen Sie die Berechtigungsrichtlinie AWSLambdaSQSQueueExecutionRole an, damit Ihre Funktion Elemente aus Amazon SQS lesen kann.
So erstellen Sie eine Ausführungsrolle und fügen eine Amazon-SQS-Berechtigungsrichtlinie hinzu
-
Öffnen Sie die Seite Roles (Rollen)
in der IAM-Konsole. -
Wählen Sie Rolle erstellen.
-
Wählen Sie unter Vertrauenswürdiger Entitätstyp die Option AWS-Service aus.
-
Wählen Sie unter Anwendungsfall die Option Lambda aus.
-
Wählen Sie Weiter.
-
Geben Sie im Suchfeld Berechtigungsrichtlinien die Zeichenfolge
AWSLambdaSQSQueueExecutionRole
ein. -
Wählen Sie die Richtlinie AWSLambdaSQSQueueExecutionRole und anschließend Weiter aus.
-
Geben Sie unter Rollendetails für Rollenname den Namen
lambda-sqs-role
ein und wählen Sie anschließend Rolle erstellen aus.
Schreiben Sie sich nach der Erstellung der Rolle den Amazon-Ressourcennamen (ARN) Ihrer Ausführungsrolle auf. Sie werden ihn in späteren Schritten noch benötigen.
Erstellen der Funktion
Erstellen Sie eine Lambda-Funktion, die Ihre Amazon-SQS-Nachrichten verarbeitet. Der Funktionscode protokolliert den Body der Amazon SQS-Nachricht in CloudWatch Logs.
In diesem Tutorial wird die Node.js 18.x-Laufzeit verwendet. Es stehen aber auch Beispielcodes für andere Laufzeitensprachen zur Verfügung. Sie können die Registerkarte im folgenden Feld auswählen, um Code für die gewünschte Laufzeit anzusehen. Der JavaScript-Code, den Sie in diesem Schritt verwenden werden, ist im ersten Beispiel auf der Registerkarte JavaScript zu sehen.
So erstellen Sie eine Node.js-Lambda-Funktion
-
Erstellen Sie ein Verzeichnis für das Projekt und wechseln Sie dann zu diesem Verzeichnis.
mkdir sqs-tutorial cd sqs-tutorial
-
Kopieren Sie den JavaScript-Beispielcode in eine neue Datei mit dem Namen
index.js
. -
Erstellen Sie ein Bereitstellungspaket mit dem folgenden
zip
-Befehl.zip function.zip index.js
-
Erstellen Sie eine Lambda-Funktion mithilfe des AWS CLI-Befehls create-function
. Geben Sie für den role
-Parameter den ARN der Ausführungsrolle ein, die Sie zuvor erstellt haben.Anmerkung
Die Lambda-Funktion und die Amazon SQS-Warteschlange müssen sich in demselben AWS-Region befinden.
aws lambda create-function --function-name ProcessSQSRecord \ --zip-file fileb://function.zip --handler index.handler --runtime nodejs18.x \
--role arn:aws:iam::
111122223333
:role/lambda-sqs-role
Testen der Funktion
Rufen Sie Ihre Lambda-Funktion manuell mit dem AWS CLI-Befehl invoke
und einem Amazon-SQS-Beispielereignis auf.
So rufen Sie die Lambda-Funktion mit einem Beispielereignis auf
-
Speichern Sie die folgende JSON als Datei mit dem Namen
input.json
. Dieser JSON-Code simuliert ein Ereignis, das so ggf. von Amazon SQS an Ihre Lambda-Funktion gesendet wird, wobei"body"
die tatsächliche Nachricht aus der Warteschlange enthält. In diesem Beispiel lautet die Nachricht"test"
.Beispiel Amazon-SQS-Ereignis
Dies ist ein Testereignis. Nachricht und Kontonummer müssen nicht geändert werden.
{ "Records": [ { "messageId": "059f36b4-87a3-44ab-83d2-661975830a7d", "receiptHandle": "AQEBwJnKyrHigUMZj6rYigCgxlaS3SLy0a...", "body": "test", "attributes": { "ApproximateReceiveCount": "1", "SentTimestamp": "1545082649183", "SenderId": "AIDAIENQZJOLO23YVJ4VO", "ApproximateFirstReceiveTimestamp": "1545082649185" }, "messageAttributes": {}, "md5OfBody": "098f6bcd4621d373cade4e832627b4f6", "eventSource": "aws:sqs", "eventSourceARN": "arn:aws:sqs:us-east-1:111122223333:my-queue", "awsRegion": "us-east-1" } ] }
-
Führen Sie den folgenden AWS CLI-Befehl vom Typ invoke
aus. Durch diesen Befehl werden in der Antwort CloudWatch-Protokolle zurückgegeben. Weitere Informationen über das Abrufen von Protokollen finden Sie unter Zugriffs-Logs mit dem AWS CLI. aws lambda invoke --function-name ProcessSQSRecord --payload file://input.json out --log-type Tail \ --query 'LogResult' --output text --cli-binary-format raw-in-base64-out | base64 --decode
Die cli-binary-format-Option ist erforderlich, wenn Sie AWS CLI Version 2 verwenden. Um dies zur Standardeinstellung zu machen, führen Sie
aws configure set cli-binary-format raw-in-base64-out
aus. Weitere Informationen finden Sie unter Von AWS CLI unterstützte globale Befehlszeilenoptionen im AWS Command Line Interface-Benutzerhandbuch für Version 2. -
Suchen Sie in der Antwort nach dem Protokoll
INFO
. Dort protokolliert die Lambda-Funktion den Nachrichtentext. Sie sollten Protokolle sehen, die wie folgt aussehen:2023-09-11T22:45:04.271Z 348529ce-2211-4222-9099-59d07d837b60 INFO Processed message test 2023-09-11T22:45:04.288Z 348529ce-2211-4222-9099-59d07d837b60 INFO done
Erstellen einer Amazon-SQS-Warteschlange
Erstellen Sie eine Amazon-SQS-Warteschlange, die die Lambda-Funktion als Ereignisquelle verwenden kann. Die Lambda-Funktion und die Amazon SQS-Warteschlange müssen sich in demselben AWS-Region befinden.
So erstellen Sie eine Warteschlange
-
Öffnen Sie die Amazon-SQS-Konsole
. -
Wählen Sie Create queue (Warteschlange erstellen) aus.
-
Geben Sie einen Namen für die Warteschlange ein. Übernehmen Sie bei allen anderen Optionen die Standardeinstellungen.
-
Wählen Sie Create queue (Warteschlange erstellen) aus.
Notieren Sie sich nach dem Erstellen der Warteschlange ihren ARN. Sie benötigen ihn im nächsten Schritt, um die Warteschlange Ihrer Lambda-Funktion zuzuordnen.
Konfigurieren der Ereignisquelle
Verbinden Sie die Amazon-SQS-Warteschlange mit Ihrer Lambda-Funktion, indem Sie eine Zuordnung von Ereignisquellen erstellen. Die Zuordnung von Ereignisquellen liest die Amazon-SQS-Warteschlange und ruft Ihre Lambda-Funktion auf, wenn eine neue Nachricht hinzugefügt wird.
Verwenden Sie den AWS CLI-Befehl create-event-source-mapping
aws lambda create-event-source-mapping --function-name ProcessSQSRecord --batch-size 10 \ --event-source-arn arn:aws:sqs:
us-east-1:111122223333:my-queue
Verwenden Sie den Befehl list-event-source-mappings
aws lambda list-event-source-mappings --function-name ProcessSQSRecord
Senden einer Testnachricht
So senden Sie eine Amazon-SQS-Nachricht an die Lambda-Funktion
-
Öffnen Sie die Amazon-SQS-Konsole
. -
Wählen Sie die Warteschlange aus, die Sie zuvor erstellt haben.
-
Wählen Sie Nachrichten senden und empfangen.
-
Geben Sie unter Nachrichtentext eine Testnachricht ein (z. B. „Dies ist eine Testnachricht.“).
-
Klicken Sie auf Send Message (Nachricht senden).
Lambda fragt die Warteschlange nach Aktualisierungen ab. Wenn eine neue Nachricht vorliegt, ruft Lambda Ihre Funktion mit diesen neuen Ereignisdaten aus der Warteschlange auf. Wenn der Funktions-Handler ohne Ausnahmen zurückgegeben wird, betrachtet Lambda die Nachricht als erfolgreich verarbeitet und beginnt mit dem Lesen neuer Nachrichten in der Warteschlange. Nach erfolgreicher Verarbeitung einer Nachricht löscht Lambda diese automatisch aus der Warteschlange. Wenn der Handler eine Ausnahme auslöst, betrachtet Lambda den Nachrichten-Batch als nicht erfolgreich verarbeitet und Lambda ruft die Funktion mit demselben Nachrichten-Batch auf.
Überprüfen der CloudWatch-Protokolle
So vergewissern Sie sich, dass die Funktion die Nachricht verarbeitet hat
Öffnen Sie die Seite Funktionen
der Lambda-Konsole. -
Wählen Sie die Funktion ProcessSQSRecord aus.
-
Wählen Sie Überwachen aus.
-
Wählen Sie View CloudWatch logs (CloudWatch-Protokolle anzeigen).
-
Wählen Sie in der CloudWatch-Konsole den Protokollstream für die Funktion aus.
-
Suchen Sie das Protokoll
INFO
. Dort protokolliert die Lambda-Funktion den Nachrichtentext. Sie sollten die Nachricht sehen, die Sie über die Amazon-SQS-Warteschlange gesendet haben. Beispiel:2023-09-11T22:49:12.730Z b0c41e9c-0556-5a8b-af83-43e59efeec71 INFO
Processed message this is a test message.
Bereinigen Ihrer Ressourcen
Sie können jetzt die Ressourcen, die Sie für dieses Tutorial erstellt haben, löschen, es sei denn, Sie möchten sie behalten. Durch das Löschen von AWS-Ressourcen, die Sie nicht mehr verwenden, können Sie verhindern, dass unnötige Gebühren in Ihrem AWS-Konto-Konto anfallen.
So löschen Sie die Ausführungsrolle
-
Öffnen Sie die Seite Roles
in der IAM-Konsole. -
Wählen Sie die von Ihnen erstellte Ausführungsrolle aus.
-
Wählen Sie Löschen.
-
Geben Sie den Namen der Rolle in das Texteingabefeld ein und wählen Sie Delete (Löschen) aus.
So löschen Sie die Lambda-Funktion:
-
Öffnen Sie die Seite Funktionen
der Lambda-Konsole. -
Wählen Sie die Funktion aus, die Sie erstellt haben.
-
Wählen Sie Aktionen, Löschen aus.
-
Geben Sie
delete
in das Texteingabefeld ein und wählen Sie Delete (Löschen) aus.
So löschen Sie die Amazon-SQS-Warteschlange
-
Melden Sie sich bei AWS Management Console an und öffnen Sie die Amazon-SQS-Konsole unter https://console.aws.amazon.com/sqs/
. -
Wählen Sie die Warteschlange aus, die Sie erstellt haben.
-
Wählen Sie Löschen.
-
Geben Sie
confirm
in das Texteingabefeld ein. -
Wählen Sie Löschen.