我有几个使用AWS lambda运行的不同python API(即python脚本)。标准方法是生成一个zip文件,其中包含lambda
函数所需的所有外部库,然后将其上载到AWS。现在,我有一些在不同API之间共有的函数(例如自定义函数函数,如解析文本文件或日期)。目前,我正在简化每个zip文件中的文件utils.py
的复制。但是,这种方法效率很低(我不喜欢复制代码)。我希望有一个包含所有S3
个共享文件的.py
存储桶,并让我的API直接加载这些文件。这可能吗?
一个简单的方法是将文件下载到tmp
文件夹并加载它们,但我不确定这是最好/最快的方式:
import boto3
client_s3 = boto3.client("s3")
client_s3.download_file("mybucket", "utils.py", "/tmp/utils.py")
这可以以更优雅的方式完成吗?
答案 0 :(得分:0)
实际上,这不是一个简单的问题要解决。我们已经使用lambda layers一段时间了,目的是解决该问题,因此您可以共享通用代码。 lambda图层的问题在于,当您更改图层(图层+ lambda函数)中的某些内容时,您必须重新部署两次。脖子上的疼痛很快,就CICD而言,您可能还会遇到问题。
我们尝试了一段时间,现在返回包装代码,并将代码包括在lambda中。如果您想避免代码重复,但效率不高,但是至少您没有与您忘记部署依赖项功能有关的所有错误。