5

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

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

  /my/path/my-file.myHandler

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

4

1 回答 1

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 标志来上传文件一次,然后部署没有上传的功能。您还可以指示 google 以相同的方式从 repo 中提取函数。我建议您编写一个快速部署脚本来帮助您在单个命令中部署功能列表。

于 2017-01-15T03:36:46.593 回答