从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层中的模块
我知道问题出在哪里了。我需要做两件事:
首先,我需要将模块的位置从lambda层添加到
PYTHONPATH
环境变量:接下来,我需要增加函数的内存和超时大小,因为我的模块非常大:
您可以在Lambda控制台、AWS CLI或AWS SDK(我使用的是Java SDK)中执行此操作
相关问题 更多 >
编程相关推荐