【发布时间】:2018-04-09 10:06:06
【问题描述】:
我有几个使用 AWS lambda 运行的不同 python API(即 python 脚本)。标准方法是生成一个 zip 文件,其中包含 lambda 函数所需的所有外部库,然后将其上传到 AWS。现在,我有一些不同 API 之间共有的函数(例如,自定义 utils 函数,如解析文本文件或日期)。目前,我正在简化在每个 zip 文件中复制文件 utils.py。但是,这种方法效率很低(我不喜欢重复代码)。我想要一个包含我所有.py 共享文件的S3 存储桶,并让我的API 直接加载这些文件。这可能吗?
一种简单的方法是将文件下载到tmp 文件夹并加载它们,但我不确定这是最好/最快的方法:
import boto3
client_s3 = boto3.client("s3")
client_s3.download_file("mybucket", "utils.py", "/tmp/utils.py")
这可以用更优雅的方式完成吗?
【问题讨论】:
-
您能否将所有 lambda 处理程序和依赖项放在一个 zip 中,并在所有函数中使用该 zip 文件?
-
这行不通,因为不同的 API 需要不同的外部 python 包,如果放在一起将超过 250MB(AWS 的最大大小限制)
标签: python amazon-web-services amazon-s3 shared-libraries boto