在 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 Console 中创建存储分区后无法访问 Firebase 存储
如何通过 http 触发器从 AWS SNS 触发 GCP 云功能(私有)
GCP 存储桶可在 UI 中访问,但不能通过 Cloud Shell 中的 gcsfuse