【问题标题】:GCP cloud functions, how to trigger everything in a bucket?GCP云函数,如何触发桶中的一切?
【发布时间】:2019-02-19 17:09:49
【问题描述】:
我正在使用 Google 云功能。我的第一个结论是:它们真的很完美!我创建了一个函数,该函数通过对存储在存储桶(或新上传)中的文档的修改触发。这很好用。
但后来我开始思考:如果我想触发存储桶中的所有文件以针对 NEW 函数执行。之前的函数已经针对所有文件运行,所以我更喜欢只对所有文档运行 NEW 函数。
你们是怎么做到的?所以基本上我的问题是:
- 您如何跟踪文件已经应用了哪些功能?
- 如何触发所有文件重新应用所有功能?
- 如何只为一个(新)函数触发所有文件?
【问题讨论】:
标签:
google-cloud-platform
google-cloud-storage
google-cloud-functions
【解决方案1】:
您如何跟踪哪些函数已应用于
文件?
Cloud Functions 触发事件。一旦事件触发,就会调用云函数(如果设置为这样做)。除了 StackDriver 之外,GCP 中没有任何东西会跟踪这一点。您的函数将需要跟踪它们的操作,包括为哪个对象触发。
如何触发所有文件重新应用所有功能?
没有命令或功能可以触发所有文件的功能。您需要自己实现此功能。
您如何为一个(新)功能触发所有文件?
没有命令或功能可以触发新功能的功能。您需要自己实现此功能。
根据您尝试实施的架构,大多数人使用 Cloud Datastore 等数据库来跟踪存储桶中的对象、发生的转换和结果。
使用数据库可以让您实现目标,但需要付出一些努力。
请注意,Cloud Functions 在运行 540 秒后会出现超时。这意味着如果您有数百万个文件,您将需要实施重叠策略来处理这么多对象。
对于需要处理数百万个对象的情况,我通常会启动 App Engine Flexible 或 Compute Engine 来完成大型任务,然后在完成后关闭。主要原因是 Google Storage 和 Datastore 的带宽非常高。