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