首页 > 解决方案 > 如何在无服务器框架中将外部 python 模块导入 AWS Lambda 函数?

问题描述

root
    - module_1
        - utils.py
    - module_2 
        - handler.py (Lambda Function) (Requires functions from utils.py)
        - serverless.yml
    - module_3
        - handler.py (Lambda Function)
        - serverless.yml

如何导入 utils.py 中的类和方法,位于完全不同的目录中?

标签: pythonamazon-web-servicesmoduleaws-lambdapackage

解决方案


如您所知,无服务器框架会压缩其所在目录中的所有内容并将其部署到云中。但是我们的 Lambda 使用来自完全不同目录的函数和类,所以当我们部署函数时,它不包含这些文件。

我们怎样才能做到这一点?

好吧,我们可以复制该模块并将其粘贴到该 Lambda 函数目录中,以便在部署 Lambda 时包含它。

这是不可行的,假设当 10 个不同的 Lambda 模块需要该模块时

root
    - module_1
        - utils.py
    - module_2 
        - handler.py (Lambda Function) (Requires functions from utils.py)
        - serverless.yml
        .
        .
        .
        
    - module_10
        - handler.py (Lambda Function) (Requires functions from utils.py)
        - serverless.yml

utils.py 中的单个更改,必须在 10 个不同的地方进行,呃....

不用担心,无服务器有一个插件可以帮助您

serverless-package-external

该插件将帮助您解决问题。祝你有美好的一天!


推荐阅读