在多个 AWS Lambda 中导入一个 python 模块

Sib*_*ain 5 python amazon-s3 amazon-web-services aws-lambda

我有几个 AWS Lambda 函数。所有这些函数都使用一些常见的辅助函数。我将这些辅助函数放在一个名为helper_functions.py. 我想在我所有的 AWS Lambda 函数中导入这个模块。我找不到存储此模块 ( helper_functions.py) 的位置,因此当我更改此模块时,我无需更改我的 Lambda 函数中的任何内容。

我想到的一些选项是:

  1. 在 AWS S3 上上传模块,然后从 S3 开始将其加载到每个 Lambda 函数中并使用这些函数。(如果可能的话)

  2. 编写一些脚本(我还没有弄清楚),将模块与 Lambda 函数的 Python 文件一起打包到一个 zip 文件中,并将其上传到 AWS Lambda

请提出一个更好的解决方案来管理模块并以更有效的方式导入它。

fal*_*ets 5

我为此挣扎了很长时间。这是我的解决方案(可能有更好的方法):

在文件系统中设置辅助函数,如下所示:

pathToSomewhere/my_helper/helper_functions.py pathToSomewhere/my_helper/__init__.py pathToSomewhere/setup.py

哪里__init__.py

from .helper_functions import *
Run Code Online (Sandbox Code Playgroud)

并且setup.py

from setuptools import setup

setup(name='my_helper',
      version='0.10000',
      description='My helper functions',
      url='http://github.com/user/example',
      license='Proprietary',
      author='Null',
      author_email='null@example.com',
      packages=['my_helper'],
      install_requires=['boto3'],
      zip_safe=False)
Run Code Online (Sandbox Code Playgroud)

现在让我们打包吧my_helper。从pathToSomewhere/运行:

python setup.py sdist
Run Code Online (Sandbox Code Playgroud)

我假设您已经知道如何创建和上传用于运行 lambda 函数的虚拟环境。如果没有,请告诉我。

现在让我们安装my_helper到 lambda 函数的虚拟环境中。我们假设您的虚拟环境名为worker_env

./worker-env/bin/pip install file://pathToSomewhere/my_helper
Run Code Online (Sandbox Code Playgroud)

现在压缩worker-env并上传您的实际 lambda 脚本。