【发布时间】:2021-09-19 02:56:44
【问题描述】:
我在从 python 子进程中访问位于 lambda 层中的自定义 python 模块时遇到问题。因此,我的用例是:
我有一个大型自定义模块,在 lambda 层中定义了许多依赖项(我将其称为 myCustomModule.py)。我允许将任意代码作为 lambda 函数上传到名为 function.py 的文件中。该脚本在 app.py 的子进程中被调用,其中包含 Lambda 调用的处理程序。
myCustomModule.py
def printFoo():
print("foo")
函数.py
import myCustomModule
myCustomModule.printFoo()
app.py
import subprocess
def handler(event, context):
functionFilePath = "function.py"
return subprocess.check_output("python3 " + functionFilePath, shell=True)
当我执行 lambda 函数时,它返回一个 ModuleNotFoundError 说 function.py 找不到 myCustomModule。但是,如果我在 app.py 中导入 myCustomModule 并从那里调用printFoo(),它就可以正常工作。但是,这破坏了我的用例,因为我需要能够从 function.py 而不是 app.py 调用 myCustomModule。
如何让 python 子进程识别我的 lambda 层中的模块?
【问题讨论】:
标签: python aws-lambda subprocess aws-lambda-layers