从同一个仓库部署多个Google Cloud功能

时间:2016-12-17 11:12:49

标签: google-cloud-functions

Google Cloud Functions的文档有点模糊 - 我了解如何部署index.js中包含的单个函数 - 即使在特定目录中,但是如何部署位于其中的多个云函数同一个存储库?

AWS Lambda允许您指定特定的文件和函数名称:

  /my/path/my-file.myHandler

Lambda还允许您部署仅包含运行所需文件的zip文件,省略所有可选的传递性npm依赖项及其资源。对于某些库(例如Oracle DB),包括node-modules/**会显着增加部署时间,并可能超出存储限制(它在AWS Lambda上)。

我可以通过Google云端功能部署来管理的最佳方式是:

$ 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) {} ...并且所有依赖项都连接在同一个文件中?这根本没有意义 - 就像我说的那样,文档有点模糊。

1 个答案:

答案 0 :(得分: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标志上传文件一次,然后部署无上传的功能。您还可以指示谷歌以相同的方式从回购中提取功能。我建议您编写一个快速部署脚本,以帮助您在单个命令中部署函数列表。