Dies ist ein Artikel über Python.
Laut der Anleitung
Eine Ebene ist ein ZIP-Archiv, das Bibliotheken, benutzerdefinierte Laufzeiten oder andere Abhängigkeiten enthält. Sie können eine Funktionsbibliothek mithilfe von Ebenen verwenden.
Durch die Überlagerung häufig verwendeter Module wie Bibliotheken entfällt die Notwendigkeit, Bibliotheken in Bereitstellungspakete aufzunehmen. Mit anderen Worten, wenn Sie eine Bibliothek oder ein Modul eines Drittanbieters mit Lambda verwenden, können Sie diese in der Ebene speichern und von jeder Lambda-Funktion aus aufrufen.
・ Mit Lambda können bis zu 5 Schichten gleichzeitig verwendet werden
Der Pfad der Lambda-Ausführungsumgebung ist also das Verzeichnis / opt Die Verzeichnisstruktur von Layer lautet / opt / python / Layer.
Die Paketstruktur der Ebene selbst sieht folgendermaßen aus.
python
├ layer.py (Code wie die allgemeine Verarbeitung kann ebenfalls eingegeben werden. Kann gemeinsam gehandhabt werden)
├ Crypto (Externe Bibliothek Teil 1)
├ psycopg2 (Externe Bibliothek Teil 2)
├ sqlalchemy (Externe Bibliothek Teil 3)
…etc
Lassen Sie es uns lokal erstellen.
Pip installiert die Bibliothek nach Speicherort.
$ pip install pycryptodome -t .
Und Reißverschluss
$ zip -r ../python .
Erstellen Sie eine Ebene in AWS
Von oben nach unten · Name erforderlich) ・ Erklärung (nicht erforderlich) ・ Hochladen (wählen Sie die zuvor erstellte Zip aus) -Kompatible Laufzeitoptionen (beachten Sie, dass es leicht zu vergessen ist) ・ Lizenz-Option (nicht erforderlich)
Klicken Sie auf Erstellen, um die Ebene zu erstellen.
Verknüpfen Sie nun die Ebene mit der Lambda-Funktion.
Wählen Sie "Designer" aus der Lambda-Funktion, der Sie die Ebene zuordnen möchten. Wählen Sie "Ebene hinzufügen".
Klicken Sie unter "Ebene auswählen" auf "Benutzerdefinierte Ebene" und wählen Sie die von Ihnen erstellte Ebene aus. Stellen Sie dann die "Version" ein und klicken Sie auf "Hinzufügen", um den Vorgang abzuschließen.
Wenn Sie von Lambda aus anrufen, importieren und rufen Sie an.
import layer
・ Lambda läuft also unter Amazon Linux Abhängig von der Umgebung, in der die Pip-Installation durchgeführt wird, können einige Bibliotheken einen Ausführungsfehler verursachen.
test_layer
├ python
├ layer.py
├ Crypto
In diesem Fall wird es in der Regel entpackt, geändert und komprimiert. Wenn Sie es so komprimieren, wie es ist, wird auch das übergeordnete Verzeichnis komprimiert und stimmt beim Erweitern nach dem Hochladen nicht mit der Verzeichnishierarchie überein. Lassen Sie uns den Inhalt so komprimieren, wie wir ihn erstellt haben.
$ zip -r ../python .
Layer ist sehr nützlich für die gemeinsame Nutzung von Code zwischen Lambda, wenn es gut verwendet wird. Lassen Sie uns das gut nutzen.
https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/configuration-layers.html
https://stackoverflow.com/questions/54467095/module-initialization-error-cannot-load-native-module-crypto-cipher-raw-ecb