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-Container-Images lokal testen
Sie können den Emulator der Lambda-Laufzeitschnittstelle verwenden, um die Funktion eines Container-Images lokal zu testen, bevor Sie es in Amazon Elastic Container Registry (Amazon ECR) hochladen und für Lambda bereitstellen. Der Emulator ist ein Proxy für die Lambda-Laufzeiten-API. Es handelt sich um einen leichtgewichtigen Webserver, der HTTP-Anforderungen in JSON-Ereignisse umwandelt, die an die Lambda-Funktion im Container-Image übergeben werden.
Die AWS-Basis-Images und die reinen OS-Basis-Images enthalten den Laufzeitschnittstellen-Emulator. Wenn Sie ein alternatives Basis-Image verwenden (beispielsweise ein Alpine Linux-Image oder ein Debian-Image), können Sie den Emulator in Ihr Image integrieren oder ihn auf Ihrem lokalen Computer installieren.
Der Laufzeitschnittstellen-Emulator ist im AWS GitHub Repository
Themen
Richtlinien für die Verwendung des Laufzeitschnittstellen-Emulators
Beachten Sie bei der Verwendung des Laufzeitschnittstellen-Emulators die folgenden Richtlinien:
-
Der Runtime Interface Emulator (Laufzeitschnittstellen-Emulator, RIE) emuliert weder die Sicherheits- und Authentifizierungskonfigurationen von Lambda noch die Lambda-Orchestrierung.
Lambda bietet einen Emulator für jede der Befehlssatz-Architekturen.
Der Emulator unterstützt kein AWS X-Ray-Tracing oder andere Lambda-Integrationen.
Umgebungsvariablen
Der Runtime Interface Emulator unterstützt eine Teilmenge von Umgebungsvariablen für die Lambda-Funktion im lokal ausgeführten Image.
Wenn Ihre Funktion Sicherheitsnachweise verwendet, können Sie die Anmeldeinformationen konfigurieren, indem Sie die folgenden Umgebungsvariablen festlegen:
AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY
AWS_SESSION_TOKEN
AWS_DEFAULT_REGION
Um das Funktions-Timeout einzustellen, konfigurieren Sie AWS_LAMBDA_FUNCTION_TIMEOUT
. Geben Sie die maximale Anzahl von Sekunden ein, die die Funktion ausgeführt werden darf.
Der Emulator füllt die folgenden Lambda-Umgebungsvariablen nicht aus. Sie können sie jedoch so einstellen, dass sie mit den Werten übereinstimmen, die Sie erwarten, wenn die Funktion im Lambda-Service ausgeführt wird:
AWS_LAMBDA_FUNCTION_VERSION
AWS_LAMBDA_FUNCTION_NAME
AWS_LAMBDA_FUNCTION_MEMORY_SIZE
Testen von Images, die aus AWS-Basis-Images erstellt wurden
Die AWS-Basis-Images für Lambda enthalten den Laufzeitschnittstellen-Emulator. Nachdem Sie Ihr Docker-Image erstellt haben, gehen Sie wie folgt vor, um es lokal zu testen.
-
Starten Sie Ihr Docker-Image mit dem docker run-Befehl. In diesem Beispiel ist
docker-image
der Image-Name undtest
der Tag.docker run --platform linux/amd64 -p 9000:8080
docker-image
:test
Dieser Befehl führt das Image als Container aus und erstellt einen lokalen Endpunkt bei
localhost:9000/2015-03-31/functions/function/invocations
.Anmerkung
Wenn Sie das Docker-Image für die ARM64-Befehlssatz-Architektur erstellt haben, müssen Sie die Option
--platform linux/
stattarm64
--platform linux/
verwenden.amd64
-
Veröffentlichen Sie in einem neuen Terminalfenster ein Ereignis an den lokalen Endpunkt.
-
Die Container-ID erhalten.
docker ps
-
Verwenden Sie den Befehl docker kill
, um den Container zu anzuhalten. Ersetzen Sie in diesem Befehl 3766c4ab331c
durch die Container-ID aus dem vorherigen Schritt.docker kill
3766c4ab331c
Testen von Images, die auf der Grundlage alternativer Basis-Images erstellt wurden
Wenn Sie ein alternatives Basis-Image verwenden (beispielsweise ein Alpine Linux-Image oder ein Debian-Image), können Sie den Emulator in Ihr Image integrieren oder ihn auf Ihrem lokalen Computer installieren.
Integrieren des Laufzeitschnittstellen-Emulators in ein Image
So integrieren Sie den Emulator in Ihr Image
-
Erstellen Sie ein Skript und speichern Sie es in Ihrem Projektverzeichnis. Legen Sie Ausführungsberechtigungen für die Skriptdatei fest.
Das Skript prüft das Vorhandensein der
AWS_LAMBDA_RUNTIME_API
Umgebungsvariablen, was auf das Vorhandensein der Laufzeit-API hinweist. Wenn die Laufzeit-API vorhanden ist, führt das Skript den Runtime Interface Client aus. Andernfalls führt das Skript den Runtime Interface Emulator aus.Wählen Sie Ihre Sprache, um ein Beispielskript zu sehen:
-
Laden Sie den Laufzeitschnittstellen-Emulator für Ihre Zielarchitektur von GitHub in Ihr Projektverzeichnis herunter. Lambda bietet einen Emulator für jede der Befehlssatz-Architekturen.
-
Fügen Sie die folgenden Zeilen in Ihr Dockerfile ein. Das
ENTRYPOINT
beinhaltet das in Schritt 1 erstellte Skript und Ihren Funktionshandler.Beispiel Zeilen zum Hinzufügen in Dockerfile
Im folgenden Beispiel ersetzen Sie
lambda_function.handler
durch Ihren Funktionshandler.COPY ./entry_script.sh /entry_script.sh RUN chmod +x /entry_script.sh ADD aws-lambda-rie /usr/local/bin/aws-lambda-rie ENTRYPOINT [ "/entry_script.sh","
lambda_function.handler
" ] -
Erstellen Sie Ihr Docker-Image mit dem docker build
-Befehl. Das folgende Beispiel benennt das Bild in docker-image
und gibt ihm dentest
Tag. docker build --platform linux/amd64 -t
docker-image
:test
.Anmerkung
Der Befehl gibt die
--platform linux/amd64
-Option an, um sicherzustellen, dass Ihr Container mit der Lambda-Ausführungsumgebung kompatibel ist, unabhängig von der Architektur des Entwicklungsrechners. Wenn Sie beabsichtigen, eine Lambda-Funktion mithilfe der ARM64-Befehlssatzarchitektur zu erstellen, müssen Sie den Befehl unbedingt so ändern, dass stattdessen die--platform linux/arm64
-Option verwendet wird. -
Starten Sie Ihr Docker-Image mit dem docker run-Befehl. In diesem Beispiel ist
docker-image
der Image-Name undtest
der Tag.docker run --platform linux/amd64 -p 9000:8080
docker-image
:test
Dieser Befehl führt das Image als Container aus und erstellt einen lokalen Endpunkt bei
localhost:9000/2015-03-31/functions/function/invocations
.Anmerkung
Wenn Sie das Docker-Image für die ARM64-Befehlssatz-Architektur erstellt haben, müssen Sie die Option
--platform linux/
stattarm64
--platform linux/
verwenden.amd64
-
Veröffentlichen Sie in einem neuen Terminalfenster ein Ereignis an den lokalen Endpunkt.
-
Die Container-ID erhalten.
docker ps
-
Verwenden Sie den Befehl docker kill
, um den Container zu anzuhalten. Ersetzen Sie in diesem Befehl 3766c4ab331c
durch die Container-ID aus dem vorherigen Schritt.docker kill
3766c4ab331c
Lokales Installieren des Laufzeit-Schnittstellen-Emulators
Um den Laufzeitschnittstellen-Emulator auf Ihrem lokalen Computer zu installieren, laden Sie das Paket für Ihre bevorzugte Architektur von herunter GitHub. Verwenden Sie dann den docker run-Befehl, um das Container-Image zu starten, und legen Sie --entrypoint
auf den Emulator fest. Für weitere Informationen wählen Sie die Anweisungen für Ihre bevorzugte Sprache aus: