关联Cloud Storage的EventArc触发器JSON payload中subject字段不一致问题
GCP EventArc触发器
subject字段不一致问题排查 背景
我在GCP项目中,使用Datastream将MySQL数据库的变更流同步至Cloud Storage Bucket,同时配置了EventArc触发器,监听存储桶的google.cloud.storage.object.v1.finalized事件(对象创建完成事件)。该触发器负责调用Google Workflow,Workflow会先检查是否存在schema变更,若未检测到变更则将数据推送至BigQuery表。
问题
EventArc触发器返回的JSON payload中的subject字段存在不一致性:有时包含Cloud Storage对象的完整路径,有时仅返回对象所在目录的前缀。
核心担忧
我的需求是仅处理触发EventArc的特定对象,确保数据不会重复传输。但当subject仅返回目录前缀时,无法定位触发事件的具体对象。若遍历路径下所有对象或使用通配符匹配对象,会存在重复传输的风险——例如14:01:02收到请求,14:01:50又收到另一请求,这种方式无法保证仅处理新触发的对象,会导致数据重复与工作流效率低下。
示例
- 完整路径示例:
"subject":"objects/<storage_bucket>/2023/09/06/12/40/ae10dc08dbed566c3e999005a1b565416b38fe51_mysql-cdc-binlog_1014338102_6_14695541.avro" - 仅前缀示例:
"subject": "objects/<storage_bucket>/2023/09/06/13/21/"
补充信息
完整的请求payload示例:
{ "bucket": "***", "data": { "bucket": "***", "contentType": "application/octet-stream", "crc32c": "ofTnjQ==", ... "name": "***", ... "size": "23301", "storageClass": "STANDARD", ... }, "datacontenttype": "application/json", "id": "8811078306811423", "source": "//storage.googleapis.com/projects/_/buckets/***", "specversion": "1.0", "subject": "objects/***/2023/09/06/12/40/***", "time": "2023-09/06T12:43:07.949071Z", "type": "google.cloud.storage.object.v1.finalized" }
补充说明:我已检查Cloud Storage存储桶,给定路径下的对象数量不会影响subject字段返回具体对象还是目录路径。
疑问
- 导致
subject字段不一致的原因是什么? - 是否有办法确保
subject始终返回完整路径或仅前缀? - 是否存在我遗漏的配置可实现上述目标?
内容的提问来源于stack exchange,提问作者cbrandborg
相关产品推荐
相关产品推荐

