我想要的是每当(并且仅当)在GCS上创建文件时,我的发布/订阅订阅都可以收到通知。
所以我这样做了:
gsutil notification create -t projects/[my-project-id]/topics/new-raw-file -f none -m eventType:OBJECT_FINALIZE gs://[the-target-bucket]
我认为此配置已成功设置,因为当我运行gsutil notification list
时,它会显示:
projects/_/buckets/[the-target-bucket]/notificationConfigs/7
Cloud Pub/Sub topic: projects/[my-project-id]/topics/new-raw-file
Custom attributes:
eventType: OBJECT_FINALIZE
这是唯一的配置。
但是,除了文件创建之外,我还会收到文件删除通知:
Received 1 messages.
* 118758642722910: message - , attributes - {u'resource': u'projects/_/buckets/[the-target-bucket]/objects/2466870.3.txt#1493038968423735', u'objectId': u'2466870.3.txt', u'bucketId': u'[the-target-bucket]', u'notificationConfig': u'projects/_/buckets/[the-target-bucket]/notificationConfigs/7', u'payloadFormat': u'NONE', u'eventType': u'OBJECT_DELETE', u'objectGeneration': u'1493038968423735'}
没有得到出错的地方。
答案 0 :(得分:1)
原来我误用了一个命令选项。根据{{3}}," -m"实际上只是向通知附加一个键:value属性,它与我想要的事件过滤器无关。正确的选择应该是" -e" 。因此,以下config命令实际上正常工作:enter code here
gsutil notification create -t [TOPIC_NAME] -f json -e OBJECT_FINALIZE gs://[BUCKET_NAME]