在 GCP 存储桶中创建对象时触发通过 Cloud Run 部署的数据流作业

Posted

技术标签:

【中文标题】在 GCP 存储桶中创建对象时触发通过 Cloud Run 部署的数据流作业【英文标题】:Trigger a dataflow job deployed through Cloud Run on object creation in GCP Storage Bucket 【发布时间】:2021-05-18 19:08:06 【问题描述】:

我创建了一个数据流管道,它从 GCS 存储桶中读取文件并对其进行处理。当我从本地执行作业时它正在工作。

我使用 storage.object.create 上的触发器在 Cloud Run 中部署了数据流作业。

但是当我在 GCS 存储桶中上传任何文件时,日志中没有显示触发消息或未执行数据流作业。

触发器配置

Ingress:Allow traffic
Authentication:Allow authentication
Event source:Cloud Storage
Event type:google.cloud.audit.log.v1.written
Create time:2021-02-12 (16:05:25)
Receive events from:All regions (global)
Service URL path:/
Service account:sdas-pipeline@sdas-demo-project.iam.gserviceaccount.com
Service name:storage.googleapis.com
Method name:storage.objects.create

我在这里缺少什么?请提出建议。

【问题讨论】:

没有的可以查看这篇文章medium.com/@aishwarya.gupta3/… 嗨,OP,请提供更多详细信息。你的触发器配置是什么?您的存储桶的区域/位置是什么?我们如何重现您的问题?另外,请注意,事件弧触发器在创建后最多可能需要 10 分钟才能工作。能再触发一次吗? 我并没有真正理解数据流和云运行之间的关系。您是否在 Cloud Run 中运行数据流直接运行程序? @guillaumeblaquiere 制作图像后,我正在将我的 dataflowrunner 管道作业部署到云运行中。我需要在 gcs 存储桶中上传文件时触发此作业。 @DonnaldCucharo 创建触发器后我等了 10 分钟,但触发器不适用于 gcs 对象创建。问题描述中更新了触发器配置。 【参考方案1】:

未触发您的 Cloud Run 服务的原因是,在创建/上传对象到您的存储桶时可能没有写入审核日志。每当在审核日志中写入事件时都会启动 Eventarc 触发器,并且默认情况下禁用云存储:

解决方案是为云存储启用审核日志。它可以通过两种方式完成:

    在您第一次创建 Eventarc 触发器时启用它。 或转到 IAM 和管理 > 审核日志 并确保所有字段都检查了 Cloud Storage:

作为参考,可以在首页 > 活动上查看审核日志,这是一个示例:

【讨论】:

这很有帮助,而且我的项目中没有为 GCS 启用 Cloud Audit Log。启用后我会试一试。感谢您的帮助。

以上是关于在 GCP 存储桶中创建对象时触发通过 Cloud Run 部署的数据流作业的主要内容,如果未能解决你的问题,请参考以下文章

无法在GCP存储中创建MySQL数据库备份

在 GCP Console 中创建存储分区后无法访问 Firebase 存储

如何通过 http 触发器从 AWS SNS 触发 GCP 云功能(私有)

GCP 存储桶可在 UI 中访问,但不能通过 Cloud Shell 中的 gcsfuse

在自定义位置的 Google Cloud Storage 中创建存储桶

使用 terraform 创建多个 GCP 存储桶