为存储桶中的每个文件运行Google Cloud Function

时间:2018-06-26 07:58:53

标签: google-cloud-storage google-cloud-functions google-cloud-pubsub

我有一个由Google Cloud Storage object.finalize事件触发的Google Cloud Function。部署此功能的新版本时,我想为存储桶中的每个现有文件(该功能的先前版本已处理过)运行它。处理存储桶中的所有现有文件是一项长期运行的任务,因此我不认为可以选择连续处理所有文件的Google Cloud Function。

我现在可以看到的最好的选择是制作一个可以通过HTTP触发的Google Cloud Function,它将列出存储桶中的所有文件,并通过Google PubSub每个文件发布一个事件,然后使用我最初的Google Cloud Function的略微修改版本,它接受了PubSub事件来代替object.finalize存储事件。

我认为它可以工作,但我想知道是否有更简单的方法来执行此操作。

2 个答案:

答案 0 :(得分:1)

如果您要执行的操作可能花费了Cloud Function可以运行的最长时间,那么您将需要将该操作分为多个步骤。您为每个文件使用PubSub触发器的方法听起来像是对我有用的有效方法。

答案 1 :(得分:1)

一个选择可能是编写一个小型程序,该程序列出存储桶中的所有对象,并针对每个对象向Cloud Pub / Sub发布一条消息,以GCS更改的相同方式触发您的功能。