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