[PYTHON] So konfigurieren Sie Layer auf Lambda mit AWS SAM

So richten Sie mit AWS SAM eine Ebene auf Lambda ein

Einführung

Beim Erstellen einer serverlosen Anwendung mit Lambda oder dynamoDB mit AWS SAM wird möglicherweise der Code ausgegeben, der üblicherweise in verschiedenen Projekten verwendet wird. Es wäre praktisch, wenn Dinge, die geteilt werden könnten, schnell geteilt und bei Bedarf aufgerufen werden könnten, also habe ich sie sofort in die Praxis umgesetzt.

AWS Lambda verfügt über eine Ebenenfunktion, und Sie können die Bibliothek festlegen, die Sie im Lambda-Code verwenden möchten. Ich habe versucht herauszufinden, wie Code und Bibliotheken eingerichtet werden, die von Layer als Projekt von AWS SAM abhängen.

Ich habe einige Möglichkeiten gefunden, die erforderlichen Bibliotheken für Layer in Zip in S3 zu speichern und über die AWS-Konsole festzulegen, konnte sie jedoch nicht als AWS SAM-Projekt bereitstellen. Daher habe ich sie als Memorandum geschrieben. Ich werde es verlassen.

Voraussetzungen

Wir gehen davon aus, dass Sie die AWS SAM CLI bereits installiert haben. Diese Erklärung verwendet Python 3.6.

Verzeichnisaufbau

Das Verzeichnis, in dem der Code und die Bibliotheken gespeichert sind, die Sie als Layer verwenden möchten, wird für jede Sprache festgelegt. Einfügen von AWS Lambda-Bibliotheksabhängigkeiten in Ebenen (https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/configuration-layers.html#configuration-layers-path)

Wenn Sie es für Python nicht in "Python" oder "Python / lib / python3.6 / site-packages" speichern, wird der folgende Referenzfehler angezeigt.

Unable to import module 'app': cannot import name 'layer_code'

Fügen Sie das Verzeichnis zum Speichern der Ebene zu dem SAM-Projekt hinzu, das mit dem Befehl sam init erstellt wurde.

sam-app
├── README.md
├── app
│   ├── __init__.py
│   ├── app.py
│   └── requirements.txt
├── events
│   └── event.json
├── layer                       //Fügen Sie hier das Layer-Speicherverzeichnis hinzu
│   └── python                  //Verzeichnis der Sprachnamen
│       └── sample
│           └── sample_layer.py   //Code, den Sie als Ebene verwenden möchten
└── template.yaml

Wie schreibe ich template.yaml

template.yaml


  HelloWorldFunction:
    Type: AWS::Serverless::Function
    Properties:
      FunctionName: hello-world-sample-function
      CodeUri: hello_world/
      Handler: app.lambda_handler
      Runtime: python3.6
      Layers:
        - !Ref LayerSampleLayer     #Punkt 1
      Events:
        (Kürzung)

  #Ebenendefinition
  LayerSampleLayer:
    Type: AWS::Serverless::LayerVersion
    Properties:
      LayerName: layer-sample-layer
      Description: Hello World Sample Application Resource Layer
      ContentUri: layer              #Punkt 2

Es gibt zwei Punkte beim Schreiben von template.yaml.

  1. Fügen Sie der Lambda-Funktionsdefinition das Element "Ebenen" hinzu und stellen Sie es so ein, dass es auf die Ebenendefinition verweist.

  2. Legen Sie in der Ebenendefinition den Ordnerpfad fest, in dem der Ebenencode gespeichert ist. → Um genau zu sein, legen Sie das übergeordnete Verzeichnis des Sprachnamenverzeichnisses fest

in app.py importieren

Wenn Sie die Ebene in template.yaml festlegen, können Sie sie so verwenden, als ob sie sich in derselben Ebene wie app.py befindet. Die Einstellungen werden nur wiedergegeben, wenn Sie "sam build" einmal ausführen.

app.py


#Durchsuchen Sie die als Ebene hinzugefügte Datei
from sample import sample_layer

def lambda_handler(event, context):
    res = sample_layer.hello()
    return res

sample_layer.py


def hello():
    return "hello Layer!"

Referenz

Was ist das AWS Serverless Application Model (AWS SAM) AWS Lambda Layer

Recommended Posts

So konfigurieren Sie Layer auf Lambda mit AWS SAM
So richten Sie SVM mit Optuna ein
Poste regelmäßig mit AWS Lambda auf Twitter!
So stellen Sie xg boost mit Optuna ein
Zusammenfassung des Schreibens von AWS Lambda
So richten Sie ein Jupyter-Notebook am SSH-Ziel ein (AWS EC2)
[Version 2020] So installieren Sie Python3 auf EC2 von AWS
So richten Sie eine zufällige Gesamtstruktur mit Optuna ein
So richten Sie eine zufällige Gesamtstruktur mit Optuna ein
[AWS / Lambda] Laden einer externen Python-Bibliothek
So richten Sie eine Python-Umgebung mit pyenv ein
Überprüfen Sie types_map, wenn Sie Mimetypen mit AWS Lambda (Python) verwenden.
Ich habe versucht, mit AWS Lambda einen AMI zu erhalten
Ich möchte Lambda mit Python auf Mac AWS!
[AWS EC2] So installieren Sie Maven unter Amazon Linux 2
[AWS] So erweitern Sie den Speicherplatz unter Amazon Linux
Eine kleine Geschichte, die beim Schreiben von Twilio-Anwendungen mit Python auf AWS Lambda süchtig macht
So registrieren Sie sich bei pypi
Web Scraping mit AWS Lambda
Wie benutzt man Python Lambda?
Gepostet als Anhang zu Slack auf AWS Lambda (Python)
So importieren Sie die in EFS eingerichtete Python-Bibliothek in Lambda
Suchtpunkte beim Herunterladen von Dateien mit boto auf AWS Lambda
Erstellen Sie mit AWS SAM schnell eine API mit Python, Lambda und API Gateway
[Python] Ermöglicht den Import von pip3-Paketen in AWS Lambda
So stellen Sie cron für reguläres Python-Scraping auf dem Sakura-Server ein.
So installieren Sie Python mit Anaconda
Zusammenfassung bei Verwendung von AWS Lambda (Python)
So installieren Sie mysql-connector-python auf einem Mac
Verwendung von Dataiku unter Windows
Hinweise zur Verwendung von Pywinauto
So installieren Sie das Graph-Tool unter macOS
Vorsichtsmaßnahmen beim Ausführen von Python unter EC2 über AWS Lambda (Befehl ausführen)
So installieren Sie VMware-Tools unter Linux
So stellen Sie den Django-Kompressor unter Windows bereit
Führen Sie Python planmäßig auf AWS Lambda aus
Hinweise zur Verwendung von featuretools
So installieren Sie OpenCV auf einem Mac
Wie man Matplotlib auf Heroku ausführt
So installieren Sie PyPy unter CentOS
So erstellen Sie eine Python-Umgebung mit Virtualenv unter Ubuntu 18.04 LTS
Wie benutzt man Homebrew in Debian?
Tweet WakaTime Zusammenfassung mit AWS Lambda
Missverständnisse beim Verbinden von cnn
So installieren Sie TensorFlow unter CentOS 7
So fügen Sie ein AWS EBS-Volume hinzu
Richten Sie mit Tensorflow einen Knoten für MNIST auf ROS ein
So installieren Sie Maven unter CentOS
Hinweise zum Schreiben von require.txt
[Für Python] Erstellen Sie schnell eine Upload-Datei in AWS Lambda Layer
So installieren Sie Musik 21 unter Windows
So installieren Sie Theano unter Mac OS X 10.10 (mit pyenv, anaconda)
[AWS SAM] Einführung in die Python-Version
So erstellen Sie mit AWS Lambda eine serverlose API für maschinelles Lernen
So generieren Sie eine neue Protokollgruppe in CloudWatch mit Python in Lambda