2016-12-17 36 views
4

Google Cloud Functions的文檔有點含糊 - 我瞭解如何部署index.js中包含的單個功能 - 即使在特定的目錄中,但是如何部署多個雲功能它們位於同一個存儲庫中?從同一個回購站部署多個Google Cloud功能

AWS LAMBDA允許你指定一個特定的文件和功能名稱:

/my/path/my-file.myHandler 

拉姆達,您還可以部署僅包含運行所需的文件的zip文件,省略所有可選過渡NPM的依賴和他們的資源。對於某些庫(例如Oracle DB),包括node-modules/**會顯着增加部署時間,並可能超過存儲限制(它在AWS Lambda上執行)。

,我可以與谷歌雲功能配置管理的最好的是:

$ gcloud alpha functions deploy my-function \ --trigger-http --source-url https://github.com/user-name/my-repo.git \ --source-branch master \ --source-path lib/foo/bar --entry-point myHandler

...但我的理解是,它部署lib/foo/bar/index.js包含function myHandler(req, res) {} ...在同一個級聯所有依賴文件?這根本沒有意義 - 就像我說的那樣,文檔有點模糊。

回答

2

當前的部署工具採用了一種簡單的方法。它會壓縮目錄並上傳它。這意味着如果您不希望它們包含在部署包中,那麼您(當前)應該在執行命令之前移動或刪除node_modules。請注意,與lambda一樣,GCF將自動解析依賴關係。

至於部署,請參閱:gcloud alpha functions deploy --help

具體做法是:

--entry-point=ENTRY_POINT 
     The name of the function (as defined in source code) that will be 
     executed. 

你可以選擇使用--source標記要上傳的文件一次,然後部署函數無法上傳。您也可以指示谷歌以同樣的方式從回購協議中提取功能。我建議你編寫一個快速部署腳本來幫助你在單個命令中部署一個函數列表。

+2

僅供參考上傳'gcloud'代碼的行爲已經改變; 'node_modules'不再被默認上傳。 –

+0

我們可以在多個函數中放入相同的'入口點'嗎? 像'test1.js入口點Main'和'test2.js入口點Main'? – abdulbarik

相關問題