AWS上多个API之间共享的python库

时间:2018-04-09 10:06:06

标签: python amazon-web-services amazon-s3 shared-libraries boto

我有几个使用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")

这可以以更优雅的方式完成吗?

1 个答案:

答案 0 :(得分:0)

实际上,这不是一个简单的问题要解决。我们已经使用lambda layers一段时间了,目的是解决该问题,因此您可以共享通用代码。 lambda图层的问题在于,当您更改图层(图层+ lambda函数)中的某些内容时,您必须重新部署两次。脖子上的疼痛很快,就CICD而言,您可能还会遇到问题。

我们尝试了一段时间,现在返回包装代码,并将代码包括在lambda中。如果您想避免代码重复,但效率不高,但是至少您没有与您忘记部署依赖项功能有关的所有错误。