从同一个 repo 部署多个 Google Cloud Functions

Deploying multiple Google Cloud Functions from same repo

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

当前的部署工具采用了一种简单的方法。它压缩目录并上传它。这意味着如果您不希望它们包含在部署包中,您(当前)应该在执行命令之前移动或删除 node_modules。请注意,与 lambda 一样,GCF 将自动解析依赖项。

部署请看:gcloud alpha functions deploy --help

Specifically:

--entry-point=ENTRY_POINT
         The name of the function (as defined in source code) that will be
         executed.

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