在文件夹上触发云功能 - 可能吗?
Triggering cloud functions on folders - is it possible?
是否可以将云函数 trigger-bucket
参数配置为 GCS 存储桶中的文件夹?
例如,假设我们有以下内容:
gs://a_bucket/a_folder
我需要在文件夹级别设置它,而不是在部署时设置 --trigger-bucket gs://a_bucket
,即 --trigger-bucket gs://a_bucket/a_folder/
。
但是,我收到错误消息:
ERROR: (gcloud.beta.functions.deploy) argument --trigger-bucket:
Invalid value 'gs://a_bucket/a_folder/': Bucket must only contain
lower case Latin letters, digits and characters . _ -. It must start
and end with a letter or digit and be from 3 to 232 characters long.
You may optionally prepend the bucket name with gs:// and append / at
the end.
https://cloud.google.com/sdk/gcloud/reference/beta/functions/deploy
无法在文件夹级别设置触发器。
但是,我发现的一种解决方法是,您可以通过挂接到更改通知的 name
属性,在 Cloud Function 中以编程方式执行它,因为 它包含文件夹和文件名。
例如a_sample.txt
文件位于 gs://a_bucket/a_folder/
,name
属性将包含 a_folder/a_sample.txt
作为字符串值。
因此,您可以过滤您感兴趣的文件夹。权衡:
- 不好看!
- 您的云功能将针对 所有 个存储桶事件触发 - 即使是您不感兴趣的事件。
如果您能接受它,那就是要走的路(直到 Google 支持在文件夹级别触发)。
是否可以将云函数 trigger-bucket
参数配置为 GCS 存储桶中的文件夹?
例如,假设我们有以下内容:
gs://a_bucket/a_folder
我需要在文件夹级别设置它,而不是在部署时设置 --trigger-bucket gs://a_bucket
,即 --trigger-bucket gs://a_bucket/a_folder/
。
但是,我收到错误消息:
ERROR: (gcloud.beta.functions.deploy) argument --trigger-bucket: Invalid value 'gs://a_bucket/a_folder/': Bucket must only contain lower case Latin letters, digits and characters . _ -. It must start and end with a letter or digit and be from 3 to 232 characters long. You may optionally prepend the bucket name with gs:// and append / at the end.
https://cloud.google.com/sdk/gcloud/reference/beta/functions/deploy
无法在文件夹级别设置触发器。
但是,我发现的一种解决方法是,您可以通过挂接到更改通知的 name
属性,在 Cloud Function 中以编程方式执行它,因为 它包含文件夹和文件名。
例如a_sample.txt
文件位于 gs://a_bucket/a_folder/
,name
属性将包含 a_folder/a_sample.txt
作为字符串值。
因此,您可以过滤您感兴趣的文件夹。权衡:
- 不好看!
- 您的云功能将针对 所有 个存储桶事件触发 - 即使是您不感兴趣的事件。
如果您能接受它,那就是要走的路(直到 Google 支持在文件夹级别触发)。