使用Python从AWS lambda中的部署包(作为一个层添加)调用.py脚本

问题描述 投票:1回答:2

我已添加一个zip文件作为包含xxx.py脚本的部署软件包。

我的lambda函数应从包中调用xxx.py脚本。

我的lambda函数如下:

libdir = os.path.join(os.getcwd(), 'local', 'lib')
download_path = '/tmp/{}{}'.format(uuid.uuid4(), key)
command = 'LD_LIBRARY_PATH={} python xxx.py "{}"'.format(libdir, download_path)
output_path = subprocess.check_output(command, shell=True)

我收到此错误:

Command 'LD_LIBRARY_PATH=/var/task/local/lib python xxx.py "/tmp/52513240-a9 returned non-zero exit status 2.: CalledProcessError

我的部署程序包在zip文件的几个子文件夹中具有xxx.py文件。

我需要在lambda函数中设置环境变量吗?如果是,在我看来,这可能是关键和价值。

除此之外,还有其他方法可以从lambda的部署包中调用python脚本吗?

请帮助。预先感谢!

python aws-lambda invoke-command
2个回答
0
投票

感谢Mayank,但仍然-导入后如何从我的lambda函数中调用.py文件的主要函数。

我的lambda函数实际上是基于s3事件触发的,该事件又应从包中的.py脚本调用主函数,并且输出应返回到另一个存储桶。这是我的总体打算。


0
投票

将.main中的main重写为带有参数的函数,然后在lamba的main中将s3触发器传递给第二层的类。

伪代码

在第二层内部

___main(s3_event)___ # or rename from main to some_function
# some code

在您的主要lambda中

import xxx.py as xxx
xxx.___main(s3_event)___
© www.soinside.com 2019 - 2024. All rights reserved.