2016-01-21 59 views
2

我試圖使用AWS Lambda函數啓動其他Lambda函數,並且某些函數需要非標準的python庫。我認爲一個好的解決方案是安裝第一個Lambda函數,然後使用它來安裝模塊,然後啓動輔助Lambda函數。我從s3存儲桶下載基本的get-pip.py,然後嘗試安裝它。嘗試在AWS中安裝pip時出現錯誤代碼2 Lambda

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.

+1

我還沒有真正看過''get-pip.py'',但我懷疑它可能試圖將某些東西安裝到Lambda函數不可寫入的系統庫中。 – garnaat

+1

這就是我所懷疑的,對於解決方法的任何想法? – nicolashahn

+1

你爲什麼要安裝點子? AWS Lambda Python版本爲2.7,隨附pip。 – helloV

回答

0

some of the functions require non-standard python libraries.

你指的是什麼非標準庫?如果您想使用AWS Lambda Python環境默認提供的庫,那麼推薦的方法是使用lambda函數打包這些庫。請參閱:Deploying Lambda with other python packages

then fire up the secondary Lambda functions.

即使你調用其他的lambda表達式也不能保證新的lambda表達式將在同一容器/實例/機調用作爲當前一個。看到這個AWS Lambda - container reuse

0

一旦Lambda函數達到它的最大大小爲50MB它將崩潰並退出而不提供任何有用的信息。我強烈建議您在上傳之前安裝任何依賴關係並將其打包到ZIP中,並考慮使用S3進行存儲。

相關問題