[英]Cannot import a function from Lambda Layers AWS
嘗試在 AWS 上部署刮刀。 壓縮后,我將以下結構作為層導入lambda
lambdalayer (folder)
:- python ( folder)
:- covid.py (file to run)
:- lib
:- python3.8
:-site-pakcages
:- All dependencies
我嘗試了很多變體,並嘗試將文件移動到不同的文件夾,但lambda
無法導入covid.py
。 這是lambda
代碼。
import boto3
import json
from covid import scrapeGlobalCase
def lambda_handler(event,context):
print(os.environ['PYTHONPATH'])
s3 =boto3.resource('s3')
print("Request Covid Data..")
cov_case = scrapeGolbalCase()
BUCKET_NAME='seleniumbucket43'
DATE=f"{cov_case['date']}"
OUTPUT_NAME = f'dataKeyTest{DATE}.json'
OUTPUT_BODY = json.dumps(cov_case)
print("Sending to S3")
S3.bucket(BUCKET_NAME).put_object(Key=OUTPUT_NAME,Body=OUTPUT_BODY)
print(f'Job done at {DATE}')
錯誤: -
{
"errorMessage": "Unable to import module 'lambda_function': No module named 'covid'",
"errorType": "Runtime.ImportModuleError",
"stackTrace": []
}
covid.py
文件
import requests,datetime
from bs4 import BeautifulSoup
def scrapeGlobalCase():
try:
url = "https://www.worldometers.info/coronavirus/"
req = requests.get(url)
bsObj = BeautifulSoup(req.text, "html.parser")
data = bsObj.find_all("div",class_ = "maincounter-number")
NumConfirmed = int(data[0].text.strip().replace(',', ''))
NumDeaths = int(data[1].text.strip().replace(',', ''))
NumRecovered = int(data[2].text.strip().replace(',', ''))
NumActive = NumConfirmed - NumDeaths - NumRecovered
TimeNow = datetime.datetime.now()
return {
'date': str(TimeNow),
'ConfirmedCases': NumConfirmed,
'ActiveCases': NumActive,
'RecoveredCases': NumRecovered,
'Deaths': NumDeaths
}
except Exception as e:
print(e)
p = scrapeGlobalCase()
print(p)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.