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.
Erfassung von Aufzeichnungen asynchroner Lambda-Aufrufe
Lambda kann Aufzeichnungen von asynchronen Aufrufen an einen der folgenden Server senden. AWS -Services
-
Amazon SQS — Eine SQS Standardwarteschlange.
-
Amazon SNS — Ein SNS Standardthema.
-
AWS Lambda – Eine Lambda-Funktion.
-
Amazon EventBridge — Ein EventBridge Eventbus.
Der Aufrufdatensatz enthält Details zur Anfrage und Antwort im JSON Format. Sie können separate Ziele für Ereignisse konfigurieren, die erfolgreich verarbeitet werden, und für Ereignisse, bei denen alle Verarbeitungsversuche fehlschlagen. Alternativ können Sie eine SQS Amazon-Standardwarteschlange oder ein standardmäßiges SNS Amazon-Thema als Warteschlange für verworfene Ereignisse konfigurieren. Für Warteschlangen für unzustellbare Nachrichten sendet Lambda nur den Inhalt des Ereignisses ohne Details zur Antwort.
Wenn Lambda einen Datensatz nicht an ein von Ihnen konfiguriertes Ziel senden kann, sendet es eine DestinationDeliveryFailures
Metrik an Amazon CloudWatch. Dies kann passieren, wenn Ihre Konfiguration einen Zieltyp enthält, der nicht unterstützt wird, z. B. eine SQS FIFO Amazon-Warteschlange oder ein SNS FIFO Amazon-Thema. Zustellungsfehler können auch aufgrund von Berechtigungsfehlern und Größenbeschränkungen auftreten. Weitere Informationen zu Lambda-Aufrufmetriken finden Sie unter Aufrufmetriken.
Anmerkung
Um zu verhindern, dass eine Funktion ausgelöst wird, können Sie die reservierte Parallelität der Funktion auf Null setzen. Wenn Sie die reservierte Parallelität für eine asynchron aufgerufene Funktion auf Null setzen, sendet Lambda sofort und ohne Wiederholungsversuche alle Ereignisse ohne erneute Versuche an die konfigurierte Warteschlange für unzustellbare Nachrichten oder an das Ereignisziel bei Fehlern. Um Ereignisse zu verarbeiten, die gesendet wurden, während die reservierte Parallelität auf Null gesetzt war, müssen Sie die Ereignisse aus der Warteschlange für unzustellbare Nachrichten oder dem Ereignisziel bei Fehlern verarbeiten.
Konfigurieren von Zielen für den asynchronen Aufruf
Um Datensätze der asynchronen Aufrufe beizubehalten, fügen Sie Ihrer Funktion ein Ziel hinzu. Sie können wählen, ob erfolgreiche Aufrufe oder fehlgeschlagene Aufrufe an ein Ziel gesendet werden sollen. Jede Funktion kann mehrere Ziele haben, sodass Sie separate Ziele für erfolgreiche und fehlgeschlagene Ereignisse konfigurieren können. Jeder Datensatz, der an das Ziel gesendet wird, ist ein JSON Dokument mit Details zum Aufruf. Wie Einstellungen zur Fehlerbehandlung können Sie Ziele für eine Funktion, eine Funktionsversion oder einen Alias konfigurieren.
In der folgenden Tabelle werden die unterstützten Ziele für Datensätze der asynchronen Aufrufen aufgelistet. Damit Lambda erfolgreich Datensätze an das von Ihnen ausgewählte Ziel senden kann, stellen Sie sicher, dass die Ausführungsrolle Ihrer Funktion auch die entsprechenden Berechtigungen enthält. In der Tabelle wird auch beschrieben, wie jeder Zieltyp den Aufrufdatensatz empfängt. JSON
Zieltyp | Erforderliche Berechtigung | Zielspezifisches Format JSON |
---|---|---|
SQSAmazon-Warteschlange |
Lambda übergibt den Aufrufdatensatz als |
|
SNSAmazon-Thema |
Lambda übergibt den Aufrufdatensatz als |
|
Lambda-Funktion |
Lambda übergibt den Aufrufdatensatz als Nutzlast in der Funktion. |
|
EventBridge |
|
Das folgende Beispiel zeigt einen Aufrufdatensatz für ein Ereignis, bei dem drei Verarbeitungsversuche aufgrund eines Funktionsfehlers fehlgeschlagen sind. Der Aufrufdatensatz enthält Details zum Ereignis, zur Antwort und zu dem Grund, warum der Datensatz gesendet wurde.
{ "version": "1.0", "timestamp": "2019-11-14T18:16:05.568Z", "requestContext": { "requestId": "e4b46cbf-b738-xmpl-8880-a18cdf61200e", "functionArn": "arn:aws:lambda:us-east-2:123456789012:function:my-function:$LATEST", "condition": "RetriesExhausted", "approximateInvokeCount": 3 }, "requestPayload": { "ORDER_IDS": [ "9e07af03-ce31-4ff3-xmpl-36dce652cb4f", "637de236-e7b2-464e-xmpl-baf57f86bb53", "a81ddca6-2c35-45c7-xmpl-c3a03a31ed15" ] }, "responseContext": { "statusCode": 200, "executedVersion": "$LATEST", "functionError": "Unhandled" }, "responsePayload": { "errorMessage": "RequestId: e4b46cbf-b738-xmpl-8880-a18cdf61200e Process exited before completing request" } }
In den folgenden Schritten wird beschrieben, wie Sie mithilfe der Lambda-Konsole ein Ziel für eine Funktion konfigurieren.
So konfigurieren Sie ein Ziel für Datensätze der asynchronen Aufrufe
Öffnen Sie die Seite Funktionen
der Lambda-Konsole. -
Wählen Sie eine Funktion aus.
-
Wählen Sie unter Function overview (Funktionsübersicht) die Option Add destination (Ziel hinzufügen).
-
Wählen Sie unter Source (Quelle) die Option Asynchronous invocation (Asynchroner Aufruf).
-
Wählen Sie unter Condition (Bedingung) eine der folgenden Optionen aus:
-
Bei Fehler – Es wird ein Datensatz gesendet, wenn das Ereignis alle Verarbeitungsversuche ausschöpft oder das maximale Alter überschreitet.
-
Bei Erfolg – Es wird ein Datensatz gesendet, wenn die Funktion einen asynchronen Aufruf erfolgreich verarbeitet.
-
-
Wählen Sie unter Destination type (Zieltyp) den Ressourcentyp aus, der den Aufrufdatensatz empfängt.
-
Wählen Sie unter Destination (Ziel) eine Ressource aus.
-
Wählen Sie Save (Speichern) aus.
Wenn ein Aufruf der Bedingung entspricht, sendet Lambda ein JSON Dokument mit Details zum Aufruf an das Ziel.
Zielspezifisches Format JSON
-
Für Amazon SQS und Amazon SNS (
SnsDestination
undSqsDestination
) wird der Aufrufdatensatz alsMessage
an das Ziel übergeben. -
Für Lambda (
LambdaDestination
) wird der Aufrufdatensatz als Nutzlast an die Funktion übergeben. -
Für EventBridge (
EventBridgeDestination
) wird der Aufrufdatensatz wiedetail
im PutEventsAufruf übergeben. Der Wert für dassource
-Ereignisfeld istlambda
. Der Wert für dasdetail-type
-Ereignisfeld ist entweder Lambda Function Invocation Result – Success (Ergebnis des Lambda-Funktionsaufrufs: Erfolgreich) oder Lambda Function Invocation Result – Failure (Ergebnis des Lambda-Funktionsaufrufs: Fehler). Dasresource
Ereignisfeld enthält die Funktion und das Ziel Amazon Resource Names (ARNs). Weitere Veranstaltungsbereiche finden Sie unter EventBridge Amazon-Veranstaltungen.
Das folgende Beispiel zeigt einen Aufrufdatensatz für ein Ereignis, bei dem drei Verarbeitungsversuche aufgrund eines Funktionsfehlers fehlgeschlagen sind.
Beispiel Aufrufdatensatzglauben
{ "version": "1.0", "timestamp": "2019-11-14T18:16:05.568Z", "requestContext": { "requestId": "e4b46cbf-b738-xmpl-8880-a18cdf61200e", "functionArn": "arn:aws:lambda:us-east-2:123456789012:function:my-function:$LATEST", "condition": "RetriesExhausted", "approximateInvokeCount": 3 }, "requestPayload": { "ORDER_IDS": [ "9e07af03-ce31-4ff3-xmpl-36dce652cb4f", "637de236-e7b2-464e-xmpl-baf57f86bb53", "a81ddca6-2c35-45c7-xmpl-c3a03a31ed15" ] }, "responseContext": { "statusCode": 200, "executedVersion": "$LATEST", "functionError": "Unhandled" }, "responsePayload": { "errorMessage": "RequestId: e4b46cbf-b738-xmpl-8880-a18cdf61200e Process exited before completing request" } }
Der Aufrufdatensatz enthält Details zum Ereignis, zur Antwort und zu dem Grund, warum der Datensatz gesendet wurde.
Zurückverfolgen von Anforderungen zu Zielen
Sie können AWS X-Ray verwenden, um eine verbundene Ansicht jeder Anforderung zu sehen, während sie in die Warteschlange gestellt, von einer Lambda-Funktion verarbeitet und an den Zielservice übergeben wird. Wenn Sie X-Ray-Tracing für eine Funktion oder einen Service aktivieren, der eine Funktion aufruft, fügt Lambda der Anforderung einen X-Ray-Header hinzu und übergibt den Header an den Zielservice. Traces von Upstream-Services werden automatisch mit Traces von Downstream-Lambda-Funktionen und Zieldiensten verknüpft, sodass eine end-to-end Ansicht der gesamten Anwendung entsteht. Weitere Informationen zum Tracing finden Sie unter Visualisieren Sie Lambda-Funktionsaufrufe mit AWS X-Ray.
Warteschlangen für unzustellbare Nachrichten
Als eine Alternativ zu einem Zielort bei Ausfall können Sie Ihre Funktion mit einer Warteschlangen für unzustellbare Nachrichten konfigurieren, um verworfene Ereignisse zur weiteren Verarbeitung zu speichern. Eine Warteschlange für unzustellbare Nachrichten fungiert genauso wie ein Ziel bei Ausfall, da sie verwendet wird, wenn alle Verarbeitungsversuche eines Ereignisses fehlschlagen oder ein Ereignis abläuft, ohne verarbeitet zu werden. Sie können jedoch nur auf Funktionsebene eine Warteschlange mit unerlaubten Buchstaben hinzufügen oder entfernen. Funktionsversionen verwenden dieselben Einstellungen für Warteschlangen mit unveröffentlichten Nachrichten ($). LATEST Ausfallziele unterstützen auch zusätzliche Ziele und enthalten Details zur Reaktion der Funktion im Aufrufdatensatz.
Um Ereignisse in einer Warteschlange für unzustellbare Nachrichten erneut zu verarbeiten, können Sie sie als Ereignisquelle für Ihre Lambda-Funktion festlegen. Alternativ können Sie die Ereignisse manuell abrufen.
Sie können eine SQS Amazon-Standardwarteschlange oder ein SNS Amazon-Standardthema für Ihre Warteschlange für unzustellbare Briefe wählen. FIFOWarteschlangen und SNS FIFO Amazon-Themen werden nicht unterstützt. Wenn Sie über keine Warteschlangen oder Themen verfügen, erstellen Sie sie. Wählen Sie den Zieltyp aus, der Ihrem Anwendungsfall entspricht.
-
SQSAmazon-Warteschlange — In einer Warteschlange werden fehlgeschlagene Ereignisse gespeichert, bis sie abgerufen werden. Wählen Sie eine SQS Amazon-Standardwarteschlange, wenn Sie erwarten, dass eine einzelne Entität, z. B. eine Lambda-Funktion oder ein CloudWatch Lambda-Alarm, das fehlgeschlagene Ereignis verarbeitet. Weitere Informationen finden Sie unter Lambda mit Amazon verwenden SQS.
Erstellen Sie eine Warteschlange in der SQSAmazon-Konsole
. -
SNSAmazon-Thema — Ein Thema leitet fehlgeschlagene Ereignisse an ein oder mehrere Ziele weiter. Wählen Sie ein SNS Amazon-Standardthema, wenn Sie davon ausgehen, dass mehrere Entitäten auf ein fehlgeschlagenes Ereignis reagieren werden. Sie können beispielsweise ein Thema so konfigurieren, dass Ereignisse an eine E-Mail-Adresse, eine Lambda-Funktion und/oder einen HTTP Endpunkt gesendet werden. Weitere Informationen finden Sie unter Aufrufen von Lambda-Funktionen mit Amazon SNS SNS-Benachrichtigungen.
Erstellen Sie ein Thema in der SNSAmazon-Konsole
.
Um Ereginisse an eine Warteschlange oder an ein Thema zu senden, benötigt Ihre Funktion zusätzliche Berechtigungen. Fügen Sie eine Richtlinie mit den erforderlichen Berechtigungen zur Ausführungsrolle Ihrer Funktion hinzu.
-
Amazon SQS — sqs: SendMessage
-
Amazon SNS — SNS:Publish
Wenn die Zielwarteschlange oder das Thema mit einem vom Kunden verwalteten Schlüssel verschlüsselt ist, muss die Ausführungsrolle auch ein Benutzer in der ressourcenbasierten Richtliniedes Schlüssels sein.
Nachdem das Ziel erstellt und die Ausführungsrolle Ihrer Funktion aktualisiert wurde, fügen Sie die Warteschlange für unzustellbare Nachrichten zu Ihrer Funktion hinzu. Sie können mehrere Funktionen zum Senden von Ereignissen an dasselbe Ziel konfigurieren.
So konfigurieren Sie eine Warteschlange für unzustellbare Nachrichten
-
Öffnen Sie die Seite Funktionen
der Lambda-Konsole. -
Wählen Sie eine Funktion aus.
-
Wählen Sie „Konfiguration“ und dann „Asynchroner Aufruf“ aus.
-
Wählen Sie unter Asynchronous invocation (Asynchroner Aufruf) die Option Edit (Bearbeiten).
-
Stellen Sie die DLQRessource auf Amazon SQS oder Amazon einSNS.
-
Wählen Sie die Ziel-Warteschlange oder das Ziel-Thema aus.
-
Wählen Sie Save (Speichern) aus.
Verwenden Sie den Befehl, um eine Warteschlange für unzustellbare Briefe mit dem AWS CLI zu konfigurieren. update-function-configuration
aws lambda update-function-configuration --function-name my-function \ --dead-letter-config TargetArn=
arn:aws:sns:us-east-2:123456789012:my-topic
Lambda sendet das Ereignis mit zusätzlichen Informationen in den Attributen an die Warteschlange für unzustellbare Nachrichten. Sie können anhand dieser Informationen den von der Funktion zurückgegebenen Fehler erkennen oder das Ereignis mit Protokollen oder einer AWS X-Ray -Ablaufverfolgung korrelieren.
Nachrichtenattribute der Warteschlange für unzustellbare Nachrichten
-
RequestID (Zeichenfolge) – Die ID der Aufrufanforderung. Die Anfrage IDs wird in den Funktionsprotokollen angezeigt. Sie können das X-Ray auch verwendenSDK, um die Anforderungs-ID für ein Attribut im Trace aufzuzeichnen. Anschließend können Sie anhand der Anforderungs-ID in der X-Ray-Konsole nach Spuren suchen.
-
ErrorCode(Nummer) — Der HTTP Statuscode.
-
ErrorMessage(String) — Die ersten 1 KB der Fehlermeldung.
Wenn Lambda keine Nachricht an die Warteschlange für unzustellbare Briefe senden kann, löscht es das Ereignis und gibt die Metrik aus. DeadLetterErrors Dies kann bei mangelnden Berechtigungen passieren oder wenn die Gesamtgröße der Nachricht den Grenzwert der Zielwarteschlange oder des Ziel-Themas überschreitet. Nehmen wir zum Beispiel an, dass eine SNS Amazon-Benachrichtigung mit einem Text von fast 256 KB eine Funktion auslöst, die zu einem Fehler führt. In diesem Fall können die von Amazon SNS hinzugefügten Ereignisdaten in Kombination mit den von Lambda hinzugefügten Attributen dazu führen, dass die Nachricht die maximal zulässige Größe in der Warteschlange für unzustellbare Briefe überschreitet.
Wenn Sie Amazon SQS als Ereignisquelle verwenden, konfigurieren Sie eine Warteschlange für unzustellbare Briefe in der SQS Amazon-Warteschlange selbst und nicht in der Lambda-Funktion. Weitere Informationen finden Sie unter Lambda mit Amazon verwenden SQS.