从同一存储库部署多个 Google Cloud Functions

Nic*_*ion 5 google-cloud-functions

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

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

  /my/path/my-file.myHandler
Run Code Online (Sandbox Code Playgroud)

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

我可以使用 Google Cloud Function 部署进行管理的最佳方式是:

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

Don*_*ott 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.
Run Code Online (Sandbox Code Playgroud)

您可以选择使用 --source 标志上传文件一次,然后部署函数而不上传。您还可以指示 google 以相同的方式从存储库中提取函数。我建议您编写一个快速部署脚本来帮助您在单个命令中部署函数列表。

  • 仅供参考,使用“gcloud”上传代码的行为现已更改;默认情况下不再上传“node_modules”。 (3认同)