在文件夹上触发云功能 - 可能吗?

Gra*_*ley 3 google-cloud-platform google-cloud-functions

是否可以将云函数trigger-bucket参数配置为GCS存储桶中的文件夹?

例如,假设我们有以下内容:

gs://a_bucket/a_folder
Run Code Online (Sandbox Code Playgroud)

--trigger-bucket gs://a_bucket我需要在文件夹级别设置它,而不是在部署时设置,即--trigger-bucket gs://a_bucket/a_folder/

但是,我收到错误:

错误:(gcloud.beta.functions.deploy)参数 --trigger-bucket:无效值“gs://a_bucket/a_folder/”:存储桶只能包含小写拉丁字母、数字和字符。_-。它必须以字母或数字开头和结尾,长度为 3 到 232 个字符。您可以选择在存储桶名称前添加 gs:// 并在末尾附加 /。

https://cloud.google.com/sdk/gcloud/reference/beta/functions/deploy

Gra*_*ley 5

无法在文件夹级别设置触发器。

但是,我发现的一种解决方法是,您可以通过挂钩name更改通知的属性,在云函数中以编程方式执行它,因为它包含文件夹和文件名

例如,a_sample.txt位于 的文件gs://a_bucket/a_folder/,该name属性将包含a_folder/a_sample.txt字符串值。

因此,您可以过滤您感兴趣的文件夹。权衡:

  1. 不太漂亮!
  2. 您的云函数将为所有存储桶事件触发- 即使是您不感兴趣的事件。

如果您可以接受这一点,那么这就是您要走的路(直到 Google 支持在文件夹级别触发)。