Laden Sie eine externe Bibliothek aus einer Lambda-Funktion mit AWS Lambda Layers. Die Python-Umgebung für Amazon Linux 2 ist ebenfalls vorhanden. (Python3.6, Anaconda)

Melden Sie sich bei der AWS Console an und richten Sie Amazon Linux 2 über EC2 ein. image.png Der Instanztyp ist ~~ t2.micro ~~ und klicken Sie auf die Schaltfläche Bestätigen und Erstellen. * Wie später beschrieben wird, verwenden Sie bitte t2.medium. image.png Bitte legen Sie die Sicherheitsgruppe selbst fest. Lassen Sie Port 22 für die SSH-Verbindung offen. image.png Wählen Sie ein vorhandenes Schlüsselpaar aus. Wenn nicht, erstellen Sie ein neues. Erforderlich für die SSH-Verbindung. image.png Instanz erstellen. Klicken Sie auf Instanz anzeigen. image.png Wenn der Status der Instanz ausgeführt wird und die Statusprüfung 2/2 lautet, ist sie abgeschlossen. image.png Kopieren Sie nach dem Erstellen der Instanz die öffentliche IPv4-IP und stellen Sie eine SSH-Verbindung von PuTTY her. image.png Öffnen Sie PuTTY und geben Sie Ihre IP-Adresse in Hostname ein. image.png Wählen Sie ein Schlüsselpaar aus Verbindung-> SSH-> Authentifizierung. Verwenden Sie PuTTYgen, um .pem in .ppk zu konvertieren. image.png Klicken Sie auf Ja. image.png Sie können sich mit ec2-user anmelden. image.png

Überprüfen Sie nach dem Anmelden Ihre Python-Version. Es scheint, dass die Python 2-Serie immer noch die Standardeinstellung ist.

$ python
Python 2.7.16 (default, Dec 12 2019, 23:58:22)
[GCC 7.3.1 20180712 (Red Hat 7.3.1-6)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> exit()

Installieren Sie Anaconda. Kopieren Sie die Download-URL von der Anaconda-Site. image.png

Wechseln Sie zur Download-URL und installieren Sie mit bash.

$ wget https://repo.anaconda.com/archive/Anaconda3-2019.10-Linux-x86_64.sh
$ bash Anaconda3-2019.10-Linux-x86_64.sh

Lesen Sie die Bedingungen mit Enter und geben Sie yes ein. Starten Sie die Installation mit Enter.

Please answer 'yes' or 'no':'
>>> yes

Anaconda3 will now be installed into this location:
/home/ec2-user/anaconda3

  - Press ENTER to confirm the location
  - Press CTRL-C to abort the installation
  - Or specify a different location below
Unpacking payload ...
   0%|   | 0/291 [00:00<?, ?it/s]

Es hat bei angehalten.

Es scheint, dass Sie dies mit t2.medium tun können. Stoppen Sie also die Instanz und ändern Sie den Instanztyp. current latest miniconda sh installer for linux hangs on Unpacking payload step #9345

Erstellen Sie nach der Installation von Anaconda eine Python 3.6-Umgebung.

$ /home/ec2-user/anaconda3/bin/conda create -n py36 python=3.6
$ /home/ec2-user/anaconda3/bin/conda init 

Starten Sie die Instanz neu und installieren Sie die Bibliothek im Python-Ordner in der py36-Umgebung.

$ conda activate py36
$ mkdir python
$ pip install -t ./python requests
$ pip install -t ./python ulid-py
$ pip install -t ./python pillow
$ pip install -t ./python numpy
$ pip install -t ./python opencv-python
$ pip install -t ./python opencv-contrib-python
$ pip install -t ./python pandas
$ pip install -t ./python matplotlib
$ pip install -t ./python folium

Zippen Sie den Python-Ordner.

$ zip -r GachiLayers.zip python

Installieren Sie die awscli-Einstellungen und boto3, um die Zip-Datei auf S3 hochzuladen.

$ pip install awscli
$ pip install boto3

Erstellen Sie einen Benutzer aus dem AWS Console IAM, um den AWS Access Key und den Secret Access Key abzurufen. image.png

Erteilen Sie die Zugriffsberechtigung für AmazonS3FullAccess. image.png

Es gibt kein bestimmtes Tag. image.png

bestätigen. image.png

Nach der Erstellung verfügen Sie über den AWS-Zugriffsschlüssel und den geheimen Zugriffsschlüssel, die für die Konfiguration von aws erforderlich sind. Bewahren Sie ihn daher an einem sicheren Ort auf. image.png

Geben Sie die AWS Configure-Einstellungen, den AWS Access Key und den Secret Access Key ein.

$ aws configure
AWS Access Key ID [None]: xxxxxxxxxxxxxxxxxxxx
AWS Secret Access Key [None]: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Default region name [None]: ap-northeast-1
Default output format [None]: json

Erstellen Sie ein Python-Programm, um die Zip-Datei in S3 hochzuladen. Erstellen Sie einen neuen S3-Bucket.

$ vi upload.py
import boto3

filename = 'GachiLayers.zip'
s3 = boto3.resource('s3')
obj = s3.Object(<INSERT YOUR BUCKET NAME>, filename)
response = obj.put(Body = open(filename, 'rb'))

Ich werde das machen.

$ python upload.py

Stellen Sie sicher, dass es in S3 hochgeladen wurde. image.png

Öffnen Sie Lambda über die AWS-Konsole und erstellen Sie eine Ebene aus Ebenen. image.png

Ich konnte es schaffen. image.png

Erstellen Sie eine Lambda-Funktion (Laufzeit ist Python3.6) und fügen Sie eine Ebene hinzu. image.png

Wählen Sie die erstellte Ebene aus. image.png

Lassen Sie uns die Lamda-Funktion bearbeiten, um sicherzustellen, dass die Bibliothek geladen ist.

import json
import requests
import ulid
from PIL import Image 
import numpy as np
import cv2
import pandas as pd 
import matplotlib.pyplot as plt
import folium
from folium import plugins

def lambda_handler(event, context):
    # TODO implement
    return {
        'statusCode': 200,
        'body': json.dumps('Hello from Lambda!')
    }

Erstellen Sie ein Testereignis. image.png

Wenn Sie können, sollte die Bibliothek geladen werden.

Response:
{
  "statusCode": 200,
  "body": "\"Hello from Lambda!\""
}

Danke für deine harte Arbeit. Sie können die Instanz löschen, wenn Sie fertig sind.

Recommended Posts

Laden Sie eine externe Bibliothek aus einer Lambda-Funktion mit AWS Lambda Layers. Die Python-Umgebung für Amazon Linux 2 ist ebenfalls vorhanden. (Python3.6, Anaconda)
Sie können Python mithilfe der Bibliothek in eine AWS Lambda-Funktion verwandeln
Stellen Sie Lambda-Funktionen sicher mit Python bereit, das mit denselben Optionen wie Amazon Linux erstellt wurde
[AWS / Lambda] Laden einer externen Python-Bibliothek
Zeigen Sie Bilder in OpenCV von Python mit einer externen USB-Kamera auf Ihrem MacBook an
Schreiben Sie die AWS Lambda-Funktion in Python
Python in ist auch ein Operator
Benachrichtigen Sie mit Notification Center, wenn die Ausführungsumgebung in Python macOS ist
Was ist "Mahjong" in der Python-Bibliothek? ??
Hinweise von der Installation von Homebrew bis zum Erstellen einer Anaconda-Umgebung für Python mit pyenv
[AWS] Lassen Sie uns einen Komponententest der Lambda-Funktion in der lokalen Umgebung durchführen
[AWS Lambda] Erstellen Sie ein Bereitstellungspaket mit dem Amazon Linux Docker-Image
[AWS] Behebung eines Problems, bei dem Lambda von CodePipeline aus angerufen hat