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.
Testen von Lambda-Webfunktionen
Web Functions laufen auf Standard-HTTP-Servern, sodass Sie das meiste Anwendungsverhalten lokal mit den normalen Tools Ihres Frameworks testen können. Cloud-Tests sind weiterhin erforderlich, um die IAM-Autorisierung, den Zugriff auf Amazon S3 und AWS Key Management Service (AWS KMS), den Lebenszyklusstatus von Webfunktionen, Skalierung, Telemetrie und das Verhalten in mehreren Regionen zu validieren.
Empfohlene Testschichten
In der folgenden Tabelle wird jede Testschicht beschrieben, was sie validiert und wo sie ausgeführt wird.
| Testschicht | Was es validiert | Wo es läuft |
|---|---|---|
| Einheit | Geschäftslogik, Validierung, Autorisierungsentscheidungen, Serialisierung und Fehlerbehandlung. | Lokale Entwicklungs- und Build-Umgebungen. |
| HTTP-Integration | Routen, Middleware, Header, Streaming, Timeouts, reibungslose Verbindungsabbrüche und Framework-Verhalten. | Gegen einen lokal laufenden Produktionsserver. |
| Package | Eintragsdatei, Produktionsabhängigkeiten, Archivlayout, Start und Verwendung von durch den ServerAWS_LAMBDA_HTTP_ENDPOINT. |
Aus genau dem Archiv, das die Deployment-Pipeline hochlädt. |
| Cloud-Integration | IAM, Bucket-Richtlinien, Schlüssel, Lebenszyklusstatus, Endpunktverhalten, Telemetrie und AWS Downstream-Serviceanfragen. | In einer isolierten Umgebung AWS-Konto oder einer Testumgebung. |
| Belastung und Belastbarkeit | Sicherheit bei Parallelität, Latenz, Drosselung, Downstream-Limits, Rollback und regionales Fehlerverhalten | In einer produktionsähnlichen Cloud-Umgebung mit expliziten Kosten- und Datenverkehrskontrollen. |
Führen Sie den HTTP-Server lokal aus
Verwenden Sie ein lokales Fallback fürAWS_LAMBDA_HTTP_ENDPOINT, wie in der Minimal Express Anwendung gezeigt. Sie können die Variable auch explizit setzen, um denselben Startpfad zu testen, der von Lambda verwendet wird:
AWS_LAMBDA_HTTP_ENDPOINT=127.0.0.1:3000 node index.js
Senden Sie Anfragen mit Ihrem normalen HTTP-Client und überprüfen Sie Statuscodes, Antworttexte, Header, Anforderungsvalidierung, Authentifizierungs-Middleware, Timeouts, Streaming und die Behandlung von Verbindungsabbrüchen beim Client.
Führen Sie gleichzeitige Anfragen während lokaler Integrationstests aus. Prüfen Sie den globalen Anforderungsstatus, gemeinsame veränderbare Caches, doppelte Initialisierungen, Dateinamenkollisionen und Blockierung von Ereignisschleifen.
Testen Sie das Bereitstellungspaket
-
Installieren Sie Abhängigkeiten aus der festgeschriebenen Sperrdatei und erstellen Sie das Archiv mit denselben Befehlen wie in der Bereitstellungspipeline.
-
Extrahieren Sie das Archiv in ein sauberes Verzeichnis. Führen Sie die Anwendung von diesem Verzeichnis aus aus, ohne Zugriff auf Entwicklungsabhängigkeiten oder Quelldateien ohne Nachverfolgung zu haben.
-
Stellen Sie sicher, dass die konfigurierte Eintragsdatei im erwarteten Pfad vorhanden ist, und startet den HTTP-Server.
-
Notieren Sie sich die Archivprüfsumme und die Amazon S3 S3-Objektversions-ID, die von der Revision verwendet wurden. Verwenden Sie diese Werte, um das genaue Artefakt zu identifizieren, das getestet wird.
Webfunktionen laufen auf Arm64. Wenn ein Paket native Abhängigkeiten enthält, erstellen und testen Sie diese Abhängigkeiten für Linux Arm64, anstatt Artefakte von einem x86-64-Entwicklungscomputer wiederzuverwenden. Sie können beispielsweise Produktionsabhängigkeiten in einem Arm64-Container installieren:
docker run --rm --platform linux/arm64 \ --volume "$PWD":/app \ --workdir /app \ node:24 \ npm ci --omit=dev
Testen Sie in einer isolierten Cloud-Umgebung
-
Laden Sie das getestete Archiv in einen versionierten Amazon S3 S3-Bucket hoch und erstellen Sie eine Revision, die auf die resultierende Objektversion verweist.
-
Fragen Sie die Revision ab, bis sie zu
ActiveoderFailedwird. Bestehen Sie den Test mit den gemeldeten Daten nicht,stateReasonanstatt auf unbestimmte Zeit zu warten. -
Erstellen oder aktualisieren Sie einen Testendpunkt. Fragen Sie sowohl als
stateauch abupdateStatus. Überprüfen Sie fürMultiRegionundPerRegionEndpunkte jeden regionalen Status. -
Senden Sie Anfragen an den Endpunkt und überprüfen Sie die Antwort der Anwendung, die Protokolle
lambda-web-request-id, die Metriken und die zu erwartenden Nebenwirkungen im nachgelagerten Bereich. -
Löschen Sie den Endpunkt, die Funktion, die Testobjekte, Protokollgruppen und andere Testressourcen, wenn der Test abgeschlossen ist.
Autorisierung und Offenlegung von Tests
-
Stellen Sie sicher
IamAuth, dass unsignierte Anfragen fehlschlagen, zulässige Prinzipale erfolgreich sind, abgelehnte Prinzipale fehlschlagen und dass für den kontoübergreifenden Zugriff sowohl Identitäts- als auch Ressourcenrichtlinien erforderlich sind. -
Für
ApplicationManaged, testen Sie fehlende, abgelaufene, falsch formatierte und unzureichende Anwendungsanmeldedaten. Testen Sie die Autorisierung getrennt von der Authentifizierung. -
Testen Sie Browser-Preflight-Anfragen, erlaubte und verweigerte Ursprünge, Anfragen mit Zugangsdaten und Sicherheitsheader, wenn Browser den Endpunkt aufrufen.
-
Wenn ein Front-Door den Endpunkt schützt, vergewissern Sie sich, dass Anfragen mit direktem Ursprung verweigert werden und dass nur die erwartete Front-Door-Identität oder der erwartete Netzwerkpfad sie aufrufen kann.
Testen Sie Parallelität, Skalierung und Drosselung
-
Erhöhen Sie die Last schrittweise und zeichnen Sie gleichzeitig Latenz, 4xx- und 5xx-Reaktionen, Drosselungen, aktive Umgebungen und Downstream-Auslastung auf.
-
Testen Sie die konfigurierten und unabhängig
rateLimitvoneinandermaxEnvironments.maxConcurrencyPerEnvironmentVerwenden Sie denlambda-web-error-typeAntwort-Header (Platform.EndpointRequestThrottle,Platform.AccountRequestThrottle,Platform.EndpointMaxEnvThrottlePlatform.AccountActiveVCPUArm64Throttle, oderPlatform.EndpointConcurrentInitThrottle), um zu bestätigen, welches Limit jede HTTP 429-Antwort ausgelöst hat. Zeichnen Sie HTTP 503-Antworten, die keinenlambda-web-error-typeHeader haben, separat auf. Diese Antworten können auf einen vorübergehenden Lastverlust oder einen internen Fehler hinweisen. Details hierzu finden Sie unter Fehlertypen der Webfunktion. -
Testen Sie Traffic Bursts und Kaltstarts, nicht nur den Durchsatz im stationären Zustand.
-
Verwenden Sie eindeutige Testdaten und Idempotenzschlüssel. Versuchen Sie nicht, Anfragen, die nicht idempotent sind, während eines Auslastungstests automatisch erneut auszuführen.
-
Legen Sie explizite Beschränkungen für Datenverkehr, Dauer und Kosten fest, bevor Sie einen Auslastungstest starten. Koordinieren Sie Tests, die sich auf Kontingente für gemeinsame Konten oder nachgelagerte Systeme auswirken können.
Testbereitstellungen und Rollback
Stellen Sie in einer Testumgebung zwei Versionen bereit und wenden Sie dasselbe gewichtete Routing-Verfahren an, das in der Produktion verwendet wird. Stellen Sie sicher, dass Ihre Protokolle oder benutzerdefinierten Messwerte Anfragen jeder Revision zuordnen können. Lösen Sie die Rollback-Bedingungen bewusst aus, stellen Sie den gesamten Datenverkehr auf die vorherige Version zurück und stellen Sie sicher, dass das Codeobjekt und die Abhängigkeiten weiterhin verfügbar sind.
Testen Sie für einen MultiRegion PerRegion OR-Endpunkt, ob ein teilweises Update fehlschlägt, und stellen Sie sicher, dass Ihre Bereitstellungsautomatisierung den ausgefallenen regionalen Status erkennt. Testen Sie die Wiederherstellungsaktion und wiederholen Sie das Endpunkt-Update, nachdem Sie die Ursache behoben haben.