[PYTHON] Préparer un environnement pour utiliser OpenCV et Pillow avec AWS Lambda

Je voulais faire quelque chose de similaire, j'ai donc créé un environnement de développement. Comparaison de Node.js et Python lors de la création d'une vignette à l'aide d'AWS Lambda

L'oreiller semble devoir être construit avec EC2. Il était normal de lancer une instance, mais si vous utilisez Amazon Linux Container Image et Docker, vous pouvez le faire localement. pensée.

Construction d'oreiller

J'ai fait référence à ce domaine. Essayez d'utiliser la bibliothèque de traitement d'image "Pillow" avec AWS Lambda [Créer un package de déploiement](https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/with-s3-example-deployment-pkg.html#with-s3-example-deployment-pkg- python)

Construction OpenCV

Je l'ai mentionné ici. Procédure pour créer une bibliothèque OpenCV3.0 utilisable à partir de Python d'AWS Lambda

Le fichier cv2.so résultant était de 47 Mo. Limites du package de déploiement de la fonction Lambda est de 50 Mo, donc je suis déjà plein. J'ai supprimé les modules inutilisés d'OpenCV et ai suivi le fichier so. Build specific modules OpenCV

Dockerfile.

FROM amazonlinux:latest

RUN yum update -y
RUN yum install python27-devel python27-pip gcc gcc-c++ cmake git zip -y
RUN yum install libjpeg-devel zlib-devel -y
RUN pip install --upgrade pip
RUN pip install virtualenv numpy

ENV HOME /home/lambda-py
RUN mkdir $HOME
WORKDIR $HOME

RUN git clone https://github.com/opencv/opencv.git
WORKDIR $HOME/opencv
WORKDIR $HOME/opencv/build
RUN cmake -D CMAKE_BUILD_TYPE=RELEASE -D BUILD_SHARED_LIBS=NO -D BUILD_opencv_python2=ON -D BUILD_opencv_calib3d=OFF -D BUILD_opencv_objdetect=OFF -D BUILD_opencv_ml=OFF -D BUILD_opencv_features2d=OFF -D BUILD_opencv_stitching=OFF -D BUILD_opencv_videostab=OFF -D BUILD_opencv_flann=OFF -D BUILD_opencv_superres=OFF  -D BUILD_opencv_shape=OFF -D BUILD_opencv_ts=OFF -D BUILD_opencv_video=OFF -D BUILD_opencv_videoio=OFF -D CMAKE_INSTALL_PREFIX=/usr/local ..
RUN make install

WORKDIR $HOME
RUN virtualenv $HOME/venv

Construire avec ce paramètre désactive de nombreux modules OpenCV, mais le fichier so est beaucoup plus petit.

<Extrait du journal de construction>
--   OpenCV modules:
--     To be built:                 core imgproc photo imgcodecs highgui python2
--     Disabled:                    calib3d features2d flann ml objdetect shape stitching superres ts video videoio videostab world
--     Disabled by dependency:      -
--     Unavailable:                 cudaarithm cudabgsegm cudacodec cudafeatures2d cudafilters cudaimgproc cudalegacy cudaobjdetect cudaoptflow cudastereo cudawarping cudev java python3 viz


(venv) bash-4.2# ls -l /usr/local/lib/python2.7/dist-packages/      
total 40544
-rwxr-xr-x 1 root root 41510502 Nov 29 03:54 cv2.so

Créer un package de déploiement

Lancez le conteneur terminé et créez un package (fichier zip) à déployer sur Lambda.

bash-4.2# source $HOME/venv/bin/activate
(venv) bash-4.2# pip install Pillow numpy
(venv) bash-4.2# cp /usr/local/lib/python2.7/dist-packages/cv2.so ~/venv/lib/python2.7/site-packages/
(venv) bash-4.2# cd ~/venv/lib/python2.7/site-packages
(venv) bash-4.2# zip -r9 ~/lambda_function.zip *
(venv) bash-4.2# cd ~/venv/lib64/python2.7/site-packages
(venv) bash-4.2# zip -r9 ~/lambda_function.zip *

Le code est édité côté hôte et placé dans un dossier monté dans le dossier src du conteneur.

(venv) bash-4.2# cd ~/src
(venv) bash-4.2# zip ~/lambda_function.zip lambda_test.py 

Le package de déploiement est prêt!

(venv) bash-4.2# ls -l
total 39736
-rw-r--r--  1 root root 40680005 Nov 29 04:51 lambda_function.zip
drwxr-xr-x 19 root root     4096 Nov 29 03:54 opencv
drwxr-xr-x  4 root root      136 Nov 29 04:50 src
drwxr-xr-x  8 root root     4096 Nov 29 04:39 venv

Après cela, je pense que vous pouvez apporter ce fichier zip du côté hôte et le déployer sur Lambda à l'aide de la console AWS ou de la CLI. Vous pouvez travailler avec le conteneur, mais vous devez ensuite installer l'AWS CLI.

Recommended Posts

Préparer un environnement pour utiliser OpenCV et Pillow avec AWS Lambda
Créer un environnement pour utiliser CaboCha avec Google Colaboratory
Une histoire sur la façon dont les utilisateurs de Windows 10 ont créé un environnement pour utiliser OpenCV3 avec Python 3.5
Makefile minimal et buildout.cfg pour créer un environnement avec buildout
Utilisez PIL ou Pillow avec Cygwin Python
[AWS] Associez Lambda et S3 à boto3
Connectez-vous à s3 avec AWS Lambda Python
ImportError lors de la tentative d'utilisation du package gcloud avec la version AWS Lambda Python
[AWS] Créez un environnement Python Lambda avec CodeStar et faites Hello World
Préparer un environnement pour toucher les fichiers au format grib2 avec python (édition Docker)
Préparer l'environnement de Chainer sur l'instance spot EC2 avec AWS Lambda
Comment recadrer une image avec Python + OpenCV
Le moyen le plus simple d'utiliser OpenCV avec python
Construction d'un environnement d'oreiller - Pour Docker + iPython (et OpenCV)
Résumé de l'étude de Python pour utiliser AWS Lambda
Je veux utiliser mkl avec numpy et scipy sous l'environnement pyenv + poetry
J'ai essayé de créer un environnement à vérifier régulièrement en utilisant Selenium avec AWS Fargate
J'ai essayé d'utiliser Twitter Scraper avec AWS Lambda et cela n'a pas fonctionné.
Comment préparer un environnement avec une version et un package Python différents pour chaque projet avec pyenv-virtualenv sur Amazon Linux
Pages HTML dynamiques créées avec AWS Lambda et Python
Autoriser Keras 2.0 et OpenCV 3.2 à fonctionner dans un environnement GPU
J'ai essayé d'obtenir une AMI en utilisant AWS Lambda
Comment boucler et lire une vidéo gif avec openCV
Ubuntu 20.04 sur raspberry pi 4 avec OpenCV et utilisation avec python
Je veux AWS Lambda avec Python sur Mac!
Étapes pour créer rapidement un environnement d'apprentissage en profondeur sur Mac avec TensorFlow et OpenCV
Installez Ubuntu 20.04 avec GUI et préparez l'environnement de développement
Créez des tweets ordinaires comme une flotte avec AWS Lambda et Python
J'ai écrit un script pour créer rapidement un environnement de développement pour Twitter Bot avec AWS Lambda + Python 2.7
Publié en tant que pièce jointe à Slack sur AWS Lambda (Python)
[AWS] Que faire lorsque vous souhaitez piper avec Lambda
C'était trop facile d'utiliser une base de données existante avec Django
[AWS] Essayez d'ajouter la bibliothèque Python à la couche avec SAM + Lambda (Python)
Utilisez aggdraw lorsque vous voulez dessiner magnifiquement avec un oreiller
Convertissez des images numérisées déformées en PDF avec Pillow et PyPDF
Je souhaite utiliser un environnement virtuel avec jupyter notebook!
Je viens de créer un environnement virtuel avec la couche AWS lambda
Convertir une vidéo en noir et blanc avec ffmpeg + python + opencv
Surveillance du site et notification d'alerte avec AWS Lambda + Python + Slack
PyTorch avec AWS Lambda [importation Lambda]
Comment utiliser Python lambda
Utiliser l'interpréteur AWS avec Pycharm
Créez un alias pour Route53 vers CloudFront avec l'API AWS
Envoyer les images prises avec ESP32-WROOM-32 vers AWS (API Gateway → Lambda → S3)
Comment utiliser Jupyter Notebook sans polluer votre environnement avec Docker
Je souhaite utiliser une bibliothèque externe avec IBM Cloud Functions
Créez et essayez un environnement OpenCV et Python en quelques minutes à l'aide de Docker
Comment utiliser un éditeur externe pour le développement Python avec Grasshopper
La meilleure façon d'utiliser MeCab et CaboCha avec Google Colab
Création d'un environnement pour exécuter ChainerMN sur une instance de GPU AWS
[Pour Python] Créez rapidement un fichier de téléchargement vers AWS Lambda Layer
Comment créer un environnement d'exécution Python et Jupyter avec VSCode
[Python] Essayez de reconnaître les caractères des images avec OpenCV et pyocr
Comment créer une API de machine learning sans serveur avec AWS Lambda
J'ai essayé de créer une fonction de similitude d'image avec Python + OpenCV
[AWS lambda] Déployer, y compris diverses bibliothèques avec lambda (générer un zip avec un mot de passe et le télécharger vers s3) @ Python
Construction d'environnement de python et opencv