Direkt zum Inhalt

Wie verwende ich ein Amazon ECR-Image und Docker, um einen Lambda-Layer zu erstellen?

Lesedauer: 3 Minute
0

Ich möchte ein Image von Amazon Elastic Container Registry (Amazon ECR) und Docker verwenden, um einen AWS Lambda-Layer zu erstellen, der mit den Laufzeiten meiner Umgebung kompatibel ist.

Behebung

Hinweis: Wenn du beim Ausführen von AWS Command Line Interface (AWS CLI)-Befehlen Fehlermeldungen erhältst, findest du weitere Informationen dazu unter Problembehandlung bei der AWS CLI. Stelle außerdem sicher, dass du die neueste Version der AWS CLI verwendest. Die folgende Lösung verwendet Python und Linux. Die Schritte können für andere Programmiersprachen und Betriebssysteme variieren.

Voraussetzung: Installiere Docker auf deinem Computer. Installationsschritte findest du unter Docker herunterladen und Docker Engine installieren (nur Linux) auf der Docker Docs-Website.

Verzeichnisstruktur erstellen und Abhängigkeiten angeben

Erstelle die Verzeichnisstruktur und gib deine Abhängigkeiten in der pip-Anforderungsdatei requirements.txt an. Weitere Informationen zum Angeben von Abhängigkeiten findest du unter Anforderungsdateien auf der pip-Website.

Die folgende Beispielverzeichnisstruktur bezieht sich auf einen Lambda-Layer, der mit Python 3.x kompatibel ist:

my-layer/
├── requirements.txt
└── python/

Hinweis: Die gesamte entpackte Größe der Funktion und allen Layers darf die Größenbeschränkung von 250 MB für entpackte Bereitstellungspakete nicht überschreiten. Informationen zur Python-Versionsunterstützung in Lambda findest du unter Erstellen von Lambda-Funktionen mit Python.

Bibliotheksabhängigkeiten in ihren Unterordnern installieren

Führe den folgenden Befehl einmal für jede Laufzeit aus, die du in der Verzeichnisstruktur angegeben hast:

docker run -v "$PWD":/var/task "public.ecr.aws/sam/build-python3.x" /bin/sh -c "pip install -r requirements.txt -t python/; exit"

Hinweis: Ersetze 3.x durch die kompatible Python-Bibliothek, die du installieren möchtest.

Erstelle ein .zip-Dateiarchiv für deinen Layer

Führe den folgenden Befehl aus, um den Ordner python zu komprimieren und das Layer-Paket zu erstellen:

zip -r mypythonlibs.zip python > /dev/null

Hinweis: Ersetze mypythonlibs durch einen Namen für dein Layer-Paket.

Erstellen oder Aktualisieren eines Layers

Führe den folgenden AWS-CLI-Befehl publish-layer-version aus:

aws lambda publish-layer-version --layer-name mypythonlibs --description "My python libs" --zip-file fileb://mypythonlibs.zip --compatible-runtimes "python3.x"

Hinweis: Ersetze mypythonlibs durch deinen Layer-Paketnamen, My python libs durch eine Beschreibung des Layer-Pakets und python3.x durch die installierte Python-Bibliothek.

Notiere dir in der Ausgabe den Amazon-Ressourcennamen (ARN) des Layers.

Aktualisiere deine Lambda-Funktionskonfiguration, um den Layer zu verwenden

Führe den folgenden Befehl update-function-configuration aus:

aws lambda update-function-configuration --layers arn:aws:lambda:us-east-2:123456789012:layer:mypythonlibs:1 --function-name my-function

Hinweis: Ersetze arn:aws:lambda:us-east-2:123456789012:layer:mypythonlibs:1 durch den ARN des Layers und my-function durch den Namen deiner Funktion. Mit dem vorhergehenden Befehl wird der Layer im Ordner /opt der Lambda-Umgebung platziert. Du kannst von deinem Lambda-Funktionscode aus auf den Ordner /opt zugreifen.

Ähnliche Informationen

Wie löse ich die Fehler "unknown service", "parameter validation failed" oder einer Python (Boto3)-Lambda-Funktion?"object has no attribute"

Neu für AWS Lambda – verwende eine beliebige Programmiersprache und nutze gemeinsame Komponenten

Amazon ECR Public Gallery

AWS OFFICIALAktualisiert vor 3 Monaten