排查 Eventarc for Workflows 问题

本页面介绍如何解决在使用 Eventarc for Workflows 时可能遇到的问题。

有关您可能会遇到的其他问题,请参阅以下问题排查页面:

触发器创建操作失败,因为工作流目标不存在

您收到类似于以下内容的错误消息:

cloud workflow "projects/PROJECT_ID/locations/LOCATION/workflows/WORKFLOW_ID" does not exist
此输出包括以下值:

  • PROJECT_ID:您的 Google Cloud 项目 ID
  • LOCATION:工作流的位置
  • WORKFLOW_ID:工作流的名称

当 Eventarc 找不到目标工作流时,就会发生这种情况。 如需解决此问题,请执行以下操作:

  1. 确保目标工作流存在且有效:

    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

  2. 创建触发器时,确保您已提供正确的工作流 ID 和工作流位置。

已成功创建触发器,但目标未收到事件

确认创建触发器以后等待了足够长的时间。触发器最长可能需要两分钟才能发送事件。

如果触发器仍然不正常,并且未传送事件,请执行以下操作:

  1. 从 Pub/Sub 发送到目标的事件可能会被丢弃。为确保事件不被丢弃,请设置 Pub/Sub 订阅重试政策将未传送的消息转发到死信主题(也称为死信队列)。

    在设置死信主题之前,请检索触发器的主题和订阅:

    gcloud eventarc triggers describe TRIGGER \
    --location=LOCATION

    替换以下内容:

    • TRIGGER:触发器的 ID 或完全限定标识符。
    • LOCATION:Eventarc 触发器的位置。
  2. 使用 Google Cloud 控制台监控消息是否发布到指标为 topic/send_message_operation_count 的 Pub/Sub 主题。

  3. 如果消息未发布到 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。
  4. 如果系统正在传递事件,但未触发工作流执行,这可能是由于未经身份验证的调用所致。确保触发器与有权创建工作流执行的服务账号相关联。如需了解详情,在为特定提供方、事件类型和工作流目的地创建触发器时,请按照“准备创建触发器”部分中的说明创建用户管理的服务账号 。

  5. 如果消息已发布到 Pub/Sub 主题,但未触发工作流执行,请确保 Eventarc 载荷不超过 512 KB。如需详细了解资源限制,请参阅配额和限制

    1. 在 Cloud 控制台中,转到订阅页面。

      前往订阅页面

    2. 监控订阅中未确认的消息。如需了解详情,请参阅监控转发的无法传送的消息

    3. 如果存在未确认的消息,请监控 TriggerPubsubExecution 方法的工作流日志。 如需详细了解如何查看工作流日志,请参阅查看工作流日志

      • 使用过滤条件 Permission 'workflows.executions.create' denied 来验证触发器是否与有权触发工作流执行的服务账号相关联。如需详细了解如何为服务账号授予适当的角色,在为特定提供方、事件类型和工作流目的地创建触发器时,请按照“准备创建触发器”部分中的说明操作。
      • 使用关键字 event size exceeded 来验证事件大小是否超过 512 KB。
    4. 如果记录了日志,但事件未被传送,请与支持团队联系

  • 如需了解特定于工作流的其他问题,请参阅排查问题
  • 如需获取其他帮助,请参阅获取支持