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) {}
...并且所有依赖项都连接在同一个文件中?这根本没有意义 - 就像我说的那样,文档有点模糊。
答案 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标志上传文件一次,然后部署无上传的功能。您还可以指示谷歌以相同的方式从回购中提取功能。我建议您编写一个快速部署脚本,以帮助您在单个命令中部署函数列表。