[PYTHON] Je viens de créer un environnement virtuel avec la couche AWS lambda

Background J'ai utilisé venv pour enregistrer le package que j'ai envoyé dans Python3.6 ou version ultérieure, mais lorsque je cherchais à savoir si cela pouvait être fait sur AWS, il y avait une fonction abordable appelée layer, alors j'ai essayé de l'utiliser.

venv

C'est OK sur le PC de travail

python -m venv [Nom de l'environnement virtuel]

./[Nom de l'environnement virtuel]/bin/activate
([Nom de l'environnement virtuel]) pip install [nom du paquet]

Créer un zip pour un package

[Web scraping avec AWS lambda-Development (Web scraping)](https://qiita.com/satsukiya/items/b9d02abd7fa96cd59355#development-web%E3%82%B9%E3%82%AF%E3% Créez un fichier zip à télécharger sur AWS de la même manière que 83% AC% E3% 82% A4% E3% 83% 94% E3% 83% B3% E3% 82% B0).

mkdir packages
cd packages
pip install [paquet] -t ./
pip install [paquet] -t ./
......
zip -r ./myDeploymentPackage.zip ./packages

Layer Pour créer un environnement pip, créez une couche.

Development (error)

Ici [Web scraping avec AWS lambda-Development (Web scraping)](https://qiita.com/satsukiya/items/b9d02abd7fa96cd59355#development-web%E3%82%B9%E3%82%AF% Écrivons un code en utilisant une belle soupe avec E3% 83% AC% E3% 82% A4% E3% 83% 94% E3% 83% B3% E3% 82% B0).

import json
import requests
from bs4 import BeautifulSoup

def lambda_handler(event, context):
    # TODO implement

    response = requests.get('https://mainichi.jp/editorial/')
    soup = BeautifulSoup(response.text)
    pages = soup.find("ul", class_="list-typeD")
    articles = pages.find_all("article")
    links = [ "https:" + a.a.get("href") for a in articles]

    return {
        'statusCode': 200,
        'links' : links
    }

ensuite

{
  "errorMessage": "Unable to import module 'lambda_function'"
}

J'obtiens une erreur d'importation.

[Précautions de base lors de l'utilisation de couches Lambda @ Python (pour ceux qui ne peuvent pas importer de fichiers téléchargés vers des couches) -Notes](https://qiita.com/k_hoso/items/78beb33e53abfdddabe7#%E6% B3% A8% E6% 84% 8F% E7% 82% B9) En regardant, il semble que le fichier zip soit décompressé sous / opt /.

Dans ce cas, il y a un package installé par pip sur le PC de travail dans / opt / packages /, donc

import sys
sys.path.append('/opt/packages')

Il faut passer le chemin à l'avance.

Development (modified)

import sys
sys.path.append('/opt/packages')
import json
import requests
from bs4 import BeautifulSoup


def lambda_handler(event, context):
    # TODO implement

    response = requests.get('https://mainichi.jp/editorial/')
    soup = BeautifulSoup(response.text)
    pages = soup.find("ul", class_="list-typeD")
    articles = pages.find_all("article")
    links = [ "https:" + a.a.get("href") for a in articles]

    return {
        'statusCode': 200,
        'links' : links
    }
{
  "statusCode": 200,
  "links": [
    "https://mainichi.jp/articles/20201120/ddm/005/070/067000c",
    "https://mainichi.jp/articles/20201120/ddm/005/070/065000c",
    "https://mainichi.jp/articles/20201119/ddm/005/070/119000c",
    "https://mainichi.jp/articles/20201119/ddm/005/070/118000c",
    "https://mainichi.jp/articles/20201118/ddm/005/070/115000c",
    "https://mainichi.jp/articles/20201118/ddm/005/070/114000c",
    "https://mainichi.jp/articles/20201117/ddm/005/070/114000c",
    "https://mainichi.jp/articles/20201117/ddm/005/070/113000c",
    "https://mainichi.jp/articles/20201116/ddm/005/070/043000c"
  ]
}

Post Scripting J'aimerais pouvoir le faire sans "/ packages /" lors de la compression avec zip: expressionless:

Recommended Posts

Je viens de créer un environnement virtuel avec la couche AWS lambda
Je viens de faire FizzBuzz avec AWS Lambda
Créez un environnement virtuel avec Python!
Créer un environnement virtuel avec Python 3
Je souhaite utiliser un environnement virtuel avec jupyter notebook!
J'ai écrit un script pour créer rapidement un environnement de développement pour Twitter Bot avec AWS Lambda + Python 2.7
[Python] Créez un environnement virtuel avec Anaconda
J'ai construit un environnement TensorFlow avec windows10
Créez un environnement virtuel pour python avec pyenv
Démarrage de Node.js dans un environnement virtuel
[AWS] Créez un environnement Python Lambda avec CodeStar et faites Hello World
J'ai écrit un bot Slack qui notifie les informations de retard avec AWS Lambda
Créez un environnement WardPress sur AWS avec Pulumi
Démarrez Django dans un environnement virtuel à l'aide de Pipenv
Créer un environnement virtuel avec conda avec Python
[Memo] Créez un environnement virtuel avec Pyenv + anaconda
Créez un environnement virtuel avec pyenv et venv
Travaillez dans un environnement virtuel avec Python virtualenv.
Flux de création d'un environnement virtuel avec Anaconda
J'ai essayé de connecter AWS Lambda à d'autres services
Quand j'ai essayé de créer un environnement virtuel avec Python, cela n'a pas fonctionné
Environnement virtuel avec Python 3.6
[AWS] J'ai créé un BOT de rappel avec LINE WORKS
Créez un environnement virtuel avec Anaconda installé via Pyenv
environnement en ligne de serveur de code (2) Créer un réseau virtuel avec Boto3
J'ai créé un environnement Python3 sur Ubuntu avec direnv.
J'ai essayé d'exécuter TensorFlow dans l'environnement AWS Lambda: Préparation
Créez un environnement virtuel python avec virtualenv et virtualenvwrapper
Je veux AWS Lambda avec Python sur Mac!
Remarques sur la création d'un environnement virtuel avec Anaconda Navigator
Construire un environnement Django pour Win10 (avec espace virtuel)
Je veux lier une variable locale avec lambda
J'ai construit l'environnement de développement d'AWS Chalice avec docker et j'ai essayé de déployer une application sans serveur à très haute vitesse
[AWS] Essayez d'ajouter la bibliothèque Python à la couche avec SAM + Lambda (Python)
Je veux démarrer un environnement Jupyter avec une seule commande
Construire un environnement virtuel Python
PyTorch avec AWS Lambda [importation Lambda]
Changer d'environnement virtuel avec jupyter
Construire un environnement virtuel Python
[AWS] J'ai créé un BOT de rappel avec LINE WORKS (implémentation)
Une histoire à laquelle j'étais accro à appeler Lambda depuis AWS Lambda.
Créer une application Web de type Flask / Bottle sur AWS Lambda avec Chalice
J'ai créé un bot Twitter avec Go x Qiita API x Lambda
Grattage sans serveur régulier avec AWS lambda + scrapy, partie 1
Préparer un environnement pour utiliser OpenCV et Pillow avec AWS Lambda
J'ai créé un environnement de développement pour Django 3.0 avec Docker, Docker-compose, Poetry
Construction d'environnement Postgres avec Docker J'ai eu un peu de mal, alors notez
[Python] J'ai écrit une API REST en utilisant AWS API Gateway et Lambda.
Comment créer une API de machine learning sans serveur avec AWS Lambda
Créer un environnement Kubernetes avec Ansible 2
Activez l'environnement virtuel d'Anaconda avec PowerShell
Prise en charge de la variable d'environnement AWS Lambda
Construction de l'environnement Ruby avec AWS EC2
[AWS] Créer une API avec API Gateway + Lambda
J'ai fait une loterie avec Python.
Essayez de fournir des variables d'environnement AWS Lambda?