【发布时间】:2018-07-23 04:54:30
【问题描述】:
我正在尝试将 300MB 大小的 zip 文件上传到 AWS Lambda,该文件主要包含 python 包。我清楚地知道,如果我们直接使用 AWS SDK 上传,这超出了可以上传到 Lambda 的 zip 的限制。因此,这是行不通的。
为了克服这个问题,我决定下载/tmp 目录中的包并将它们导入主文件(参考here)。我将所需的包压缩为 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"
但是,当我测试 lambda 函数时,它返回一个错误,指出找不到 numpy
Import Error: No module named numpy
我的问题是,如何从/tmp/ 目录中导入所需的包?
提前致谢。
【问题讨论】:
标签: python amazon-web-services aws-lambda