View a markdown version of this page

Fehlerbehebung bei Lambda-Webfunktionen - 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.

Fehlerbehebung bei Lambda-Webfunktionen

Beginnen Sie mit dem Ressourcenstatus, der HTTP-Antwort und den Protokollen für die Anfrage. Webfunktionen stellen einen separaten Status für die Funktion, die Revision, den Endpunkt und jede Region eines MultiRegion PerRegion OR-Endpunkts bereit. Ein Ausfall einer Ressource ändert nicht immer den Status der anderen.

Anmerkung

Bevor Sie die Diagnosebefehle in diesem Thema ausführen, stellen Sie sicher, dass Sie AWS CLI Zugriff und die Berechtigung zum Aufrufen der Lambda Web get-* Function-Operationen haben.

Sammeln von Diagnoseinformationen

  1. Rufen Sie die Webfunktion, die Version und den Endpunkt ab. Notieren Sie jeden statestateReason,updateStatus, und updateStatusReason Wert.

    aws lambda-web get-web-function \ --function-name my-web-app aws lambda-web get-web-function-revision \ --function-name my-web-app \ --revision-id revision-id aws lambda-web get-web-function-endpoint \ --function-name my-web-app \ --endpoint-name prod

    my-web-appErsetzen Sie es durch Ihren Funktionsnamen, revision-id durch die zu prüfende Revision und prod durch Ihren Endpunktnamen.

  2. Senden Sie eine Anfrage und notieren Sie den Statuscode und die Antwortheader.

    curl --include https://endpoint-domain/path

    Der lambda-web-request-id Header identifiziert die Anfrage. Falls vorhanden, identifiziert der lambda-web-logstream Header den Amazon CloudWatch Logs-Protokollstream, der die Anfrage bearbeitet hat, und der lambda-web-error-type Header identifiziert einen Plattformfehler.

  3. Überprüfen Sie die Anwendungs- und Systemprotokolle in der zentralen Protokollgruppe in der Heimatregion der Web-Funktion. Informationen zu Protokollgruppennamen und Anleitungen zur Korrelation finden Sie unterWebfunktionsprotokolle in Amazon CloudWatch Logs.

  4. Überprüfen Sie für MultiRegion und PerRegion Endpunkte jeden Eintrag inregionalEndpoints. Ein erfolgreicher Status auf Endpunktebene bedeutet nicht, dass das letzte Update in jeder Region erfolgreich war.

Probleme bei der Bereitstellung und beim Start

Symptom Was muss überprüft werden Auflösung
Eine Revision ist Failed Die RevisionstateReason, die referenzierte Amazon S3 S3-Objektversion, die Bucket-Richtlinie, die Ausführungsrolle, die Laufzeit und der AWS KMS Schlüssel. Korrigieren Sie die zugrunde liegende Konfiguration und erstellen Sie eine neue Revision. Revisionen sind unveränderlich, und eine fehlgeschlagene Revision kehrt nicht zurück zu. Active
Der Endpunkt ist esActive, aber Anfragen schlagen beim Start der Anwendung fehl System- und Anwendungsprotokolle für Eingabedateifehler, Abhängigkeitsfehler oder einen Server, der nie zuhört. AWS_LAMBDA_HTTP_ENDPOINT Führen Sie die verpackte Anwendung lokal aus, überprüfen Sie die Eingabedatei und die Produktionsabhängigkeiten und hören Sie genau den Host und Port ab, den Lambda bereitstellt. Stellen Sie die Korrektur als neue Revision bereit.
Ein Endpunkt-Update schlägt fehl updateStatusReasonauf dem Endpunkt und, für MultiRegion PerRegion Endpunkte, auf jedem regionalen Eintrag. Korrigieren Sie den gemeldeten Abhängigkeits- oder Regionalfehler und rufen Sie dann UpdateWebFunctionEndpoint erneut an, um das Update erneut zu versuchen.
does not have s3:GetObject auf create-web-function-revision Der Code wird aus Amazon S3 gelesen, und entweder der Bucket-Richtlinie oder der Identitätsrichtlinie des Aufrufers fehlt der Lesezugriff. Grant s3:GetObject und sowohl s3:GetObjectVersion in der Bucket-Richtlinie (für den Lambda-Service) als auch in der Identitätsrichtlinie des Aufrufers.
AccessDenied auf get-web-function-endpoint Die IAM-Richtlinie Resource beinhaltet nicht den Endpunkt. web-function/name/*In die Richtlinie Resource aufnehmen.

Um wiederholte Bereitstellungsfehler zu vermeiden, überprüfen Sie die Konfiguration und den Start in einer Testrevision, bevor Sie eine Produktionsrevision erstellen.

CLI- und Paketfehler

Fehler oder Symptom Ursache Auflösung
invalid choice: lambda-web Die installierte Version ist AWS CLI älter als die Befehle der Webfunktion. Aktualisieren Sie die AWS CLI und überprüfen Sie, ob die Web Function-Operationen aws lambda-web help aufgeführt sind.
Unknown parameter: BuildConfig Die Anfrage verwendet PascalCase Mitgliedsnamen. Verwenden Sie die in diesem Handbuch aufgeführten Mitglieder der CamelCase-Anfrage, z. B. buildConfigcodeConfig, und. serviceConfig
Cannot find module '/var/task/index.js' Die erforderliche Eintragsdatei fehlt im Archivstamm. index.jsIm Stammverzeichnis des Bereitstellungspakets platzieren. Schließt alle importierten Dateien und Produktionsabhängigkeiten ein.
ERR_MODULE_NOT_FOUNDfür eine Anwendungsdatei Das Archiv lässt eine Quell- oder Build-Datei aus, die von index.js importiert wurde. Untersuchen Sie das Archiv mitunzip -l, fügen Sie die fehlende Datei hinzu und erstellen Sie eine neue Version.
Application.TimeoutListenError, oder HTTP 502 bei der ersten Anfrage Die Anwendung überwacht eine reine Loopback-Adresse, z. B. 127.0.0.1 oderlocalhost, oder einen anderen Port als den in. AWS_LAMBDA_HTTP_ENDPOINT Analysiert AWS_LAMBDA_HTTP_ENDPOINT und überwacht genau diesen Host und Port.
EMFILE oder too many open files Die Anwendung gibt bei gleichzeitigen Anfragen Sockets, Dateien oder Datenbankverbindungen preis. Schließt anforderungsspezifische Handles, gebundene Verbindungspools und überwacht offene Handles bei anhaltender Parallelität.
JavaScript heap out of memory Die Anwendung hat das standardmäßige V8-Heap-Limit erreicht, das unter dem Speicherlimit von 2 GB der Ausführungsumgebung liegt, oder gleichzeitige Anfragen haben den verbleibenden Umgebungsspeicher erschöpft. Suchen Sie nach beibehaltenen Objekten und unbegrenzten Caches und reduzieren Sie die Parallelität. Wenn die Anwendung einen größeren Heap benötigt, legen Sie mit in ein größeres V8-Heap-Limit fest. --max-old-space-size NODE_OPTIONS Lassen Sie Speicherplatz für Puffer, systemeigene Zuweisungen und die Laufzeit übrig.
AbhängigkeitCannot find module//ERR_MODULE_NOT_FOUNDzur Laufzeit node_moduleswar nicht im Bereitstellungspaket enthalten. Installieren Sie Produktionsabhängigkeiten und nehmen Sie sie in das Paket auf: führen Sie npm ci --omit=dev es aus und bestätigen Sie dann mitunzip -l function.zip.
Statische Dateien geben HTTP 404 zurück Die Anwendung löst Dateipfade relativ zum Arbeitsverzeichnis auf, oder die Dateien wurden nicht gepackt. Löst Pfade aus dem Modulverzeichnis (__dirnamein CommonJS- oder import.meta.dirname ES-Modulen) auf und vergewissere dich, dass sich die Dateien im Paket mit befinden. unzip -l
ESM-Importfehler, z. B. „Die Importanweisung kann nicht außerhalb eines Moduls verwendet werden“ package.jsondeklariert den Modultyp nicht. Füge CommonJS "type": "module" package.json hinzu oder verwende es konsistent.

Fehler bei HTTP-Anfragen

Antwort Häufige Ursache Auflösung
HTTP 400 Der Client hat eine nicht unterstützte HTTP-Methode verwendet oder eine Anfrage gesendet, die der Endpunkt nicht verarbeiten konnte. Verwenden Sie eine unterstützte Methode und überprüfen Sie die Header und Grenzwerte der Anfrage in. HTTP-Anfragen und -Antworten
HTTP 403

Die Autorisierung einer IamAuth Anfrage ist aus einem der folgenden Gründe fehlgeschlagen:

  • Die Anfrage ist nicht signiert.

  • In der Anfrage wird der erforderliche Inhalts-Hash-Header weggelassen.

  • Die Anfrage hat eine ungültige Signatur.

  • Der Anrufer hat keine Erlaubnis. Bei kontoübergreifenden Anrufen fehlt möglicherweise entweder die Identitätsrichtlinie oder die ressourcenbasierte Richtlinie.

Vergewissern Sie sich, dass die Anfrage den erforderlichen X-Amz-Content-SHA256 Header enthält, überprüfen Sie die Signatur und überprüfen Sie lambda:InvokeWebFunctionEndpoint die erforderlichen Identitäts- und Ressourcenrichtlinien. Informationen zu den Signaturanforderungen finden Sie unterSignieren von Anforderungen. Informationen zu den Genehmigungsanforderungen finden Sie unterEinem Principal die Erlaubnis zum Aufrufen erteilen.
HTTP 404 Die Anwendung definiert die angeforderte Route nicht, oder der Client verwendet eine veraltete Endpunktdomäne. Der Host Header stimmt möglicherweise auch nicht mit der Endpunktdomäne überein. Wenn Sie eine Fronttür wie Amazon so konfigurieren CloudFront , dass sie den Host Header des Viewers an den Ursprung weiterleitet, gibt Lambda diesen Fehler mit der lambda-web-error-type Einstellung auf Platform.InvalidEndpoint zurück. Überprüfen Sie die aktuellen RoutendomainName, den Anforderungspfad und die Anwendungsrouten. Verwenden Sie lambda-web-error-type und protokollieren Sie, um eine Plattformantwort von einer Anwendungsantwort zu unterscheiden.
HTTP 409 Der Endpunkt ist es nichtActive, oder der Endpunkt wurde zu einer Revision aufgelöst, die es nicht istActive. Untersuchen Sie die Revision und den Endpunktstatus. Wenn der Endpunkt der Fall istPending, warten Sie und versuchen Sie es erneut. Wenn jaFailed, erstellen Sie einen neuen Endpunkt. Entfernen Sie bei Revisionen fehlgeschlagene oder inaktive Revisionen aus den Endpunkt-Gewichtungen und erstellen Sie bei Bedarf eine Ersatzversion.
HTTP 429

Einer der folgenden Punkte ist aufgetreten:

  • Die Anfrage hat ein Endpunkt-Ratenlimit überschritten.

  • Der Endpunkt hat keine Umgebungskapazität mehr.

  • Das Konto hat ein regionales Anforderungs- oder vCPU-Limit erreicht.

  • Zu viele Ausführungsumgebungen wurden gleichzeitig für den Endpunkt initialisiert.

Lesen Sie den lambda-web-error-type Header, um herauszufinden, welches Limit angewendet wurde. Siehe Fehlertypen der Webfunktion. Prüfen Sie die Drosselungskennzahlen (EndpointRequestThrottlesAccountRequestThrottles,EndpointActiveEnvironmentThrottles, undAccountActiveVCPUArm64Throttles), die Kennzahlen zur aktiven Kapazität, die Endpunkteinstellungen und die angewendeten Kontolimits. Durch die Drosselung (Platform.EndpointConcurrentInitThrottle) bei gleichzeitiger Initialisierung wird eine Drosselungsmetrik nicht erhöht. Versuchen Sie es mit Backoff und Jitter nur mit idempotenten Anfragen erneut.
HTTP 502 Ihre Anwendung ist ausgefallen, bevor sie mit der Bearbeitung von Anfragen begonnen hat, Lambda konnte die Ausführungsumgebung für Ihre Webfunktion nicht vorbereiten, oder Ihre Anwendung hat eine ungültige Antwort zurückgegeben. lambda-web-error-typeVerwendungs- und Systemprotokolle zur Identifizierung der Ursache. Siehe Fehlertypen der Webfunktion.
HTTP 503 Die Anwendung ist bei der Bearbeitung einer Anfrage abgestürzt, der Endpunkt ist deaktiviert oder Lambda konnte keine Kapazität abrufen oder die Anwendung erreichen. Verwenden Sielambda-web-error-type, sofern vorhanden, Anwendungs- und Systemprotokolle, um die Ursache zu ermitteln. Siehe Fehlertypen der Webfunktion. Ein 503 ohne lambda-web-error-type kann auf einen vorübergehenden Lastabwurf oder einen internen Fehler hinweisen. Versuchen Sie in beiden Fällen erneut, idempotente Anfragen mit Backoff und Jitter auszuführen.
HTTP 504 Die Anwendung hat innerhalb des Revisions-Timeouts (Runtime.RequestTimeout) nicht geantwortet. Überprüfen Sie die Revision timeoutSeconds und die Downstream-Latenz.
Andere HTTP 5.xx Die Anwendung hat den Status 5xx zurückgegeben, oder Lambda ist auf einen internen Fehler gestoßen (kein lambda-web-error-type Header). Verwenden Sie die Anforderungs-ID, den Log-Stream-Header, Anwendungsprotokolle und Systemprotokolle, um die Quelle zu identifizieren und den Zustand des Prozesses zu überprüfen.
Bei einem großen Upload bleibt die Anfrage hängen oder es kommt zu einem Timeout. In den Protokollen werden 0 empfangene Byte angezeigt Der Handler begann mit dem Schreiben der Antwort, während der Text der Anfrage noch eintraf. Der Anforderungspfad der Webfunktion ist Halbduplex: Lambda leitet den gesamten Anforderungstext weiter, bevor es die Antwort Ihrer Anwendung liefert. Lesen Sie den Anfragetext vollständig, bevor Sie die Antwort schreiben. Textkörper mit einer Größe von weniger als 1 MB passen in Socket-Puffer und können dies maskieren.

Grenzwerte für Header anfordern

Für Anforderungsheader gelten zwei Grenzwerte. Lambda begrenzt den Header-Block auf 128 KiB und lehnt größere Anfragen ab, bevor sie Ihre Funktion erreichen. Der Node.js HTTP-Server in Ihrer Funktion begrenzt auch die Anzahl der Header-Zeilen, die er akzeptiert. Beide geben HTTP 431 Request Header Fields Too Large zurück, wie in der folgenden Tabelle dargestellt. Informationen zu den Plattformbeschränkungen finden Sie unterHeader-Grenzwerte.

Symptom Ursache Auflösung
HTTP 431 mitlambda-web-error-type: Platform.HeaderTooLarge. Kein Aufruf und kein Eintrag im Anwendungsprotokoll. Der Anforderungskopf überschreitet 131.072 Byte (128 KiB), gemessen am gesamten Anforderungskopf, wenn der Client ihn sendet. Reduzieren Sie die Größe der Anforderungsheader. Dieses Limit kann nicht erhöht werden.
HTTP 431 mit lambda-web-request-id und lambda-web-logstream aber nein. lambda-web-error-type Der Handler läuft nicht. Die Anfrage hat mehr als 1.000 Header-Zeilen, wie sie vom Node.js Server empfangen wurden, einschließlich der Header, die Lambda hinzufügt. Erhöhen server.maxHeadersCount Sie Ihren Servercode oder reduzieren Sie die Anzahl der vom Client gesendeten Header-Zeilen.

Die Größenbeschränkung zählt jedes Byte des Anforderungskopfs, wenn der Client ihn sendet. Dazu gehören die Anforderungszeile, jede Header-Zeile (einschließlich Host aller Header, die die Client-Bibliothek hinzufügt) und die Zeilenabschlüsse. Header, die Lambda hinzufügt, werden nicht auf die Größenbeschränkung angerechnet.

Wenn eine Anforderung die Größenbeschränkung überschreitet, lehnt Lambda sie ab, bevor sie Ihre Funktion erreicht, sodass die Anforderung keinen Aufruf und keinen Eintrag im Anwendungsprotokoll erzeugt. Der lambda-web-error-type Antwort-Header identifiziert die Ursache.

Bei der Node.js Zählbegrenzung werden Kopfzeilen gezählt, keine eindeutigen Header-Namen. Ein Header, der dreimal wiederholt wird, zählt dreimal. Daher kann eine Anfrage, die Header sammelt x-forwarded-for oder über eine Kette von Proxys verfolgt, das Limit erreichen. Damit das passiert, muss kein einzelner Header ungewöhnlich aussehen. Das Limit wird anhand der Anfrage gemessen, die Ihre Funktion empfängt, einschließlich der von Lambda hinzugefügten Header. Das hat zur Folge, dass ein Client, der etwas weniger als 1.000 Header-Zeilen sendet, diesen Wert erreichen kann. In diesem Fall erreicht die Anfrage Ihre Ausführungsumgebung und der Node.js Server lehnt sie beim Parsen ab. Ihr Handler läuft nicht. Die Antwort enthält die lambda-web-logstream Header lambda-web-request-id und, aber sie enthält nicht den lambda-web-error-type Header.

Wenn Ihre Anwendung mehr Kopfzeilen akzeptieren muss, als die Node.js Standardeinstellung zulässt, erhöhen Sie das Node.js Limit in Ihrem Servercode. Stellen Sie server.maxHeadersCount die Anzahl der Kopfzeilen ein, die akzeptiert werden sollen, oder setzen Sie sie auf, 0 um die Node.js Zählprüfung zu deaktivieren. Die Größenbeschränkung von 128 KiB gilt weiterhin.

const server = http.createServer(handler); server.maxHeadersCount = 2000; server.listen(port, host);

Sie müssen die Größenbeschränkung für Node.js Header nicht ändern. In den verwalteten Node.js Laufzeiten ist es so eingestellt, dass es dem Plattformlimit entspricht, sodass das Plattformlimit für die Header-Größe gilt. Sie können das Plattformlimit nicht anhand des Anwendungscodes erhöhen.

Um die Grenzwerte einzuhalten, verschieben Sie den Massenstatus aus den Headern in den Anforderungstext, kürzen Sie Cookies und reduzieren Sie redundante Proxy- und Tracing-Header, bevor die Anfrage den Endpunkt erreicht. Wenn sich eine CloudFront Distribution vor dem Endpunkt befindet, leiten Sie nur die Header weiter, die Ihre Anwendung in der ursprünglichen Anforderungsrichtlinie benötigt.

Fehlertypen der Webfunktion

Wenn eine Anfrage an einen Webfunktions-Endpunkt fehlschlägt, gibt Lambda einen lambda-web-error-type Antwortheader zurück, der angibt, was schief gelaufen ist. Der Wert verwendet das Format<Prefix>.<ErrorReason>: Das Präfix gibt an, wo der Fehler aufgetreten ist, und der Grund gibt die Ursache an.

Präfix Wo der Fehler aufgetreten ist
Platform. Die Plattformschicht von Lambda, die Anfragen weiterleitet und validiert, Berechtigungen überprüft und Grenzwerte durchsetzt.
Runtime. Die verwaltete Laufzeit, die Ihre Funktion lädt und ausführt.
Application. Ihr Funktionscode.

Runtime.RequestTimeoutBedeutet beispielsweise, dass die verwaltete Laufzeit gemeldet hat, dass Ihre Funktion nicht innerhalb des konfigurierten Timeouts reagiert hat, und Application.InitCodeError dass Ihr eigener Initialisierungscode einen Fehler ausgelöst hat.

Lambda schließt den lambda-web-error-type Header ein, wenn der Fehler durch die Anfrage selbst oder durch Ihre Funktion, ihre Konfiguration oder ihren Code verursacht wurde. Lambda lässt den Header für interne Dienstfehler und für Autorisierungsfehler weg, sodass einem nicht autorisierten Anrufer keine Details preisgegeben werden. Ein Wert weist auf ein Problem auf dem Pfad zwischen der Lambda-Plattform und Ihrer Funktion hin. Im Anforderungspfad gibt der Fehler an, wo die Anfrage fehlgeschlagen ist. Verwenden Sie im Antwortpfad den Wert zusammen mit Ihrer Anwendungstelemetrie, um zu verstehen, was passiert ist.

Fehlertyp Description
Platform.MalformedRequest Lambda konnte die Anfrage nicht analysieren, oder die Anforderungszeile oder Methode wurde nicht akzeptiert.
Platform.MissingHostHeader Die Anfrage enthielt keinen Host-Header, sodass Lambda den Zielendpunkt nicht auflösen konnte.
Platform.InvalidEndpoint Der Host-Header wurde nicht zu einem gültigen, vorhandenen Endpunkt aufgelöst.
Platform.HeaderTooLarge Der Header-Abschnitt der Anfrage hat die Größenbeschränkung für Lambda-Header überschritten.
Platform.DisallowedHeader Die Anfrage enthielt einen Header, den Lambda nicht akzeptiert. Lambda gibt HTTP 400 zurück.
Platform.UnsupportedHttpVersion Die Anfrage verwendete eine andere HTTP-Version als die HTTP/1.1, die Webfunktionen erfordern.
Platform.CannotAssumeRole Lambda konnte die Ausführungsrolle Ihrer Funktion nicht übernehmen.
Platform.KMSDecryptionError Lambda konnte den konfigurierten AWS KMS Schlüssel nicht verwenden, um Ihre Umgebungsvariablen oder andere Daten zu entschlüsseln, die für die Initialisierung Ihrer Funktion erforderlich sind.
Platform.InvalidNetworkConfiguration Eine VPC-Netzwerkressource, von der Ihre Funktion abhängt, ist ungültig. Informationen zur Ursache finden Sie unterNetzwerk- und Verbindungsprobleme.
Platform.RevisionNotActive Die Funktionsrevision, auf die die Anforderung abzielt, befindet sich nicht im Status Aktiv. Die Revision ist möglicherweise noch aktiviert oder konnte möglicherweise nicht aktiviert werden. Überprüfen Sie den Status der Revision. Wenn die Aktivierung noch läuft, versuchen Sie es nach einer kurzen Verzögerung erneut.
Platform.EndpointNotActive Der Endpunkt befindet sich nicht im Status Aktiv. Der Endpunkt wird möglicherweise noch bereitgestellt oder ist aus anderen Gründen nicht verfügbar. Überprüfen Sie den Status des Endpunkts. Wenn er noch erstellt wird, versuchen Sie es nach einer kurzen Verzögerung erneut.
Platform.EndpointDisabled Der Wert des Endpunkts rateLimit ist 0, sodass Lambda alle Anfragen mit HTTP 503 ablehnt. Auf einen Wert ungleich Null setzenrateLimit, um den Verkehr wieder aufzunehmen.
Platform.AccountDisabled Aufrufe von Webfunktionen sind für das Konto deaktiviert. Lambda gibt HTTP 403 zurück. Kontakt AWS Support.
Platform.AccountRequestThrottle Das Kontingent für die Anforderungsrate auf Kontoebene wurde überschritten.
Platform.EndpointRequestThrottle Das Kontingent für die Anforderungsrate des Endpunkts wurde überschritten.
Platform.AccountActiveVCPUArm64Throttle Das aktive vCPU-Kontingent des Kontos wurde erreicht.
Platform.EndpointMaxEnvThrottle Das maximale Umgebungslimit des Endpunkts wurde erreicht.
Platform.EndpointConcurrentInitThrottle Zu viele Ausführungsumgebungen wurden gleichzeitig für den Endpunkt initialisiert. Versuchen Sie es erneut mit exponentiellem Backoff.
Runtime.RequestTimeout Ihre Funktion hat innerhalb des konfigurierten Timeouts keine Antwort zurückgegeben.
Runtime.OutOfMemory Ihre Funktion hat ihr Speicherlimit überschritten und der Prozess wurde gestoppt.
Runtime.Unreachable Der Runtime-Prozess ist abgestürzt, beendet oder die Verbindung verweigert.
Runtime.Exit Der Laufzeitprozess wurde zwischen Anfragen beendet.
Runtime.ExitError Der Laufzeitprozess wurde mit einem Fehler beendet.
Runtime.InvalidResponse Die Antwortheader der Laufzeit haben den Lesepuffer überschritten.
Runtime.OriginRequestError Der Anwendungsprozess ist bei der Bearbeitung einer Anfrage fehlgeschlagen. Einzelheiten finden Sie in den Anwendungsprotokollen.
Runtime.ImportCodeError Die Runtime konnte Ihren Einstiegspunkt nicht importieren oder auflösen, z. B. ein fehlendes Modul oder ein fehlerhafter Pfad.
Runtime.InitTimeout Ihre Funktion hat bei der Bereitstellung der Sandbox das Init-Timeout überschritten.
Application.InitCodeError Ihr Initialisierungscode hat einen Fehler ausgelöst, bevor die Funktion mit der Bearbeitung von Anfragen begann.
Application.TimeoutListenError Ihr Initialisierungscode hat nicht vor Ablauf der Initialisierungsfrist begonnen, den Port abzuhören.

Die Einschränkungsmetriken, die angeben, welcher Grenzwert angewendet wurde (für die Platform.EndpointMaxEnvThrottle FehlertypenPlatform.AccountRequestThrottle,Platform.EndpointRequestThrottle, und)Platform.AccountActiveVCPUArm64Throttle, finden Sie unter. Regionale Nutzungs- und Drosselungsmetriken

Protokolle oder Metriken fehlen

  • Stellen Sie sicher, dass die Ausführungsrolle Protokollgruppen und Streams erstellen und Protokollereignisse sowohl für die Zielprotokollgruppe als auch für die .local zugehörige Protokollgruppe speichern kann.

  • Suchen Sie in der zentralen Protokollgruppe in der Heimatregion nach. Erstellen Sie keine Diagnosen, die von temporären Replikatregionen oder .local Protokollgruppen abhängen.

  • Stellen Sie systemLogLevel es ein, DEBUG wenn Sie es benötigen. platform.requestComplete

  • Lassen Sie nach dem Erstellen oder Aktualisieren von Ressourcen Verzögerungen bei der Telemetrieübertragung zu. Behandeln Sie das vorübergehende Fehlen eines Metrik- oder Protokollereignisses nicht als Beweis dafür, dass eine Anforderung nicht ausgeführt wurde.

  • Denken Sie daran, dass die Metriken spärlich sind. Konfigurieren Sie gegebenenfalls Alarme so, dass fehlende Fehlermetriken als nicht fehlerhaft behandelt werden.

Wenn überhaupt keine Anwendungsprotokolle angezeigt werden, fehlen der Ausführungsrolle möglicherweise die Amazon CloudWatch Logs-Berechtigungen. Hängen Sie die AWSLambdaBasicExecutionRole verwaltete Richtlinie an die Ausführungsrolle an oder gewähren Sie logs:CreateLogGrouplogs:CreateLogStream, undlogs:PutLogEvents. Die erforderlichen Berechtigungen finden Sie unter Rolle „Ausführung“.

Probleme mit Codespeicherung und Verschlüsselung

Fehlende oder unzugängliche Amazon S3 S3-Objektversion

Vergewissern Sie sich, dass für den Bucket weiterhin die Versionierung aktiviert ist, dass die genaue Objektversion vorhanden ist und dass sowohl der Aufrufer als auch der Lambda-Serviceprinzipal über die erforderlichen Leseberechtigungen verfügen. Wenn eine aktive Revision den Zugriff auf ihre angeheftete Objektversion verliert, erstellen Sie eine neue Revision, die auf eine verfügbare Version verweist. Details hierzu finden Sie unter Bereitstellen von Web-Funktionscode aus Amazon S3.

AWS KMS Der Zugriff ist fehlgeschlagen

Überprüfen Sie die Anruferberechtigungen, die Schlüsselrichtlinie, den Verschlüsselungskontext, den Schlüsselstatus und die Erlaubnis des Lambda-Serviceprinzipals. kms:Decrypt Stellen Sie für MultiRegion PerRegion Endgeräte sicher, dass ein Replikat des AWS KMS Schlüssels für mehrere Regionen vorhanden ist und in jeder Zielregion verwendet werden kann. Details hierzu finden Sie unter Verschlüsselung im Ruhezustand für Webfunktionen.

Probleme mit und Endpunkten MultiRegionPerRegion

Verwenden Sie das regionalEndpoints Feld, um die betroffene Region zu identifizieren. Vergleichen Sie seine stateReason und updateStatusReason mit den gesunden Regionen. Prüfen Sie die regionalen Kontingente, die AWS KMS wichtigsten Replikate, die Laufzeitverfügbarkeit und den Replikationsstatus der Revision. Nachdem Sie die Ursache behoben haben, wiederholen Sie das Endpunkt-Update. Informationen zum Replikationsmodell finden Sie unterMulti-Region Einsatz.

Bei einem MultiRegion Endpunkt garantiert latenzbasiertes Routing (das Anfragen an die Region mit der niedrigsten gemessenen Latenz weiterleitet) nicht, dass jede Anfrage an die Region mit der niedrigsten Latenz gesendet wird. Testen Sie vom betroffenen Client-Standort aus und überprüfen Sie die Anwendungsprotokolle, um festzustellen, welche Region die Anfrage bearbeitet hat. Überprüfen Sie für einen PerRegion Endpunkt auch Ihre externe DNS- oder Front-Door-Routing-Konfiguration.

Netzwerk- und Verbindungsprobleme

Die meisten Verbindungsprobleme sind auf eine Serverversion zurückzuführen, die keine Connector-Referenz enthält oder auf eine ältere Connector-Version verweist, oder auf Connector-Subnetze, Sicherheitsgruppen oder Routen, die den Datenverkehr blockieren.

Verwenden Sie die folgende Reihenfolge, um ein Verbindungsproblem zu isolieren:

  1. Führen Sie get-web-function-endpoint. Überprüfen Sie den automatischen Bereitstellungsmodus und überprüfen Sie, welche Version (en) Datenverkehr empfangen.

  2. get-web-function-revisionFür jede Serverversion ausführen. Vergewissern Sie sich, dass der Status lautet Active und dass er auf die erwartete Connector-Version verweist.

  3. Führen Sie aws lambda-core get-network-connector --identifier mit dem Konnektor ARN aus der Revision ausegressNetworkConnectorArn. Vergewissern Sie sich, dass dies der Fall State ist ACTIVE und, falls der Connector aktualisiert wurde, dies LastUpdateStatus ist der FallSuccessful. Verwenden Sie andernfalls StateReasonCode oder, LastUpdateStatusReasonCode um die Ursache zu ermittelnInsufficientRolePermissions, z. B.InvalidSubnet, oderSubnetOutOfIPAddresses.

  4. Testen Sie das Ziel anhand der IP-Adresse, um die Erreichbarkeit des Netzwerks von der DNS-Auflösung zu trennen.

  5. Überprüfen Sie die Connector-Subnetzrouten, Zielsicherheitsgruppen und Netzwerk-ACLs.

  6. Überprüfen Sie die VPC-Flow-Logs in den Connector-Subnetzen.

Zu den häufigsten Symptomen gehören die folgenden.

SymptomCheck
Öffentliches Internet funktioniert, VPC-Ressourcen jedoch nichtDie Serverversion hat keine Konnektorreferenz.
VPC-Zugriff funktioniert für einige AnfragenDer Endpunkt leitet an zwei Revisionen mit unterschiedlichen Konnektorkonfigurationen weiter.
Ein Connector-Update hat keine AuswirkungDie Serverversion verweist auf eine ältere Connector-Version.
Der öffentliche Zugriff wird nach dem Hinzufügen eines Connectors beendetDie Connector-Subnetze verfügen nicht über die erforderliche NAT- oder IPv6-Route.
Timeout bei einem VPC-ZielDie Zielsicherheitsgruppe, die Routentabelle oder die Netzwerk-ACL blockiert die Verbindung.
Flow-Logs enthalten keine passenden DatensätzeDer Datenverkehr ist nicht in die VPC gelangt. Überprüfen Sie erneut die Serverversion und die Konnektorreferenz.
Private Namen schlagen fehl, aber direkte IP-Verbindungen funktionierenÜberprüfen Sie die VPC-DNS-Attribute und die Zuordnungen privater gehosteter Zonen.
IPv4 funktioniert, aber IPv6 schlägt fehlSuchen Sie nach einer DualStack Connector-Version, IPv6-Routen und IPv6-Sicherheitsregeln.
Die Serverrevision istActive, aber die Funktion kann keine privaten VPC-Ressourcen erreichen Die Serverversion legt keinen Ausgangsnetzwerkanschluss fest ()egressNetworkConnectorArn. Lesen Sie das Feld mitget-web-function-revision; wenn es leer ist, erstellen Sie eine Revision, die festlegtegressNetworkConnectorArn. Details hierzu finden Sie unter Konfiguration von Netzwerken für AWS Lambda Web-Funktionen.

Es gibt keinen interaktiven Zugriff auf eine Ausführungsumgebung für Webfunktionen. Verwenden Sie Anwendungsprotokolle, Endpunkt-Antwort-Header, Ressourcenstatusfelder, CloudWatch Metriken und VPC-Flow-Logs, um Fehler zu diagnostizieren.

Bereiten Sie ein Eskalationspaket vor

Wenn bei den vorherigen Prüfungen die Ursache nicht ermittelt wurde, sammeln Sie die folgenden Informationen, bevor Sie einen AWS Support Fall eröffnen. Auf diese Weise kann der Support-Techniker den Betrieb der Steuerungsebene, den regionalen Einsatz, die Anfrage und die Telemetrie miteinander korrelieren:

  • Die AWS-Konto ID, die Heimatregion, der Funktionsname, die Revisions-ID, der Endpunktname, der Endpunkttyp und die Zielregionen.

  • Der UTC-Zeitstempel und der Anforderungspfad für repräsentative Fehler, zusammen mit dem HTTP-Status lambda-web-request-idlambda-web-logstream, und den lambda-web-error-type Antwortheadern.

  • Die Funktion, die Revision, der Endpunkt und die regionalenstate, stateReasonupdateStatus, und updateStatusReason Werte.

  • Relevante zentrale Anwendungs- und Systemprotokollereignisse, Drosselungs- und Kapazitätskennzahlen sowie die ungefähre Datenverkehrsrate zum Zeitpunkt des Auftretens des Problems.

  • Die AWS CLI Version und eine redigierte Kopie der Verwaltungsanfrage. Entfernen Sie Anmeldeinformationen, Anwendungsgeheimnisse, Token und vertrauliche Anforderungsdaten.