[PYTHON] Bereiten Sie eine Umgebung für die Verwendung von OpenCV und Pillow mit AWS Lambda vor

Ich wollte etwas Ähnliches tun, also habe ich eine Entwicklungsumgebung erstellt. Vergleichen von Node.js und Python beim Erstellen eines Miniaturbilds mit AWS Lambda

Das Kissen muss anscheinend mit EC2 gebaut werden. Es war in Ordnung, eine Instanz zu starten, aber wenn Sie Amazon Linux Container Image und Docker verwenden, können Sie dies lokal tun. habe gedacht.

Kissen bauen

Ich habe mich auf diesen Bereich bezogen. Versuchen Sie, die Bildverarbeitungsbibliothek "Pillow" mit AWS Lambda zu verwenden [Bereitstellungspaket erstellen](https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/with-s3-example-deployment-pkg.html#with-s3-example-deployment-pkg- Python)

OpenCV Build

Ich habe hier darauf hingewiesen. Verfahren zum Erstellen einer OpenCV3.0-Bibliothek, die in Python von AWS Lambda verwendet werden kann

Die resultierende cv2.so-Datei war 47 MB groß. Limits für das Bereitstellungspaket für Lambda-Funktionen beträgt 50 MB, daher bin ich bereits voll. Ich habe die nicht verwendeten Module von OpenCV entfernt und die so-Datei erstellt. 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

Wenn Sie mit dieser Einstellung erstellen, werden viele OpenCV-Module deaktiviert, aber die so-Datei ist viel kleiner.

<Auszug aus dem Build-Protokoll>
--   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

Erstellen Sie ein Bereitstellungspaket

Starten Sie den fertigen Container und erstellen Sie ein Paket (Zip-Datei), das für Lambda bereitgestellt werden soll.

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 *

Der Code wird auf der Hostseite bearbeitet und in einem Ordner abgelegt, der im Ordner src des Containers bereitgestellt wird.

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

Das Bereitstellungspaket ist fertig!

(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

Danach können Sie diese Zip-Datei auf die Host-Seite bringen und über die AWS-Konsole oder die CLI für Lambda bereitstellen. Sie können mit dem Container arbeiten, müssen dann jedoch die AWS-CLI installieren.

Recommended Posts

Bereiten Sie eine Umgebung für die Verwendung von OpenCV und Pillow mit AWS Lambda vor
Erstellen einer Umgebung für die Verwendung von CaboCha mit Google Colaboratory
Eine Geschichte darüber, wie Windows 10-Benutzer eine Umgebung für die Verwendung von OpenCV3 mit Python 3.5 erstellt haben
Minimales Makefile und buildout.cfg, um eine Umgebung mit buildout zu erstellen
Verwenden Sie PIL oder Pillow mit Cygwin Python
[AWS] Verknüpfen Sie Lambda und S3 mit boto3
Stellen Sie mit AWS Lambda Python eine Verbindung zu s3 her
ImportError beim Versuch, das gcloud-Paket mit der AWS Lambda Python-Version zu verwenden
[AWS] Erstellen Sie mit CodeStar eine Python Lambda-Umgebung und führen Sie Hello World aus
Bereiten Sie eine Umgebung zum Berühren von Dateien im Grib2-Format mit Python vor (Docker Edition).
Bereiten Sie die Umgebung von Chainer auf der EC2-Spot-Instanz mit AWS Lambda vor
So beschneiden Sie ein Bild mit Python + OpenCV
Der einfachste Weg, OpenCV mit Python zu verwenden
Aufbau der Kissenumgebung - Für Docker + iPython (und OpenCV)
Zusammenfassung des Studiums von Python zur Verwendung von AWS Lambda
Ich möchte mkl mit numpy und scipy unter pyenv + Poesie verwenden
Ich habe versucht, eine Umgebung zu erstellen, um regelmäßig mit Selenium mit AWS Fargate zu überprüfen
Ich habe versucht, Twitter Scraper mit AWS Lambda zu verwenden, aber es hat nicht funktioniert.
So bereiten Sie mit pyenv-virtualenv unter Amazon Linux eine Umgebung mit unterschiedlichen Python-Versionen und -Paketen für jedes Projekt vor
Dynamische HTML-Seiten mit AWS Lambda und Python
Lassen Sie Keras 2.0 und OpenCV 3.2 in einer GPU-Umgebung arbeiten
Ich habe versucht, mit AWS Lambda einen AMI zu erhalten
So schleifen und spielen Sie ein GIF-Video mit openCV ab
Ubuntu 20.04 auf Himbeer-Pi 4 mit OpenCV und mit Python verwenden
Ich möchte Lambda mit Python auf Mac AWS!
Schritte zum schnellen Erstellen einer umfassenden Lernumgebung auf einem Mac mit TensorFlow und OpenCV
Installieren Sie Ubuntu 20.04 mit GUI und bereiten Sie die Entwicklungsumgebung vor
Machen Sie mit AWS Lambda und Python gewöhnliche Tweets flottenartig
Ich habe ein Skript geschrieben, um mit AWS Lambda + Python 2.7 schnell eine Entwicklungsumgebung für Twitter Bot zu erstellen
Gepostet als Anhang zu Slack auf AWS Lambda (Python)
[AWS] Was tun, wenn Sie mit Lambda pfeifen möchten?
Es war zu einfach, eine vorhandene Datenbank mit Django zu verwenden
[AWS] Versuchen Sie, die Python-Bibliothek mit SAM + Lambda (Python) zur Ebene hinzuzufügen.
Verwenden Sie aggdraw, wenn Sie mit Kissen schön zeichnen möchten
Konvertieren Sie verstümmelte gescannte Bilder mit Pillow und PyPDF in PDF
Ich möchte eine virtuelle Umgebung mit Jupyter Notebook verwenden!
Ich habe gerade eine virtuelle Umgebung mit der AWS-Lambda-Schicht erstellt
Konvertieren Sie Videos mit ffmpeg + python + opencv in Schwarzweiß
Site-Überwachung und Alarmbenachrichtigung mit AWS Lambda + Python + Slack
PyTorch mit AWS Lambda [Lambda-Import]
Wie benutzt man Python Lambda?
Verwenden Sie einen AWS-Interpreter mit Pycharm
Erstellen Sie mit der AWS-API einen Alias für Route53 zu CloudFront
Senden Sie mit ESP32-WROOM-32 aufgenommene Bilder an AWS (API Gateway → Lambda → S3).
So verwenden Sie das Jupyter-Notebook, ohne Ihre Umgebung mit Docker zu verschmutzen
Ich möchte eine externe Bibliothek mit IBM Cloud-Funktionen verwenden
Erstellen und testen Sie mit Docker in wenigen Minuten eine OpenCV- und Python-Umgebung
Verwendung eines externen Editors für die Python-Entwicklung mit Grasshopper
Die stärkste Möglichkeit, MeCab und CaboCha mit Google Colab zu verwenden
Erstellen einer Umgebung zum Ausführen von ChainerMN auf einer AWS-GPU-Instanz
[Für Python] Erstellen Sie schnell eine Upload-Datei in AWS Lambda Layer
So erstellen Sie eine Python- und Jupyter-Ausführungsumgebung mit VSCode
[Python] Versuchen Sie, Zeichen aus Bildern mit OpenCV und pyocr zu erkennen
So erstellen Sie mit AWS Lambda eine serverlose API für maschinelles Lernen
Ich habe versucht, mit Python + OpenCV eine Bildähnlichkeitsfunktion zu erstellen
[AWS lambda] Stellen Sie mit lambda verschiedene Bibliotheken bereit (generieren Sie eine Zip-Datei mit einem Kennwort und laden Sie sie auf s3 hoch) @ Python
Umgebungskonstruktion von Python und OpenCV