Lambda-Laufzeiten-API - AWS Lambda

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.

Lambda-Laufzeiten-API

AWS Lambda stellt eine HTTP-API für benutzerdefinierte Laufzeiten bereit, um Aufrufereignisse aus Lambda zu erhalten und Antwortdaten innerhalb der Lambda-Ausführungsumgebung zurückzusenden.

Architekturdiagramm der Ausführungsumgebung.

Die OpenAPI-Spezifikation für die Laufzeit-API-Version 2018-06-01 ist unter runtime-api.zip verfügbar.

Um eine API-Anforderungs-URL zu erstellen, rufen Laufzeitumgebungen den API-Endpunkt aus der AWS_LAMBDA_RUNTIME_API-Umgebungsvariablen ab, fügen die API-Version und dann den gewünschten Ressourcenpfad hinzu.

Beispiel Anforderung
curl "http://${AWS_LAMBDA_RUNTIME_API}/2018-06-01/runtime/invocation/next"

Nächster Aufruf

Pfad/runtime/invocation/next

MethodeGET

Die Laufzeit sendet diese Meldung an Lambda, um ein Aufrufereignis anzufordern. Der Antworttext enthält die Nutzlast aus dem Aufruf. Dabei handelt es sich um ein JSON-Dokument, das Ereignisdaten aus dem Funktionsauslöser enthält. Die Antwort-Header enthalten zusätzliche Daten zum Aufruf.

Antwort-Header
  • Lambda-Runtime-Aws-Request-Id – Die Anforderungs-ID, mit der die Anforderung identifiziert wird, die den Aufruf der Funktion ausgelöst hat.

    Beispiel, 8476a536-e9f4-11e8-9739-2dfe598c3fcd.

  • Lambda-Runtime-Deadline-Ms – Das Datum, an dem eine Zeitüberschreitung für die Funktion eintritt (in Unix-Millisekunden).

    Beispiel, 1542409706888.

  • Lambda-Runtime-Invoked-Function-Arn – Der ARN der/des Lambda-Funktion, -Version oder -Alias, die/der im Aufruf angegeben ist.

    Beispiel, arn:aws:lambda:us-east-2:123456789012:function:custom-runtime.

  • Lambda-Runtime-Trace-Id – Der AWS X-Ray-Nachverfolgungs-Header.

    Beispiel, Root=1-5bef4de7-ad49b0e87f6ef6c87fc2e700;Parent=9a9197af755a6419;Sampled=1.

  • Lambda-Runtime-Client-Context – Für Aufrufe aus dem AWS Mobile SDK, Daten zur Clientanwendung und Daten zum Gerät.

  • Lambda-Runtime-Cognito-Identity – Für Aufrufe aus dem AWS Mobile SDK, Daten zum Amazon-Cognito-Identitätsanbieter.

Legen Sie kein Timeout für die GET-Anfrage fest, da sich die Antwort verzögern könnte. Zwischen dem Bootstrap der Laufzeit durch Lambda und der Rückgabe eines Ereignisses durch die Laufzeit ist der Laufzeitprozess möglicherweise für mehrere Sekunden eingefroren.

Die Anforderungs-ID verfolgt den Aufruf innerhalb von Lambda nach. Sie verwenden sie, um den Aufruf anzugeben, wenn Sie die Antwort senden.

Der Nachverfolgungs-Header enthält die Nachverfolgungs-ID, die ID des übergeordneten Segments und die Erfassungsentscheidung Wenn die Anforderung erfasst wurde, wurde die Anforderung von Lambda oder einem Upstream-Service erfasst. Die Laufzeit sollte die _X_AMZN_TRACE_ID auf den Wert des Headers festlegen. Das X-Ray SDK liest dies, um die IDs abzurufen und festzulegen, ob die Anforderung nachverfolgt werden soll.

Aufrufantwort

Pfad/runtime/invocation/AwsRequestId/response

MethodePOST

Nachdem die Funktion bis zum Abschluss ausgeführt wurde, schickt die Laufzeitumgebung eine Aufrufantwort an Lambda. Im Fall synchroner Aufrufe schickt Lambda die Antwort anschließend an den Client zurück.

Beispiel Erfolg für Anforderung
REQUEST_ID=156cb537-e2d4-11e8-9b34-d36013741fb9 curl "http://${AWS_LAMBDA_RUNTIME_API}/2018-06-01/runtime/invocation/$REQUEST_ID/response" -d "SUCCESS"

Initialisierungsfehler

Wenn die Funktion einen Fehler zurückgibt oder die Laufzeit während der Initialisierung auf einen Fehler stößt, verwendet die Laufzeit diese Methode, um den Fehler an Lambda zu melden.

Pfad/runtime/init/error

MethodePOST

Header

Lambda-Runtime-Function-Error-Type – Der Fehlertyp, auf den die Laufzeit gestoßen ist. Erforderlich: Nein.

Dieser Header besteht aus einem Zeichenfolgen-Wert. Lambda akzeptiert jede Zeichenfolge, aber wir empfehlen ein Format von <category.reason>. Beispielsweise:

  • Laufzeit.NoSuchHandler

  • Laufzeit.APIKeyNotFound

  • Laufzeit.ConfigInvalid

  • Laufzeit.UnknownReason

Body-Parameter

ErrorRequest – Informationen über den Fehler. Erforderlich: Nein

Dieses Feld ist ein JSON-Objekt mit der folgenden Struktur:

{ errorMessage: string (text description of the error), errorType: string, stackTrace: array of strings }

Beachten Sie, dass Lambda jeden Wert für errorType akzeptiert.

Das folgende Beispiel zeigt eine Lambda-Funktionsfehlermeldung, in der die Funktion die im Aufruf bereitgestellten Ereignisdaten nicht analysieren konnte.

Beispiel Funktionsfehler
{ "errorMessage" : "Error parsing event data.", "errorType" : "InvalidEventDataException", "stackTrace": [ ] }
Antworttextparameter:
  • StatusResponse – Zeichenfolge. Statusinformationen, gesendet mit 202 Antwortcodes.

  • ErrorResponse – Zusätzliche Fehlerinformationen, die mit den Fehlerantwortcodes gesendet werden. ErrorResponse enthält einen Fehlertyp und eine Fehlermeldung.

Antwortcodes
  • 202 – Akzeptiert

  • 403 – Verboten

  • 500 – Container-Fehler. Nicht wiederherstellbarer Zustand. Die Laufzeit sollte umgehend beendet werden.

Beispiel Initialisierungsfehleranforderung
ERROR="{\"errorMessage\" : \"Failed to load function.\", \"errorType\" : \"InvalidFunctionException\"}" curl "http://${AWS_LAMBDA_RUNTIME_API}/2018-06-01/runtime/init/error" -d "$ERROR" --header "Lambda-Runtime-Function-Error-Type: Unhandled"

Aufruffehler

Wenn die Funktion einen Fehler zurückgibt oder die Laufzeit auf einen Fehler stößt, verwendet die Laufzeitumgebung diese Methode, um den Fehler an Lambda zu melden.

Pfad/runtime/invocation/AwsRequestId/error

MethodePOST

Header

Lambda-Runtime-Function-Error-Type – Der Fehlertyp, auf den die Laufzeit gestoßen ist. Erforderlich: Nein.

Dieser Header besteht aus einem Zeichenfolgen-Wert. Lambda akzeptiert jede Zeichenfolge, aber wir empfehlen ein Format von <category.reason>. Beispielsweise:

  • Laufzeit.NoSuchHandler

  • Laufzeit.APIKeyNotFound

  • Laufzeit.ConfigInvalid

  • Laufzeit.UnknownReason

Body-Parameter

ErrorRequest – Informationen über den Fehler. Erforderlich: Nein

Dieses Feld ist ein JSON-Objekt mit der folgenden Struktur:

{ errorMessage: string (text description of the error), errorType: string, stackTrace: array of strings }

Beachten Sie, dass Lambda jeden Wert für errorType akzeptiert.

Das folgende Beispiel zeigt eine Lambda-Funktionsfehlermeldung, in der die Funktion die im Aufruf bereitgestellten Ereignisdaten nicht analysieren konnte.

Beispiel Funktionsfehler
{ "errorMessage" : "Error parsing event data.", "errorType" : "InvalidEventDataException", "stackTrace": [ ] }
Antworttextparameter:
  • StatusResponse – Zeichenfolge. Statusinformationen, gesendet mit 202 Antwortcodes.

  • ErrorResponse – Zusätzliche Fehlerinformationen, die mit den Fehlerantwortcodes gesendet werden. ErrorResponse enthält einen Fehlertyp und eine Fehlermeldung.

Antwortcodes
  • 202 – Akzeptiert

  • 400 – Ungültige Anfrage

  • 403 – Verboten

  • 500 – Container-Fehler. Nicht wiederherstellbarer Zustand. Die Laufzeit sollte umgehend beendet werden.

Beispiel Fehler für Anforderung
REQUEST_ID=156cb537-e2d4-11e8-9b34-d36013741fb9 ERROR="{\"errorMessage\" : \"Error parsing event data.\", \"errorType\" : \"InvalidEventDataException\"}" curl "http://${AWS_LAMBDA_RUNTIME_API}/2018-06-01/runtime/invocation/$REQUEST_ID/error" -d "$ERROR" --header "Lambda-Runtime-Function-Error-Type: Unhandled"