Arbeiten mit ZIP-Dateiarchiven und Python-Lambda-Funktionen - 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.

Arbeiten mit ZIP-Dateiarchiven und Python-Lambda-Funktionen

Der Code Ihrer AWS Lambda Funktion besteht aus einer PY-Datei, die den Handler-Code Ihrer Funktion enthält, zusammen mit allen zusätzlichen Paketen und Modulen, von denen Ihr Code abhängt. Sie verwenden ein Bereitstellungspaket, um Ihren Funktionscode in Lambda bereitzustellen. Dieses Paket kann entweder ein ZIP-Dateiarchiv oder ein Container-Image sein. Weitere Informationen zur Verwendung von Container-Images mit Python finden Sie unter Bereitstellen von Python-Lambda-Funktionen mit Container-Images.

Zum Erstellen des Bereitstellungspakets für ein ZIP-Dateiarchiv können Sie ein integriertes Dienstprogramm für ZIP-Dateien Ihres Befehlzeilen-Tools oder ein anderes Dienstprogramm für ZIP-Dateien verwenden, wie 7zip. In den Beispiele in den folgenden Abschnitten wird davon ausgegangen, dass Sie ein zip-Befehlszeilen-Tool in einer Linux- oder MacOS-Umgebung verwenden. Unter Windows können Sie das Windows-Subsystem für Linux installieren, um eine Windows-Version von Ubuntu und Bash zu erhalten und dieselben Befehle zu verwenden.

Da Lambda POSIX-Dateiberechtigungen verwendet, müssen Sie möglicherweise Berechtigungen für den Bereitstellungspaketordner festlegen, bevor Sie das ZIP-Dateiarchiv erstellen.

Laufzeitabhängigkeiten in Python

Für Lambda-Funktionen, die die Python-Laufzeit verwenden, kann eine Abhängigkeit ein beliebiges Python-Paket oder -Modul sein. Bei Bereitstellung Ihrer Funktion mithilfe eines ZIP-Archivs können Sie diese Abhängigkeiten entweder mit Ihrem Funktionscode zu Ihrer ZIP-Datei hinzufügen oder eine Lambda-Ebene verwenden. Eine Ebene ist ein separates ZIP-Dateiarchiv, das zusätzlichen Code und andere Daten enthalten kann. Weitere Informationen zur Verwendung von Lambda-Ebenen finden Sie unter Arbeiten mit Lambda-Ebenen.

Die Lambda-Python-Laufzeiten enthalten die AWS SDK for Python (Boto3) und ihre Abhängigkeiten. Lambda stellt das SDK in der Laufzeit für Bereitstellungsszenarien bereit, in denen Sie keine eigenen Abhängigkeiten hinzufügen können. Zu diesen Szenarien gehören das Erstellen von Funktionen in der Konsole mit dem integrierten Code-Editor oder die Verwendung von Inline-Funktionen in AWS Serverless Application Model (AWS SAM) oder - AWS CloudFormation Vorlagen.

Lambda aktualisiert die Bibliotheken in der Python-Laufzeit regelmäßig, um die neuesten Updates und Sicherheitspatches aufzunehmen. Wenn Ihre Funktion die in der Runtime enthaltene Version des Boto3-SDK verwendet, Ihr Bereitstellungspaket jedoch SDK-Abhängigkeiten enthält, kann dies zu Versionsproblemen führen. Ihr Bereitstellungspaket enthält beispielsweise die SDK-Abhängigkeit urllib3. Aktualisiert Lambda das SDK während der Laufzeit, können Kompatibilitätsprobleme zwischen der neuen Version der Laufzeit und der Version von urllib3 in Ihrem Bereitstellungspaket dazu führen, dass Ihre Funktion fehlschlägt.

Wichtig

Um die volle Kontrolle über Ihre Abhängigkeiten zu behalten und mögliche Versionsprobleme zu vermeiden, empfehlen wir Ihnen, alle Abhängigkeiten Ihrer Funktion zu Ihrem Bereitstellungspaket hinzuzufügen, auch wenn Versionen davon in der Lambda-Laufzeit enthalten sind. Dazu gehört das Boto3-SDK.

Informationen dazu, welche Version des SDK for Python (Boto3) in der von Ihnen verwendeten Laufzeit enthalten ist, finden Sie unter In der Laufzeit enthaltene SDK-Versionen.

Im Rahmen des AWS -Modells der geteilten Verantwortung sind Sie für die Verwaltung aller Abhängigkeiten in den Bereitstellungspaketen Ihrer Funktionen verantwortlich. Dies beinhaltet das Durchführen von Updates und Sicherheitspatches. Zum Aktualisieren von Abhängigkeiten im Bereitstellungspaket Ihrer Funktion erstellen Sie zunächst eine neue ZIP-Datei und laden Sie diese dann in Lambda hoch. Weitere Informationen finden Sie unter ZIP-Bereitstellungspakets mit Abhängigkeiten erstellen und Python-Lambda-Funktionen mithilfe von ZIP-Dateien erstellen und aktualisieren.

ZIP-Bereitstellungspakets ohne Abhängigkeiten erstellen

Hat Ihr Funktionscode keine Abhängigkeiten, enthält Ihre ZIP-Datei nur die PY-Datei mit dem Handler-Code Ihrer Funktion. Erstellen Sie mit Ihrem bevorzugten ZIP-Programm eine ZIP-Datei mit Ihrer PY-Datei im Stammverzeichnis. Befindet sich die PY-Datei nicht im Stammverzeichnis Ihrer ZIP-Datei, kann Lambda Ihren Code nicht ausführen.

Informationen zum Bereitstellen Ihrer ZIP-Datei zum Erstellen einer neuen Lambda-Funktion oder Aktualisieren einer vorhandenen Funktion, finden Sie unter Python-Lambda-Funktionen mithilfe von ZIP-Dateien erstellen und aktualisieren.

ZIP-Bereitstellungspakets mit Abhängigkeiten erstellen

Hängt Ihr Funktionscode von zusätzlichen Paketen und Modulen ab, können Sie diese Abhängigkeiten entweder mit Ihrem Funktionscode zu Ihrer ZIP-Datei hinzufügen oder eine Lambda-Ebene verwenden. Die Anweisungen in diesem Abschnitt zeigen Ihnen, wie Sie Ihre Abhängigkeiten in Ihr ZIP-Bereitstellungspaket aufnehmen. Damit Lambda Ihren Code ausführen kann, muss die PY-Datei, die Ihren Handler-Code und alle Abhängigkeiten Ihrer Funktion enthält, im Stammverzeichnis der ZIP-Datei installiert werden.

Angenommen, Ihr Funktionscode ist in einer Datei mit dem Namen „lambda_function.py“ gespeichert. Die folgenden CLI-Befehle erstellen Sie eine ZIP-Datei mit dem Namen „my_deployment_package.zip“, die Ihren Funktionscode und seine Abhängigkeiten enthält. Sie können Ihre Abhängigkeiten entweder direkt in einem Ordner in Ihrem Projektverzeichnis installieren oder eine virtuelle Python-Umgebung verwenden.

So erstellen Sie das Bereitstellungspaket (Projektverzeichnis)
  1. Navigieren Sie zum Projektverzeichnis, das Ihre lambda_function.py-Quellcodedatei enthält. In diesem Beispiel trägt das Verzeichnis den Namen my_function.

    cd my_function
  2. Erstellen Sie ein neues Verzeichnis mit dem Namen „package“, in das Sie Ihre Abhängigkeiten installieren.

    mkdir package

    Beachten Sie, dass Lambda bei einem ZIP-Bereitstellungspaket erwartet, dass sich Ihr Quellcode und seine Abhängigkeiten im Stammverzeichnis der ZIP-Datei befinden. Installieren Sie jedoch Abhängigkeiten direkt in Ihrem Projektverzeichnis, kann dies zu einer großen Anzahl neuer Dateien und Ordner führen und das Navigieren in Ihrer IDE erschweren. Sie erstellen hier ein separates package-Verzeichnis, um Ihre Abhängigkeiten von Ihrem Quellcode zu trennen.

  3. Installieren Sie Ihre Abhängigkeiten im package-Verzeichnis. Im folgenden Beispiel wird das Boto3-SDK aus dem Python-Paketindex mithilfe von pip installiert. Verwendet Ihr Funktionscode selbst erstellte Python-Pakete, speichern Sie diese im package-Verzeichnis.

    pip install --target ./package boto3
  4. Erstellen Sie eine ZIP-Datei mit den installierten Bibliotheken im Stammverzeichnis.

    cd package zip -r ../my_deployment_package.zip .

    Dadurch wird eine my_deployment_package.zip-Datei in Ihrem Projektverzeichnis generiert.

  5. Fügen Sie die Datei „lambda_function.py“ dem Stammverzeichnis der ZIP-Datei hinzu.

    cd .. zip my_deployment_package.zip lambda_function.py

    Ihre ZIP-Datei sollte eine flache Verzeichnisstruktur haben, wobei der Handler-Code Ihrer Funktion und alle Ihre Abhängigkeitsordner wie folgt im Stammverzeichnis installiert sind.

    my_deployment_package.zip |- bin | |-jp.py |- boto3 | |-compat.py | |-data | |-docs ... |- lambda_function.py

    Befindet sich die PY-Datei mit dem Handler-Code Ihrer Funktion nicht im Stammverzeichnis Ihrer ZIP-Datei, kann Lambda Ihren Code nicht ausführen.

So erstellen Sie das Bereitstellungspaket (virtuelle Umgebung)
  1. Erstellen und aktivieren Sie eine virtuelle Umgebung in Ihrem Projektverzeichnis. In diesem Beispiel trägt das Projektverzeichnis den Namen „my_function“.

    ~$ cd my_function ~/my_function$ python3.12 -m venv my_virtual_env ~/my_function$ source ./my_virtual_env/bin/activate
  2. Installieren Sie Ihre erforderlichen Bibliotheken mithilfe von pip. Im folgenden Beispiel wird das Boto3-SDK installiert.

    (my_virtual_env) ~/my_function$ pip install boto3
  3. Verwenden Sie pip show, um den Ort in Ihrer virtuellen Umgebung zu finden, an dem pip Ihre Abhängigkeiten installiert hat.

    (my_virtual_env) ~/my_function$ pip show <package_name>

    Der Ordner, in dem pip Ihre Bibliotheken installiert, heißt entweder „site-packages“ oder „dist-packages“. Dieser Ordner befindet sich entweder im Verzeichnis „lib/python3.x“ oder „lib64/python3.x“ (wobei „python3.x“ die verwendete Python-Version ist).

  4. Deaktivieren Sie die virtuelle Umgebung.

    (my_virtual_env) ~/my_function$ deactivate
  5. Navigieren Sie in das Verzeichnis mit den Abhängigkeiten, die Sie mit pip installiert haben, und erstellen Sie eine ZIP-Datei in Ihrem Projektverzeichnis mit den installierten Abhängigkeiten im Stammverzeichnis. In diesem Beispiel hat pip Ihre Abhängigkeiten im Verzeichnis „my_virtual_env/lib/python3.12/site-packages“ installiert.

    ~/my_function$ cd my_virtual_env/lib/python3.12/site-packages ~/my_function/my_virtual_env/lib/python3.12/site-packages$ zip -r ../../../../my_deployment_package.zip .
  6. Navigieren Sie zum Stammverzeichnis Ihres Projektverzeichnisses, in dem sich die PY-Datei mit Ihrem Handler-Code befindet, und fügen Sie diese Datei dem Stammverzeichnis Ihres ZIP-Pakets hinzu. In diesem Beispiel heißt Ihre Funktionscodedatei „lambda_function.py“.

    ~/my_function/my_virtual_env/lib/python3.12/site-packages$ cd ../../../../ ~/my_function$ zip my_deployment_package.zip lambda_function.py

Erstellen einer Python-Ebene für Ihre Abhängigkeiten

Die Anweisungen in diesem Abschnitt zeigen Ihnen, wie Sie Ihre Abhängigkeiten in eine Ebene einschließen. Anweisungen zum Einschließen Ihrer Abhängigkeiten in Ihr Bereitstellungspaket finden Sie unter ZIP-Bereitstellungspakets mit Abhängigkeiten erstellen.

Wenn Sie einer Funktion eine Ebene hinzufügen, lädt Lambda den Ebeneninhalt in das Verzeichnis /opt der Ausführungsumgebung. Für jede Lambda-Laufzeit enthält die Variable PATH bereits spezifische Ordnerpfade innerhalb des Verzeichnisses /opt. Um sicherzustellen, dass Ihr Ebeneninhalt von der PATH-Variablen erfasst wird, fügen Sie den Inhalt in die folgenden Ordnerpfade ein:

  • python

  • python/lib/python3.10/site-packages (Site-Verzeichnisse)

Die Struktur Ihrer Ebene-ZIP-Datei könnte beispielsweise wie folgt aussehen:

pillow.zip │ python/PIL └ python/Pillow-5.3.0.dist-info

Darüber hinaus erkennt Lambda automatisch alle Bibliotheken im /opt/lib-Verzeichnis und alle Binärdateien im /opt/bin-Verzeichnis. Um sicherzustellen, dass Lambda Ihren Ebeneninhalt korrekt findet, können Sie auch eine Ebene mit der folgenden Struktur erstellen:

custom-layer.zip └ lib | lib_1 | lib_2 └ bin | bin_1 | bin_2

Nachdem Sie Ihre Ebene gebündelt haben, sehen Sie sich Erstellen und Löschen von Ebenen in Lambda und Hinzufügen von Ebenen zu Funktionen an, um die Einrichtung Ihrer Ebene abzuschließen.

Suchpfad für Abhängigkeiten und integrierte Laufzeit-Bibliotheken

Wenn Sie in Ihrem Code eine import-Anweisung verwenden, durchsucht die Python-Laufzeit die Verzeichnisse in ihrem Suchpfad, bis sie das Modul oder Paket findet. Standardmäßig ist der erste Speicherort, den die Laufzeit durchsucht, das Verzeichnis, in das Ihr ZIP-Bereitstellungspaket entpackt und bereitgestellt wird (/var/task). Wenn Sie eine Version einer in der Laufzeit enthaltenen Bibliothek in Ihr Bereitstellungspaket einfügen, hat Ihre Version Vorrang vor der Version, die in der Laufzeit enthalten ist. Abhängigkeiten in Ihrem Bereitstellungspaket haben ebenfalls Vorrang vor Abhängigkeiten in Ebenen.

Wenn Sie einer Ebene eine Abhängigkeit hinzufügen, extrahiert Lambda diese in /opt/python/lib/python3.x/site-packages (wobei python3.x die von Ihnen verwendete Version der Laufzeit ist) oder in /opt/python. Im Suchpfad haben diese Verzeichnisse Vorrang vor den Verzeichnissen, die die in der Laufzeit enthaltenen Bibliotheken und die über pip installierten Bibliotheken enthalten (/var/runtime und /var/lang/lib/python3.x/site-packages). Bibliotheken in Funktionsebenen haben daher Vorrang vor Versionen, die in der Laufzeit enthalten sind.

Anmerkung

In der von Python 3.11 verwalteten Laufzeit und dem Basis-Image werden das AWS SDK und seine Abhängigkeiten im /var/lang/lib/python3.11/site-packages Verzeichnis installiert.

Sie können den vollständigen Suchpfad für Ihre Lambda-Funktion sehen, indem Sie den folgenden Codeausschnitt hinzufügen.

import sys search_path = sys.path print(search_path)
Anmerkung

Da Abhängigkeiten in Ihrem Bereitstellungspaket oder Ihren Ebenen Vorrang vor Bibliotheken haben, die zur Laufzeit gehören, kann es zu Versionsproblemen kommen, wenn Sie eine SDK-Abhängigkeit wie urllib3 in Ihr Paket aufnehmen, ohne das SDK ebenfalls einzubetten. Stellen Sie Ihre eigene Version einer Boto3-Abhängigkeit bereit, müssen Sie Boto3 auch als Abhängigkeit in Ihrem Bereitstellungspaket bereitstellen. Wir empfehlen, alle Abhängigkeiten Ihrer Funktion in ein Paket aufzunehmen, auch wenn Versionen davon in der Laufzeit enthalten sind.

Fügen Sie Abhängigkeiten alternativ auch in einem separaten Ordner in Ihrem ZIP-Paket hinzu. Fügen Sie beispielsweise eine Version des Boto3-SDK zu einem Ordner in Ihrem ZIP-Paket mit dem Namen „common“ hinzu. Wird Ihr ZIP-Paket entpackt und bereitgestellt, wird dieser Ordner im Verzeichnis „/var/task“ abgelegt. Mit einer import from-Anweisung verwenden Sie eine Abhängigkeit aus einem Ordner Ihres ZIP-Bereitstellungspakets in Ihrem Code. Verwenden Sie mithilfe folgender Anweisung beispielsweise eine Version von Boto3 aus einem Ordner, der in Ihrem ZIP-Paket „common“ heißt.

from common import boto3

__pycache__-Ordner verwenden

Es wird empfohlen, keine __pycache__-Ordner in das Bereitstellungspaket Ihrer Funktion aufzunehmen. Python-Bytecode, der auf einem Build-Computer mit einer anderen Architektur oder in einem anderen Betriebssystem kompiliert wurde, ist möglicherweise nicht mit der Lambda-Ausführungsumgebung kompatibel.

ZIP-Bereitstellungspakete mit nativen Bibliotheken erstellen

Verwendet Ihre Funktion nur reine Python-Pakete und -Module, können Sie mit dem pip install-Befehl Ihre Abhängigkeiten auf einem beliebigen lokalen Build-Computer installieren und Ihre ZIP-Datei erstellen. Viele beliebte Python-Bibliotheken, einschließlich NumPy und Pandas, sind kein reines Python und enthalten Code, der in C oder C++ geschrieben wurde. Fügen Sie Ihrem Bereitstellungspaket Bibliotheken hinzu, die C-/C++-Code enthalten, müssen Sie Ihr Paket korrekt erstellen, damit es mit der Lambda-Ausführungsumgebung kompatibel ist.

Die meisten Pakete im Python-Paketindex (PyPI) sind als „Wheels“ (WHL-Dateien) verfügbar. Eine WHL-Datei ist eine Art von ZIP-Datei, die eine erstellte Distribution mit vorkompilierten Binärdateien für ein bestimmtes Betriebssystem und eine bestimmte Befehlssatzarchitektur enthält. Für die Kompatibilität Ihres Bereitstellungspakets mit Lambda installieren Sie das Wheel für Linux-Betriebssysteme und die Befehlssatzarchitektur Ihrer Funktion.

Einige Pakete sind möglicherweise nur als Quelldistributionen verfügbar. Für diese Pakete müssen Sie die C-/C++-Komponenten selbst kompilieren und erstellen.

Gehen Sie wie folgt vor, um anzuzeigen, welche Distributionen für Ihr erforderliches Paket verfügbar sind:

  1. Suchen Sie auf der Hauptseite des Python-Paketindex nach dem Namen des Pakets.

  2. Wählen Sie die Paketversion aus, die Sie verwenden möchten.

  3. Wählen Sie Dateien zum Herunterladen aus.

Mit erstellten Distributionen (Wheels) arbeiten

Zum Herunterladen eines Wheels, das mit Lambda kompatibel ist, verwenden Sie die pip-Option „--platform“.

Verwendet Ihre Lambda-Funktion die x86_64-Befehlssatzarchitektur, führen Sie den folgenden pip install-Befehl aus, um ein kompatibles Wheel in Ihrem package-Verzeichnis zu installieren. Ersetzen Sie „--python 3.x“ durch die Version der verwendeten Python-Laufzeit.

pip install \ --platform manylinux2014_x86_64 \ --target=package \ --implementation cp \ --python-version 3.x \ --only-binary=:all: --upgrade \ <package_name>

Verwendet Ihre Funktion die arm64-Befehlssatzarchitektur, führen Sie den folgenden Befehl aus. Ersetzen Sie „--python 3.x“ durch die Version der verwendeten Python-Laufzeit.

pip install \ --platform manylinux2014_aarch64 \ --target=package \ --implementation cp \ --python-version 3.x \ --only-binary=:all: --upgrade \ <package_name>

Mit Quelldistributionen arbeiten

Ist Ihr Paket nur als Quelldistribution verfügbar, müssen Sie die C-/C++-Bibliotheken selbst erstellen. Für die Kompatibilität Ihres Pakets mit der Lambda-Ausführungsumgebung müssen Sie es in einer Umgebung erstellen, die dasselbe Amazon-Linux-2-Betriebssystem verwendet. Erstellen Sie dafür Ihr Paket in einer Amazon-EC2-Linux-Instance.

Weitere Informationen zum Starten und Herstellen einer Verbindung mit einer Amazon-EC2-Linux-Instance finden Sie unter Tutorial: Erste Schritte mit Amazon-EC2-Instances für Linux im Amazon-EC2-Benutzerhandbuch für Linux-Instances.

Python-Lambda-Funktionen mithilfe von ZIP-Dateien erstellen und aktualisieren

Nach der Erstellung Ihres ZIP-Bereitstellungspakets können Sie es verwenden, um eine neue Lambda-Funktion zu erstellen oder eine vorhandene zu aktualisieren. Sie können Ihr ZIP-Paket mithilfe der Lambda-Konsole, der AWS Command Line Interface und der Lambda-API bereitstellen. Sie können Lambda-Funktionen auch mit AWS Serverless Application Model (AWS SAM) und AWS CloudFormation erstellen und aktualisieren.

Die maximale Größe eines ZIP-Bereitstellungspakets für Lambda beträgt 250 MB (entpackt). Beachten Sie, dass dieser Grenzwert für die kombinierte Größe aller hochgeladenen Dateien gilt, einschließlich aller Lambda-Ebenen.

Die Lambda-Laufzeit benötigt die Berechtigung zum Lesen der Dateien in Ihrem Bereitstellungspaket. In der oktalen Linux-Notation für Berechtigungen benötigt Lambda 644 Berechtigungen für nicht ausführbare Dateien (rw-r--r---) und 755 Berechtigungen (rwxr-xr-x) für Verzeichnisse und ausführbare Dateien.

Verwenden Sie unter Linux und MacOS den chmod-Befehl, um Dateiberechtigungen für Dateien und Verzeichnisse in Ihrem Bereitstellungspaket zu ändern. Führen Sie beispielsweise den folgenden Befehl aus, um einer ausführbaren Datei die richtigen Berechtigungen zu gewähren.

chmod 755 <filepath>

Informationen zum Ändern von Dateiberechtigungen in Windows finden Sie unter Festlegen, Anzeigen, Ändern oder Entfernen von Berechtigungen für ein Objekt in der Microsoft-Windows-Dokumentation.

Erstellen und Aktualisieren von Funktionen mit ZIP-Dateien unter Verwendung der Konsole

Eine neue Funktion müssen Sie zuerst in der Konsole erstellen und dann Ihr ZIP-Archiv hochladen. Zum Aktualisieren einer bestehenden Funktion öffnen Sie die Seite für Ihre Funktion und gehen dann genauso vor, um Ihre aktualisierte ZIP-Datei hinzuzufügen.

Bei einer ZIP-Datei mit unter 50 MB können Sie eine Funktion erstellen oder aktualisieren, indem Sie die Datei direkt von Ihrem lokalen Computer hochladen. Bei ZIP-Dateien mit einer Größe von mehr als 50 MB müssen Sie Ihr Paket zuerst in einen Amazon-S3-Bucket hochladen. Anweisungen zum Hochladen einer Datei in einen Amazon S3-Bucket mit der AWS Management Console finden Sie unter Erste Schritte mit Amazon S3. Informationen zum Hochladen von Dateien mit der AWS CLI finden Sie unter Verschieben von Objekten im AWS CLI -Benutzerhandbuch.

Anmerkung

Sie können den Bereitstellungspakettyp (ZIP- oder Container-Image) für eine vorhandene Funktion nicht ändern. Beispielsweise können Sie eine Container-Image-Funktion nicht konvertieren, um ein ZIP-Dateiarchiv zu verwenden. Sie müssen eine neue Funktion erstellen.

So erstellen Sie eine neue Funktion (Konsole)
  1. Öffnen Sie die Funktionsseite der Lambda-Konsole und wählen Sie Funktion erstellen aus.

  2. Wählen Sie Author from scratch aus.

  3. Führen Sie unter Basic information (Grundlegende Informationen) die folgenden Schritte aus:

    1. Geben Sie als Funktionsname den Namen Ihrer Funktion ein.

    2. Wählen Sie für Laufzeit die Laufzeit aus, die Sie verwenden möchten.

    3. (Optional) Für Architektur wählen Sie die Befehlssatz-Architektur für Ihre Funktion aus. Die Standardarchitektur ist x86_64. Stellen Sie sicher, dass das ZIP-Bereitstellungspaket für Ihre Funktion mit der von Ihnen gewählten Befehlssatzarchitektur kompatibel ist.

  4. (Optional) Erweitern Sie unter Berechtigungen die Option Standardausführungsrolle ändern. Sie können eine neue Ausführungsrolle erstellen oder eine vorhandene Rolle verwenden.

  5. Wählen Sie Funktion erstellen. Lambda erstellt eine grundlegende „Hello World“-Funktion mit der von Ihnen gewählten Laufzeit.

So laden Sie ein ZIP-Archiv von Ihrem lokalen Computer hoch (Konsole)
  1. Wählen Sie auf der Funktionsseite der Lambda-Konsole die Funktion aus, für die Sie die ZIP-Datei hochladen möchten.

  2. Wählen Sie die Registerkarte Code aus.

  3. Wählen Sie im Bereich Codequelle die Option Hochladen von aus.

  4. Wählen Sie die ZIP-Datei aus.

  5. Laden Sie die ZIP-Datei wie folgt hoch:

    1. Wählen Sie Hochladen und dann Ihre ZIP-Datei in der Dateiauswahl aus.

    2. Klicken Sie auf Open.

    3. Wählen Sie Speichern.

So laden Sie ein ZIP-Archiv aus einem Amazon-S3-Bucket hoch (Konsole)
  1. Wählen Sie auf der Funktionsseite der Lambda-Konsole die Funktion aus, für die Sie eine neue ZIP-Datei hochladen möchten.

  2. Wählen Sie die Registerkarte Code aus.

  3. Wählen Sie im Bereich Codequelle die Option Hochladen von aus.

  4. Wählen Sie den Amazon-S3-Speicherort aus.

  5. Fügen Sie die Amazon-S3-Link-URL Ihrer ZIP-Datei ein und wählen Sie Speichern aus.

ZIP-Dateifunktionen mithilfe des Konsolencode-Editors aktualisieren

Für einige Funktionen mit ZIP-Bereitstellungspaketen können Sie Ihren Funktionscode direkt mit dem in der Lambda-Konsole integrierten Code-Editor aktualisieren. Zur Verwendung dieses Features muss Ihre Funktion folgende Kriterien erfüllen:

  • Ihre Funktion muss eine der interpretierten Sprache der Laufzeit verwenden (Python, Node.js oder Ruby).

  • Das Bereitstellungspaket Ihrer Funktion muss kleiner als 3 MB sein.

Funktionscode für Funktionen mit Container-Image-Bereitstellungspaketen kann nicht direkt in der Konsole bearbeitet werden.

So aktualiseren Sie Ihren Funktionscode mit dem Code-Editor
  1. Öffnen Sie die Funktionsseite der Lambda-Konsole und wählen Sie Ihre Funktion aus.

  2. Wählen Sie die Registerkarte Code aus.

  3. Wählen Sie im Bereich Codequelle Ihre Quellcodedatei aus und bearbeiten Sie sie im integrierten Code-Editor.

  4. Nach der Bearbeitung Ihres Codes wählen Sie Bereitstellen aus, um Ihre Änderungen zu speichern und Ihre Funktion zu aktualisieren.

Erstellen und Aktualisieren von Funktionen mit ZIP-Dateien mithilfe der AWS CLI

Sie können die AWS CLI verwenden, um eine neue Funktion zu erstellen oder eine vorhandene unter Verwendung einer ZIP-Datei zu aktualisieren. Verwenden Sie die update-function-code Befehle create-function und , um Ihr ZIP-Paket bereitzustellen. Wenn Ihre ZIP-Datei kleiner als 50 MB ist, können Sie das ZIP-Paket von einem Dateispeicherort auf Ihrem lokalen Build-Computer hochladen. Bei größeren Dateien müssen Sie Ihr ZIP-Paket aus einem Amazon-S3-Bucket hochladen. Anweisungen zum Hochladen einer Datei in einen Amazon S3-Bucket mithilfe der finden Sie AWS CLI unter Objekte verschieben im AWS CLI -Benutzerhandbuch.

Anmerkung

Wenn Sie Ihre ZIP-Datei aus einem Amazon S3-Bucket mit der hochladen AWS CLI, muss sich der Bucket in derselben AWS-Region wie Ihre Funktion befinden.

Um eine neue Funktion mit einer ZIP-Datei mit der zu erstellen AWS CLI, müssen Sie Folgendes angeben:

  • Den Namen Ihrer Funktion (--function-name)

  • Die Laufzeit Ihrer Funktion (--runtime)

  • Den Amazon-Ressourcennamen (ARN) der Ausführungsrolle der Funktion (--role).

  • Den Namen der Handler-Methode in Ihrem Funktionscode (--handler)

Sie müssen auch den Speicherort Ihrer ZIP-Datei angeben. Befindet sich Ihre ZIP-Datei in einem Ordner auf Ihrem lokalen Build-Computer, verwenden Sie die --zip-file-Option, um den Dateipfad anzugeben, wie im folgenden Beispielbefehl gezeigt.

aws lambda create-function --function-name myFunction \ --runtime python3.12 --handler lambda_function.lambda_handler \ --role arn:aws:iam::111122223333:role/service-role/my-lambda-role \ --zip-file fileb://myFunction.zip

Zur Angabe des Speicherorts der ZIP-Datei in einem Amazon-S3-Bucket verwenden Sie die im folgenden Beispielbefehl gezeigte --code-Option. Sie müssen den S3ObjectVersion-Parameter nur für versionierte Objekte verwenden.

aws lambda create-function --function-name myFunction \ --runtime python3.12 --handler lambda_function.lambda_handler \ --role arn:aws:iam::111122223333:role/service-role/my-lambda-role \ --code S3Bucket=myBucketName,S3Key=myFileName.zip,S3ObjectVersion=myObjectVersion

Um eine vorhandene Funktion mit der CLI zu aktualisieren, geben Sie den Namen Ihrer Funktion unter Verwendung des --function-name-Parameters an. Sie müssen auch den Speicherort der ZIP-Datei angeben, die Sie zum Aktualisieren Ihres Funktionscodes verwenden möchten. Befindet sich Ihre ZIP-Datei in einem Ordner auf Ihrem lokalen Build-Computer, verwenden Sie die --zip-file-Option, um den Dateipfad anzugeben, wie im folgenden Beispielbefehl gezeigt.

aws lambda update-function-code --function-name myFunction \ --zip-file fileb://myFunction.zip

Zur Angabe des Speicherorts der ZIP-Datei in einem Amazon-S3-Bucket verwenden Sie die im folgenden Beispielbefehl gezeigten --s3-bucket- und --s3-key-Optionen. Sie müssen den --s3-object-version-Parameter nur für versionierte Objekte verwenden.

aws lambda update-function-code --function-name myFunction \ --s3-bucket myBucketName --s3-key myFileName.zip --s3-object-version myObject Version

Erstellen und Aktualisieren von Funktionen mit ZIP-Dateien unter Verwendung der Lambda-API

Um Funktionen zu erstellen und zu konfigurieren, die ein ZIP-Dateiarchiv verwenden, verwenden Sie die folgenden API-Operationen:

Erstellen und Aktualisieren von Funktionen mit ZIP-Dateien mithilfe von AWS SAM

Die AWS Serverless Application Model (AWS SAM) ist ein Toolkit, das den Prozess der Erstellung und Ausführung von Serverless-Anwendungen auf optimiert AWS. Sie definieren die Ressourcen für Ihre Anwendung in einer YAML- oder JSON-Vorlage und verwenden die AWS SAM Befehlszeilenschnittstelle (AWS SAM CLI), um Ihre Anwendungen zu erstellen, zu verpacken und bereitzustellen. Wenn Sie eine Lambda-Funktion aus einer - AWS SAM Vorlage erstellen, erstellt AWS SAM automatisch ein ZIP-Bereitstellungspaket oder Container-Image mit Ihrem Funktionscode und allen von Ihnen angegebenen Abhängigkeiten. Weitere Informationen zur Verwendung von AWS SAM zum Erstellen und Bereitstellen von Lambda-Funktionen finden Sie unter Erste Schritte mit AWS SAM im AWS Serverless Application Model -Entwicklerhandbuch.

Sie können auch verwenden AWS SAM , um eine Lambda-Funktion mit einem vorhandenen ZIP-Dateiarchiv zu erstellen. Um eine Lambda-Funktion mit zu erstellen AWS SAM, können Sie Ihre ZIP-Datei in einem Amazon S3-Bucket oder in einem lokalen Ordner auf Ihrem Build-Computer speichern. Anweisungen zum Hochladen einer Datei in einen Amazon S3-Bucket mithilfe der finden Sie AWS CLI unter Objekte verschieben im AWS CLI -Benutzerhandbuch.

In Ihrer AWS SAM Vorlage gibt die AWS::Serverless::Function Ressource Ihre Lambda-Funktion an. Legen Sie in dieser Ressource die folgenden Eigenschaften fest, um eine Funktion zu erstellen, die als ZIP-Datei-Archiv definiert ist:

  • PackageType – festlegen auf Zip

  • CodeUri – auf den Amazon S3-URI, den Pfad zum lokalen Ordner oder FunctionCode Objekt des Funktionscodes festgelegt

  • Runtime – festlegen auf die gewünschte Laufzeit

Wenn AWS SAM Ihre ZIP-Datei größer als 50MB ist, müssen Sie sie nicht zuerst in einen Amazon S3-Bucket hochladen. AWS SAM kann ZIP-Pakete bis zur maximal zulässigen Größe von 250MB (entpackt) von einem Speicherort auf Ihrem lokalen Build-Computer hochladen.

Weitere Informationen zum Bereitstellen von Funktionen mithilfe der ZIP-Datei in finden Sie AWS SAM unter AWS::Serverless::Function im AWS SAM -Entwicklerhandbuch.

Erstellen und Aktualisieren von Funktionen mit ZIP-Dateien mithilfe von AWS CloudFormation

Sie können verwenden AWS CloudFormation , um eine Lambda-Funktion mit einem ZIP-Dateiarchiv zu erstellen. Um eine Lambda-Funktion aus einer ZIP-Datei zu erstellen, müssen Sie Ihre Datei zunächst in einen Amazon-S3-Bucket hochladen. Anweisungen zum Hochladen einer Datei in einen Amazon S3-Bucket mit der AWS CLI finden Sie unter Objekte verschieben im AWS CLI -Benutzerhandbuch.

Für Node.js- und Python-Laufzeiten können Sie auch Inline-Quellcode in Ihrer AWS CloudFormation template angeben. AWS CloudFormation erstellt eine ZIP-Datei, die Ihren Code enthält, wenn Sie Ihre Funktion erstellen.

Eine vorhandene ZIP-Datei verwenden

In Ihrer AWS CloudFormation Vorlage gibt die AWS::Lambda::Function Ressource Ihre Lambda-Funktion an. Legen Sie in dieser Ressource die folgenden Eigenschaften fest, um eine Funktion zu erstellen, die als ZIP-Datei-Archiv definiert ist:

  • PackageType – festlegen auf Zip

  • Code – Geben Sie den Namen des Amazon-S3-Buckets und den ZIP-Dateinamen in die Felder S3Bucket und S3Key ein

  • Runtime – festlegen auf die gewünschte Laufzeit

Eine ZIP-Datei aus dem Inline-Code erstellen

Sie können einfache Funktionen, die in Python oder Node.js geschrieben sind, in einer - AWS CloudFormation Vorlage deklarieren. Da der Code in YAML oder JSON eingebettet ist, können Sie Ihrem Bereitstellungspaket keine externen Abhängigkeiten hinzufügen. Das bedeutet, dass Ihre Funktion die Version des AWS SDK verwenden muss, die in der Laufzeit enthalten ist. Die Anforderungen der Vorlage, wie die Notwendigkeit von Escapezeichen für bestimmte Zeichen, erschweren ebenfalls die Verwendung von IDE-Features zur Syntaxprüfung und Codevervollständigung. Ihre Vorlage erfordert deshalb möglicherweise zusätzliche Tests. Aufgrund dieser Einschränkungen eignet sich die Inline-Deklaration von Funktionen am besten für sehr einfachen Code, der sich nicht häufig ändert.

Zum Erstellen einer ZIP-Datei aus Inline-Code für Node.js- und Python-Laufzeiten legen Sie die folgenden Eigenschaften in der Ressource Ihrer AWS::Lambda::Function-Vorlage fest:

  • PackageType – festlegen auf Zip

  • Code – Funktionscode in das ZipFile-Feld eingeben

  • Runtime – festlegen auf die gewünschte Laufzeit

Die von AWS CloudFormation generierte ZIP-Datei darf 4MB nicht überschreiten. Weitere Informationen zum Bereitstellen von Funktionen mithilfe der ZIP-Datei in finden Sie AWS CloudFormation unter AWS::Lambda::Function im AWS CloudFormation -Benutzerhandbuch.