[PYTHON] Comment configurer Layer sur Lambda à l'aide d'AWS SAM

Comment configurer une couche sur Lambda à l'aide d'AWS SAM

introduction

Lors de la création d'une application sans serveur à l'aide de Lambda ou dynamoDB avec AWS SAM, le code couramment utilisé dans divers projets peut sortir. Ce serait pratique si les choses qui pourraient être partagées pouvaient être partagées rapidement et appelées en cas de besoin, alors je les ai immédiatement mises en pratique.

AWS Lambda possède une fonction Layer et vous pouvez définir la bibliothèque que vous souhaitez utiliser dans le code Lambda. J'ai essayé de savoir comment configurer du code et des bibliothèques qui dépendent de Layer en tant que projet d'AWS SAM.

J'ai trouvé des moyens de sauvegarder les bibliothèques nécessaires pour Layer to S3 dans Zip et de les définir à partir de la console AWS, mais je ne pouvais pas vraiment travailler pour les déployer en tant que projets AWS SAM, alors je les ai écrits sous forme de mémorandum. Je vais le laisser.

Conditions préalables

Nous supposerons que vous avez déjà installé l'AWS SAM CLI. Cette explication utilise Python 3.6.

Structure du répertoire

Le répertoire qui stocke le code et les bibliothèques que vous souhaitez utiliser comme couche est déterminé pour chaque langue. Inclure les dépendances de la bibliothèque AWS Lambda dans les couches (https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/configuration-layers.html#configuration-layers-path)

Pour python, si vous ne le stockez pas dans python ou python / lib / python3.6 / site-packages, l'erreur de référence suivante sera affichée.

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

Ajoutez le répertoire pour stocker la couche au projet SAM créé par la commande sam init.

sam-app
├── README.md
├── app
│   ├── __init__.py
│   ├── app.py
│   └── requirements.txt
├── events
│   └── event.json
├── layer                       //Ajoutez un répertoire de stockage de couches ici
│   └── python                  //Répertoire des noms de langue
│       └── sample
│           └── sample_layer.py   //Code que vous souhaitez utiliser comme couche
└── template.yaml

Comment écrire 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     #Point 1
      Events:
        (réduction)

  #Définition de la couche
  LayerSampleLayer:
    Type: AWS::Serverless::LayerVersion
    Properties:
      LayerName: layer-sample-layer
      Description: Hello World Sample Application Resource Layer
      ContentUri: layer              #Point 2

Il y a deux points dans l'écriture de template.yaml.

  1. Ajoutez l'élément Layers à la définition de la fonction Lambda et définissez-le pour qu'il fasse référence à la définition de la couche.

  2. Dans la définition de couche, définissez le chemin du dossier qui stocke le code de couche. → Pour être exact, définissez le répertoire parent du répertoire des noms de langue

importer dans app.py

Si vous définissez le calque dans template.yaml, vous pouvez l'utiliser comme s'il se trouvait dans le même calque que app.py. Les paramètres ne seront pas reflétés à moins que vous ne fassiez une fois sam build.

app.py


#Parcourir le fichier ajouté en tant que couche
from sample import sample_layer

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

sample_layer.py


def hello():
    return "hello Layer!"

référence

Qu'est-ce qu'AWS Serverless Application Model (AWS SAM) AWS Lambda Layer

Recommended Posts

Comment configurer Layer sur Lambda à l'aide d'AWS SAM
Comment configurer SVM à l'aide d'Optuna
Publiez régulièrement sur Twitter en utilisant AWS lambda!
Comment configurer XG Boost à l'aide d'Optuna
Résumé de l'écriture d'AWS Lambda
Comment configurer un notebook Jupyter à la destination SSH (AWS EC2)
[Version 2020] Comment installer Python3 sur EC2 d'AWS
Comment configurer une forêt aléatoire à l'aide d'Optuna
Comment configurer une forêt aléatoire à l'aide d'Optuna
[AWS / Lambda] Comment charger une bibliothèque externe Python
Comment configurer un environnement Python à l'aide de pyenv
Vérifiez types_map lors de l'utilisation de mimetypes avec AWS Lambda (Python)
J'ai essayé d'obtenir une AMI en utilisant AWS Lambda
Je veux AWS Lambda avec Python sur Mac!
[AWS EC2] Comment installer Maven sur Amazon Linux 2
[AWS] Comment étendre l'espace disque sur Amazon Linux
Une petite histoire à savoir comme un point addictif lors de l'écriture d'applications Twilio à l'aide de Python sur AWS Lambda
Comment s'inscrire auprès de pypi
Web scraping à l'aide d'AWS lambda
Comment utiliser Python lambda
Publié en tant que pièce jointe à Slack sur AWS Lambda (Python)
Comment importer la bibliothèque Python configurée dans EFS dans Lambda
Points addictifs lors du téléchargement de fichiers à l'aide de boto sur AWS Lambda
Créez rapidement une API avec Python, lambda et API Gateway à l'aide d'AWS SAM
[Python] Permet d'importer les packages pip3 sur AWS Lambda
Comment configurer cron pour le scraping Python normal sur le serveur Sakura.
Comment installer Python à l'aide d'Anaconda
Récapitulatif si vous utilisez AWS Lambda (Python)
Comment installer mysql-connector-python sur Mac
Comment utiliser Dataiku sous Windows
Remarques sur l'utilisation de pywinauto
Comment installer Graph-Tool sur macOS
Précautions lors de l'exécution de Python sur EC2 à partir d'AWS Lambda (Exécuter la commande)
Comment installer VMware-Tools sur Linux
Comment installer pycrypto sur Windows
Comment déployer django-compresseur sous Windows
Exécutez Python selon la planification sur AWS Lambda
Remarques sur l'utilisation des featuretools
Comment installer OpenCV sur Mac
Comment exécuter matplotlib sur heroku
Comment installer PyPy sur CentOS
Comment créer un environnement Python à l'aide de Virtualenv sur Ubuntu 18.04 LTS
Comment utiliser l'homebrew dans Debian
Tweet Récapitulatif WakaTime à l'aide d'AWS Lambda
Malentendu sur la façon de connecter CNN
Comment installer TensorFlow sur CentOS 7
Comment ajouter un volume AWS EBS
Configurer un nœud pour faire MNIST sur ROS à l'aide de Tensorflow
Comment installer Maven sur CentOS
Remarques sur la rédaction de requirements.txt
[Pour Python] Créez rapidement un fichier de téléchargement vers AWS Lambda Layer
Comment installer Music 21 sur Windows
Comment installer Theano sur Mac OS X 10.10 (en utilisant pyenv, anaconda)
[AWS SAM] Présentation de la version Python
Comment créer une API de machine learning sans serveur avec AWS Lambda
Comment générer un nouveau groupe de journaux dans CloudWatch à l'aide de python dans Lambda