尝试在AWS Lambda中安装pip时出现错误代码2

时间:2016-01-21 17:26:22

标签: python amazon-web-services subprocess pip aws-lambda

我正在尝试使用AWS Lambda函数来启动其他Lambda函数,而某些函数需要非标准的python库。我认为一个好的解决方案是让第一个Lambda函数安装pip,然后用它来安装模块,然后启动辅助Lambda函数。我从s3存储桶下载了基本的get-pip.py,然后尝试安装它。

print(subprocess.check_output(['python', '/tmp/lambdaTools/get-pip.py']))

运行大约30秒,让我相信它开始正常执行,然后给出错误:

START RequestId: 5a6b8511-c05f-11e5-9e41-c1b36be05f9c Version: $LATEST
Command '['python', '/tmp/lambdaTools/get-pip.py']' returned non-zero exit status 2: CalledProcessError
Traceback (most recent call last):
  File "/var/task/lambdaTools.py", line 34, in lambdaTools_handler
    return operations[operation](event)
  File "/var/task/lambdaTools.py", line 27, in <lambda>
    'create': lambda x: create_function(x.get('function_name'), x.get('bucket_path') ),
  File "/var/task/lambdaTools.py", line 62, in create_function
    print(subprocess.check_output(['python',local_path+get_pip]))
  File "/usr/lib64/python2.7/subprocess.py", line 573, in check_output
    raise CalledProcessError(retcode, cmd, output=output)
CalledProcessError: Command '['python', '/tmp/lambdaTools/get-pip.py']' returned non-zero exit status 2

除了错误代码2之外,它似乎没有给我任何其他信息。

2 个答案:

答案 0 :(得分:0)

  

某些功能需要非标准的python库。

您指的是哪些非标准库?如果您想使用AWS Lambda python环境未提供的库,那么推荐的方法是使用您的lambda函数打包这些库。请参阅:Deploying Lambda with other python packages

  

然后启动辅助Lambda函数。

即使您调用其他lambdas,也不能保证新lambda将在与当前容器/实例/机器相同的容器/实例/机器中调用。见AWS Lambda - container reuse

答案 1 :(得分:0)

一旦Lambda函数达到50MB的最大大小,它将崩溃并退出而不提供任何有用的信息。我强烈建议您在上传之前安装任何依赖项并将其打包到您的zip中,并考虑使用S3进行存储。