上AWS多个API之间共享的Python库(Shared python libraries betw

2019-10-30 12:00发布

具有运行使用AWS的λ几种不同的API的Python(即Python脚本)。 标准的方法是生成一个压缩文件,包括所有必要的外部库lambda功能,然后将其上传到AWS。 现在,我有一些功能,这些功能在不同的API之间共同的(如自定义utils的功能,如解析文本文件或日期)。 目前,我simpling复制文件utils.py在每一个zip文件。 然而,这种做法是非常低效的(我不喜欢重复的代码)。 我想有一个S3包含我所有的桶.py共享文件,并有我的API直接加载的。 这可能吗? 一个简单的方法是将文件下载到tmp文件夹,并加载它们,但我不知道这是最好的/最快的方式:

import boto3
client_s3 = boto3.client("s3")
client_s3.download_file("mybucket", "utils.py", "/tmp/utils.py")

可这在一个更优雅的方式做?

Answer 1:

它实际上不是解决一个简单的问题。 我们一直在使用拉姆达层一会儿,这是为了解决这个问题,这样你就可以分享共同的代码。 与拉姆达层的问题是,你有当您更改层(层+您的lambda函数)里面的东西重新部署的两倍。 这是迅速在颈部疼痛,并在CICD方面也可能有问题。

我们尝试了一段时间,现在我们又回到了包装代码,并在lambda中的代码。 效率不高,如果你想避免重复的代码,但至少你不必都与你忘了部署依赖功能的事实错误。



文章来源: Shared python libraries between multiple APIs on AWS