子目录上 Cloud Storage 的 Cloud Pub/Sub 通知

din*_*ina 4 google-cloud-storage google-cloud-pubsub

我想听子桶中 GCS 的变化

我试过这个

gsutil notification create -t  my-topic -f json gs://my-bucket
Run Code Online (Sandbox Code Playgroud)

但它会通知我所有对象的变化

有没有办法只从子目录中获取,如下所示:

gsutil notification create -t  my-topic -f json gs://my-bucket/sub-dir
Run Code Online (Sandbox Code Playgroud)

dse*_*sto 7

确实有一种方法可以将通知限制在存储桶内的“目录”中。请记住,Cloud Storage 是一个“平面”存储系统,其中不存在目录的概念;相反,GCS 将名称以/文件夹结尾的 blob 解释为文件夹,但实际情况是,当在“文件夹”内创建对象时,唯一的区别是它以文件夹名称作为对象名称的前缀。然后,结构如下:

gs://my-bucket
|_objectA
|_folder
  |_objectB
  |_subfolder
    |_objectC
Run Code Online (Sandbox Code Playgroud)

将根据对象名称转换为以下内容:

# Object names
gs://my-bucket/objectA
gs://my-bucket/folder/
gs://my-bucket/folder/objectB
gs://my-bucket/folder/subfolder/
gs://my-bucket/folder/subfolder/objectC
Run Code Online (Sandbox Code Playgroud)

知道这一点后,您可以将该-p选项gsutil notification create命令一起使用,以便为要从中获取通知的对象指定前缀路径过滤器。它会是这样的:

gsutil notification create -t my-topic -f json -p folder/ gs://my-bucket
Run Code Online (Sandbox Code Playgroud)

请注意,该-p标志仅设置对象的路径前缀,因此您还可以使用它为名称以给定字符串开头的所有对象创建通知警报。在这种情况下,如果此给定字符串以 a 结尾/,则表示您希望收到有关存储桶中文件夹中对象的通知。

  • -p 选项支持正则表达式吗?这样的事情可能吗?-p gs://my-bucket/.*/子文件夹/ (2认同)