2016-12-17 64 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

相关问题