[PYTHON] AWS Lambda Layers Eine kurze Erklärung von der Erstellung bis zur Verknüpfung

Einführung

Dies ist ein Artikel über Python.

Was sind Ebenen?

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.

Hinweis

・ Mit Lambda können bis zu 5 Schichten gleichzeitig verwendet werden

Verzeichnisaufbau

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

Eine Ebene erstellen

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

スクリーンショット 2020-10-28 16.57.13.png

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.

Link zur Lambda-Funktion

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".

スクリーンショット 2020-10-28 16.55.56.png

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

Häufige Fehler

・ 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 .

Zusammenfassung

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.

Referenz

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

Recommended Posts

AWS Lambda Layers Eine kurze Erklärung von der Erstellung bis zur Verknüpfung
Senden Sie eine Anfrage von AWS Lambda an Amazon Elasticsearch Service
Eine Geschichte, die ich süchtig danach war, Lambda von AWS Lambda anzurufen.
Erstellen Sie Einstellungen in Terraform, um Nachrichten von AWS Lambda Python3.8 an Slack zu senden
Tweet von AWS Lambda
Terraform konfiguriert, um AWS Lambda von Amazon SQS aus zu starten
Schritte von der Installation von Python 3 bis zur Erstellung einer Django-App
Vorgehensweise zum Erstellen eines Linienbot in AWS Lambda
So starten Sie AWS Batch über die Python-Client-App
So erstellen Sie AWS Lambda-Schichten, wenn Selen × Chrom auf AWS Lambda ausgeführt wird
Vorsichtsmaßnahmen beim Ausführen von Python unter EC2 über AWS Lambda (Befehl ausführen)
[Python / AWS Lambda-Ebenen] Ich möchte nur Module in AWS Lambda-Ebenen wiederverwenden
Führen Sie Systems Manager von Lambda aus, um ein Backup von EC2 zu erhalten
So erstellen Sie mit AWS Lambda eine serverlose API für maschinelles Lernen
So erhalten Sie den Wert aus dem Parameterspeicher in Lambda (mit Python)
Bequem zum Verwenden von Ebenen beim Laden von Bibliotheken auf Lambda
Ändern Sie die AWS EC2-Instanz von t2 in t3
So erstellen Sie einen Klon aus Github
Führen Sie ein Skript von Jupyter aus, um es zu verarbeiten
Poste regelmäßig mit AWS Lambda auf Twitter!
Zugriff auf RDS von Lambda (Python)
Fluss vom Quellcode zum Erstellen des Ausführungsformats
Stellen Sie mit AWS Lambda Python eine Verbindung zu s3 her
Erstellen eines Shell-Skripts zum Schreiben eines Tagebuchs
API-Erklärung zum Berühren von Mastodon aus Python
Zusammenfassung des Schreibens von AWS Lambda
Erstellen eines LINE BOT, um zusätzliche AtCoder-Wettbewerbe mit AWS zu benachrichtigen
[AWS; Einführung in Lambda] 2. Extrahieren Sie Sätze aus der JSON-Datei und speichern Sie S3 ♬