Imp*_*123 6 python amazon-web-services aws-lambda
我正在尝试将一个 zip 文件上传到 AWS Lambda,该文件主要包含 python 包,大小为 300MB。我清楚地了解,如果我们直接使用 AWS SDK 上传,这超出了可以上传到 Lambda 的 zip 的限制。因此,这是行不通的。
为了克服这个问题,我决定下载/tmp目录中的包并将它们导入到主文件中(参考此处)。我将所需的包压缩为pkgs.zip并将其上传到AWS S3。然后我使用requests将它们解压到 来下载它们/tmp/。
def get_pkgs(url):
import requests
import io
import zipfile
print("Getting Packages...")
re = requests.get(url)
z = zipfile.ZipFile(io.BytesIO(re.content))
print("Extracting Packages...")
z.extractall("/tmp/")
print("Packages are downloaded and extracted.")
def attempt_import():
print("="*50)
print("ATTEMPT TO IMPORT DEPENDENCIES...")
print("="*50)
import numpy
import scipy
import six
print("IMPORTING DONE.")
def main():
URL = "https://s3-ap-southeast-1.amazonaws.com/BUCKET_NAME/pkgs.zip"
get_pkgs(URL)
attempt_import()
def lambda_handler(event, context):
main()
return "Hello Lambda"
Run Code Online (Sandbox Code Playgroud)
但是,当我测试 lambda 函数时,它返回一个错误,指出numpy找不到
Import Error: No module named numpy
我的问题是,如何从/tmp/目录导入所需的包?
提前致谢。
小智 3
在导入已下载到该/tmp文件夹(例如 文件/tmp/requirements夹)的任何包之前,您必须告诉系统在那里查找依赖项。在代码的开头,就在这些行中:
import sys
sys.path.insert(0, '/tmp/requirements/') # Or any path you desire
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3818 次 |
| 最近记录: |