在python子流程中访问lambda层

kuarbcqp  于 2021-08-25  发布在  Java
关注(0)|答案(1)|浏览(444)

从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层中的模块?

gopyfrb3

gopyfrb31#

我知道问题出在哪里了。我需要做两件事:
首先,我需要将位置从lambda层添加到模块中 PYTHONPATH 环境变量:

接下来,我需要增加函数的内存和超时大小,因为我的模块非常大:

您可以在lambda控制台、aws cli或aws sdk(我使用的是java sdk)中执行此操作。

相关问题