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-Ereignisfunktion, die Nachrichten aus einer Amazon Simple Queue Service (Amazon SQS) -Warteschlange verarbeitet. Die Lambda-Ereignisfunktion wird immer dann 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-Ereignisfunktion, die Nachrichten in CloudWatch Logs schreibt.
-
Erstellen einer Amazon SQS-Warteschlange
-
Erstellen Sie eine Zuordnung von Ereignisquellen in Lambda. Die Zuordnung der Ereignisquelle liest die Amazon SQS SQS-Warteschlange und ruft Ihre Lambda-Ereignisfunktion auf, wenn eine neue Nachricht hinzugefügt wird.
-
Testen Sie das Setup, indem Sie Nachrichten zu Ihrer Warteschlange hinzufügen und die Ergebnisse in Logs überwachen. CloudWatch
Voraussetzungen
Wenn Sie das noch nicht installiert haben AWS Command Line Interface, folgen Sie den Schritten unter Installieren oder Aktualisieren der neuesten Version von AWS CLI, um es 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 Windows-integrated 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-Ereignisfunktion Zugriffsberechtigungen AWS-Services und Ressourcen gewährt. Damit Ihre Funktion Elemente aus Amazon SQS lesen kann, fügen Sie die AWSLambdaSQSQueueExecutionRoleBerechtigungsrichtlinie bei.
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 aus.
-
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 aus.
-
Geben Sie im Suchfeld Berechtigungsrichtlinien die Zeichenfolge
AWSLambdaSQSQueueExecutionRoleein. -
Wählen Sie die AWSLambdaSQSQueueExecutionRoleRichtlinie aus und klicken Sie dann auf Weiter.
-
Geben Sie unter Rollendetails für Rollenname den Namen
lambda-sqs-roleein 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 Sie die Event-Funktion
Erstellen Sie eine Lambda-Ereignisfunktion, die Ihre Amazon SQS SQS-Nachrichten verarbeitet. Der Funktionscode protokolliert den Hauptteil der Amazon SQS-Nachricht in CloudWatch Logs.
Dieses Tutorial verwendet die Node.js 24-Runtime, aber wir haben auch Beispielcode in anderen Runtime-Sprachen bereitgestellt. 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, befindet sich im ersten Beispiel, das auf der JavaScriptRegisterkarte angezeigt wird.
So erstellen Sie eine Node.js Lambda-Ereignisfunktion
-
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-Ereignisfunktion mit dem Befehl AWS CLI create-function
. Geben Sie für den role-Parameter den ARN der Ausführungsrolle ein, die Sie zuvor erstellt haben.Anmerkung
Die Lambda-Ereignisfunktion und die Amazon SQS SQS-Warteschlange müssen sich in derselben befinden. AWS-Region
aws lambda create-function --function-name ProcessSQSRecord \ --zip-file fileb://function.zip --handler index.handler --runtime nodejs24.x \--role arn:aws:iam::111122223333:role/lambda-sqs-role
Testen Sie die Event-Funktion
Rufen Sie Ihre Lambda-Ereignisfunktion manuell mit dem invoke AWS CLI Befehl und einem Amazon SQS SQS-Beispielereignis auf.
So rufen Sie die Lambda-Ereignisfunktion mit einem Beispielereignis auf
-
Speichern Sie die folgende JSON als Datei mit dem Namen
input.json. Dieses JSON simuliert ein Ereignis, das Amazon SQS möglicherweise an Ihre Lambda-Ereignisfunktion sendet, die die eigentliche Nachricht aus der Warteschlange"body"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 Invoke-Befehl aus.
AWS CLI Dieser Befehl gibt CloudWatch Logs in der Antwort zurück. 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 --decodeDie 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-outaus. 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. Hier protokolliert die Lambda-Ereignisfunktion 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 SQS-Warteschlange, die die Lambda-Ereignisfunktion als Ereignisquelle verwenden kann. Die Lambda-Ereignisfunktion und die Amazon SQS SQS-Warteschlange müssen sich in derselben befinden. AWS-Region
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 dies im nächsten Schritt, wenn Sie die Warteschlange mit Ihrer Lambda-Ereignisfunktion verknüpfen.
Konfigurieren der Ereignisquelle
Connect die Amazon SQS SQS-Warteschlange mit Ihrer Lambda-Ereignisfunktion, indem Sie eine Ereignisquellenzuordnung erstellen. Die Zuordnung der Ereignisquelle liest die Amazon SQS SQS-Warteschlange und ruft Ihre Lambda-Ereignisfunktion auf, wenn eine neue Nachricht hinzugefügt wird.
Verwenden Sie den Befehl create-event-source-mapping, um eine Zuordnung zwischen Ihrer Amazon SQS SQS-Warteschlange und Ihrer Lambda Event Function zu erstellen
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
Um eine Amazon SQS SQS-Nachricht an die Lambda Event Function zu senden
-
Ö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 Sie die Protokolle CloudWatch
Um zu bestätigen, dass die Event Function die Nachricht verarbeitet hat
Öffnen Sie die Seite Event Functions
der Lambda-Konsole. -
Wählen Sie die Funktion ProcessSQSRecord aus.
-
Wählen Sie Überwachen aus.
-
Wählen Sie CloudWatch Protokolle anzeigen aus.
-
Wählen Sie in der CloudWatch Konsole den Protokollstream für die Funktion aus.
-
Suchen Sie das Protokoll
INFO. Hier protokolliert die Lambda-Ereignisfunktion 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 INFOProcessed 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, vermeiden Sie unnötige Kosten für Ihre AWS-Konto.
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 aus.
-
Geben Sie den Namen der Rolle in das Texteingabefeld ein und wählen Sie Delete (Löschen) aus.
Um die Lambda-Ereignisfunktion zu löschen
-
Öffnen Sie die Seite Event Functions
der Lambda-Konsole. -
Wählen Sie die Ereignisfunktion aus, die Sie erstellt haben.
-
Wählen Sie Aktionen, Löschen aus.
-
Geben Sie
confirmin das Texteingabefeld ein und wählen Sie Delete (Löschen) aus.
So löschen Sie die Amazon-SQS-Warteschlange
-
Melden Sie sich bei der an AWS-Managementkonsole und öffnen Sie die Amazon SQS SQS-Konsole unter https://console.aws.amazon.com/sqs/
. -
Wählen Sie die Warteschlange aus, die Sie erstellt haben.
-
Wählen Sie Löschen aus.
-
Geben Sie
confirmin das Texteingabefeld ein. -
Wählen Sie Löschen aus.