Background
Früher habe ich das Paket gespeichert, das ich mit venv
in Python3.6 oder höher weitergeleitet habe, aber als ich untersucht habe, ob es unter AWS möglich ist, gab es eine erschwingliche Funktion namens Layer, also habe ich versucht, sie zu verwenden.
venv
Dies ist auf dem Arbeits-PC in Ordnung
python -m venv [Name der virtuellen Umgebung]
./[Name der virtuellen Umgebung]/bin/activate
([Name der virtuellen Umgebung]) pip install [Paketnamen]
[Web Scraping mit AWS Lambda-Entwicklung (Web Scraping)](https://qiita.com/satsukiya/items/b9d02abd7fa96cd59355#development-web%E3%82%B9%E3%82%AF%E3% Erstellen Sie eine Zip-Datei zum Hochladen auf AWS auf die gleiche Weise wie 83% AC% E3% 82% A4% E3% 83% 94% E3% 83% B3% E3% 82% B0).
mkdir packages
cd packages
pip install [Paket] -t ./
pip install [Paket] -t ./
......
zip -r ./myDeploymentPackage.zip ./packages
Layer Erstellen Sie eine Ebene, um eine Pip-Umgebung zu erstellen.
Development (error)
Hier [Web Scraping mit AWS Lambda-Development (Web Scraping)](https://qiita.com/satsukiya/items/b9d02abd7fa96cd59355#development-web%E3%82%B9%E3%82%AF% Schreiben wir einen Code mit einer schönen Suppe mit 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
}
Dann
{
"errorMessage": "Unable to import module 'lambda_function'"
}
Ich erhalte einen Importfehler.
[Grundlegende Hinweise zur Verwendung von Lambda @ Python-Ebenen (für diejenigen, die keine in Ebenen hochgeladenen Dateien importieren können) -Hinweise](https://qiita.com/k_hoso/items/78beb33e53abfdddabe7#%E6% B3% A8% E6% 84% 8F% E7% 82% B9)
Betrachtet man, scheint die Zip-Datei unter / opt /
dekomprimiert zu sein.
In diesem Fall ist ein Paket von pip auf dem Arbeits-PC in / opt / packages /
installiert
import sys
sys.path.append('/opt/packages')
Es ist notwendig, den Weg im Voraus zu passieren.
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 Ich wünschte, ich könnte es ohne "/ packages /" tun, wenn ich mit zip komprimiere: expressionless:
Recommended Posts