从python子流程中访问lambda层中的自定义python模块时遇到问题。因此,我的用例是:
我有一个很大的自定义模块,在lambda层中定义了许多依赖项(我将调用它) myCustomModule.py
). 我允许将任意代码作为lambda函数上传到名为 function.py
. 在中的子进程中调用该脚本 app.py
,其中包含lambda调用的处理程序。
mycustommodule.py
def printFoo():
print("foo")
function.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层中的模块?
1条答案
按热度按时间gopyfrb31#
我知道问题出在哪里了。我需要做两件事:
首先,我需要将位置从lambda层添加到模块中
PYTHONPATH
环境变量:接下来,我需要增加函数的内存和超时大小,因为我的模块非常大:
您可以在lambda控制台、aws cli或aws sdk(我使用的是java sdk)中执行此操作。