Chargez une bibliothèque externe à partir d'une fonction Lambda à l'aide des couches AWS Lambda. L'environnement Python pour Amazon Linux 2 est également en place. (Python3.6, Anaconda)

Connectez-vous à la console AWS et configurez Amazon Linux 2 à partir d'EC2. image.png Le type d'instance est ~~ t2.micro ~~ et cliquez sur le bouton Confirmer et créer. * Comme cela sera décrit plus loin, veuillez utiliser t2.medium. image.png Veuillez définir vous-même le groupe de sécurité. Laissez le port 22 ouvert pour la connexion SSH. image.png Sélectionnez une paire de clés existante, sinon créez-en une nouvelle. Requis pour la connexion SSH. image.png Créer une instance. Cliquez sur Afficher l'instance. image.png Lorsque l'état de l'instance est en cours d'exécution et que le contrôle d'état est 2/2, il est terminé. image.png Après avoir créé l'instance, copiez l'adresse IP publique IPv4 et établissez une connexion SSH à partir de PuTTY. image.png Ouvrez PuTTY et entrez l'adresse IP dans le champ Nom d'hôte. image.png Sélectionnez une paire de clés dans Connexion-> SSH-> Auth. Utilisez PuTTYgen pour convertir .pem en .ppk. image.png Cliquez sur Oui. image.png Vous pouvez vous connecter avec ec2-user. image.png

Après vous être connecté, vérifiez votre version de Python. Il semble que la série Python 2 soit toujours la série par défaut.

$ 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()

Installez Anaconda. Copiez l'URL de téléchargement depuis le site Anaconda. image.png

Accédez à l'URL de téléchargement et installez avec bash.

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

Lisez les termes avec Entrée et entrez oui. Démarrez l'installation avec 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]

Il s'est arrêté à.

Il semble que vous puissiez le faire avec t2.medium, alors arrêtez l'instance et changez le type d'instance. current latest miniconda sh installer for linux hangs on Unpacking payload step #9345

Après avoir installé Anaconda, créez un environnement Python 3.6.

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

Redémarrez l'instance et installez la bibliothèque dans le dossier python de l'environnement py36.

$ 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

Compressez le dossier python.

$ zip -r GachiLayers.zip python

Installez les paramètres awscli et boto3 pour télécharger le fichier zip sur S3.

$ pip install awscli
$ pip install boto3

Créez un utilisateur à partir de l'AWS Console IAM pour obtenir la clé d'accès AWS et la clé d'accès secrète. image.png

Accordez l'autorisation d'accès pour AmazonS3FullAccess. image.png

Il n'y a pas de balise particulière. image.png

confirmer. image.png

Une fois créés, vous aurez la clé d'accès AWS et la clé d'accès secrète nécessaires pour la configuration d'aws, alors conservez-les en lieu sûr. image.png

Saisissez les paramètres AWS Configure, la clé d'accès AWS et la clé d'accès secrète.

$ 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

Créez un programme Python pour télécharger le fichier Zip sur S3. Créez un nouveau compartiment S3.

$ 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'))

Je le ferai.

$ python upload.py

Assurez-vous qu'il a été téléchargé sur S3. image.png

Ouvrez Lambda à partir de la console AWS et créez une couche à partir des couches. image.png

J'ai pu le créer. image.png

Créez une fonction Lambda (le runtime est Python3.6) et ajoutez une couche. image.png

Sélectionnez le calque créé. image.png

Éditons la fonction Lamda pour nous assurer que la bibliothèque est chargée.

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!')
    }

Créez un événement de test. image.png

Si vous le pouvez, la bibliothèque devrait être chargée.

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

Je vous remercie pour votre travail acharné. Vous pouvez supprimer l'instance lorsque vous avez terminé.

Recommended Posts

Chargez une bibliothèque externe à partir d'une fonction Lambda à l'aide des couches AWS Lambda. L'environnement Python pour Amazon Linux 2 est également en place. (Python3.6, Anaconda)
N'hésitez pas à transformer Python en utilisant la bibliothèque en une fonction AWS Lambda
Déployez en toute sécurité des fonctions Lambda à l'aide de Python construit avec les mêmes options qu'Amazon Linux
[AWS / Lambda] Comment charger une bibliothèque externe Python
Afficher des images dans OpenCV à partir de Python à l'aide d'une caméra USB externe sur votre MacBook
Ecrire une fonction AWS Lambda en Python
Python in est aussi un opérateur
Notifier à l'aide du Centre de notifications lorsque l'environnement d'exécution est macOS en Python
Qu'est-ce que "mahjong" dans la bibliothèque Python? ??
Notes de l'installation de Homebrew à la création d'un environnement Anaconda pour Python avec pyenv
[AWS] Lançons un test unitaire de la fonction Lambda dans l'environnement local
[AWS Lambda] Créer un package de déploiement à l'aide de l'image Amazon Linux Docker
[AWS] Résolution d'un problème où Lambda appelé depuis CodePipeline est toujours en cours