本页面介绍如何解决在使用 Eventarc for Workflows 时可能遇到的问题。
有关您可能会遇到的其他问题,请参阅以下问题排查页面:
触发器创建操作失败,因为工作流目标不存在
您收到类似于以下内容的错误消息:
cloud workflow "projects/PROJECT_ID/locations/LOCATION/workflows/WORKFLOW_ID" does not exist
PROJECT_ID
:您的 Google Cloud 项目 IDLOCATION
:工作流的位置WORKFLOW_ID
:工作流的名称
当 Eventarc 找不到目标工作流时,就会发生这种情况。 如需解决此问题,请执行以下操作:
确保目标工作流存在且有效:
gcloud workflows list --location -
输出应类似如下所示:
NAME STATE REVISION_ID UPDATE_TIME projects/PROJECT_ID/locations/LOCATION/workflows/WORKFLOW_ID ACTIVE 000004-c0c 2021-11-19T14:29:27.530185556Z
创建触发器时,确保您已提供正确的工作流 ID 和工作流位置。
已成功创建触发器,但目标未收到事件
确认创建触发器以后等待了足够长的时间。触发器最长可能需要两分钟才能发送事件。
如果触发器仍然不正常,并且未传送事件,请执行以下操作:
从 Pub/Sub 发送到目标的事件可能会被丢弃。为确保事件不被丢弃,请设置 Pub/Sub 订阅重试政策或将未传送的消息转发到死信主题(也称为死信队列)。
在设置死信主题之前,请检索触发器的主题和订阅:
gcloud eventarc triggers describe TRIGGER \ --location=LOCATION
替换以下内容:
TRIGGER
:触发器的 ID 或完全限定标识符。LOCATION
:Eventarc 触发器的位置。
使用 Google Cloud 控制台监控消息是否发布到指标为
topic/send_message_operation_count
的 Pub/Sub 主题。如果消息未发布到 Pub/Sub 主题,请验证来源是否在生成事件:
- 对于来自 Cloud Audit Logs 的事件,请检查日志并确保受监控服务正在写入日志。如果记录了日志,但事件未被传送,请与支持团队联系。
对于来自 Cloud Storage 的事件,请检查存储桶的通知:
将gsutil notification list gs://BUCKET_NAME
BUCKET_NAME
替换为存储桶的名称。
输出应类似如下所示:projects/_/buckets/BUCKET_NAME/notificationConfigs/NOTIFICATION_CONFIG_ID Cloud Pub/Sub topic: projects/PROJECT_ID/topics/TOPIC_ID Filters: Event Types: OBJECT_ARCHIVE
此输出包括以下值:
TOPIC_ID
:现有 Pub/Sub 主题的 ID。NOTIFICATION_CONFIG_ID
:通知配置的 ID。
如果系统正在传递事件,但未触发工作流执行,这可能是由于未经身份验证的调用所致。确保触发器与有权创建工作流执行的服务账号相关联。如需了解详情,在为特定提供方、事件类型和工作流目的地创建触发器时,请按照“准备创建触发器”部分中的说明创建用户管理的服务账号 。
如果消息已发布到 Pub/Sub 主题,但未触发工作流执行,请确保 Eventarc 载荷不超过 512 KB。如需详细了解资源限制,请参阅配额和限制。
在 Cloud 控制台中,转到订阅页面。
监控订阅中未确认的消息。如需了解详情,请参阅监控转发的无法传送的消息。
如果存在未确认的消息,请监控
TriggerPubsubExecution
方法的工作流日志。 如需详细了解如何查看工作流日志,请参阅查看工作流日志。- 使用过滤条件
Permission 'workflows.executions.create' denied
来验证触发器是否与有权触发工作流执行的服务账号相关联。如需详细了解如何为服务账号授予适当的角色,在为特定提供方、事件类型和工作流目的地创建触发器时,请按照“准备创建触发器”部分中的说明操作。 - 使用关键字
event size exceeded
来验证事件大小是否超过 512 KB。
- 使用过滤条件
如果记录了日志,但事件未被传送,请与支持团队联系。