2017-02-23 35 views
1

我使用Serverless Framework,我似乎無法打包我的功能,我想要的方式。無服務器框架與自定義打包

我當前文件夾目錄如下:

service/ 
    serverless.yml 
    function1/ 
    package.json 
    handler.js 
    node_modules/ 
     ... 
    function2/ 
    handler.py 
    requirements.txt 
    venv/ 
     ... 

是否有可能挑櫻桃我想在zip文件包含並指定zip文件裏面對應的目標路徑文件夾?

例如,我想壓縮function1文件夾中的所有內容,但它們都應位於zip文件的根目錄級別。現在所有生成的文件都位於zip文件中名爲function1的文件夾中。

回答

0

包裝不能這樣工作(docs)。您不能指定將保存在zip內的文件樹。您只能指定您將在此zip中包含包括排除

docs鏈接中,您可以看到一個選項,使用工件。在這種情況下,您可以使用您所需的規則開發自己的代碼以進行壓縮,並輸出供無服務器框架使用的壓縮文件。這是可能的,但我希望你不需要這個。

爲什麼要將文件夾「function1」的內容移動到根級?也許你真正的問題是:「我如何引用位於其他文件夾的Lambda函數?」。如果是這樣的話,你可以使用在serverless.yml文件中的以下內容:

service: test 

functions: 
    func1: 
    handler: function1/handler.func1 
    func2: 
    handler: function1/handler.func2 

語法文件夾/ filename.function

另一種解決方案是爲每個文件夾創建一個serverless.yml文件。這種方法的問題在於你無法從函數1訪問函數2。

+0

我想這很好,如果它是一個nodejs函數,但是怎麼樣一個python函數?我發現的解決方案更像是一種黑客而不是官方解決方案。 http://china.alibaba.com/d/aws-python-function-dependencies-load/451/5 – lingxiao

+0

@LingxiaoXia,在你的鏈接中,el0ck說你不需要手動壓縮包。推薦的方法是安裝64位庫(因爲它可以在64位計算機上運行)並修改Python函數的os.path。 – Zanon

+0

是的,我認爲這是一個黑客,因爲它需要更改代碼。配置更改是可以的,但代碼更改似乎並不可持續。 – lingxiao