如何在aws lambda tmp目录下运行python脚本?

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

我从git下载了一个脚本到 /tmp 目录,我需要在lambda中运行脚本。我的处理程序看起来像这样。

def handler(event, context):
  process = subprocess.run("/tmp/my_script.py", env = os.environ, stdout=None, stderr=subprocess.STDOUT)

但是.., my_script.py 有一些外部依赖性,如 gevent.

# my_script.py
import gevent
...

当在lambda中运行时,我得到了以下错误。

ModuleNotFoundError: No module named 'gevent'

我已经打包了 gevent 模块上传至lambda的压缩文件中,我相信他们是在 /var/task. 我怎么能让 my_script.py/tmp 目录下知道在哪里查找依赖关系吗?

python amazon-web-services aws-lambda subprocess
1个回答
0
投票

你可以尝试在路径中插入vartask,像这样。

import os
import sys
sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), '../var/task')))

import gevent

假设上面的脚本在tmp里,而event模块在vartask里。


1
投票

我通过在env中添加 "PYTHONPATH" = "vartask "来解决这个问题。

os.environ["PYTHONPATH"] = "/var/task"
process = subprocess.run("/tmp/my_script.py", env = os.environ, stdout=None, stderr=subprocess.STDOUT)
© www.soinside.com 2019 - 2024. All rights reserved.