Openflow Connector for Salesforce Bulk API 故障排除¶
备注
此连接器受 Snowflake 连接器条款 的约束。
本主题介绍如何对 Openflow Connector for Salesforce Bulk API 进行故障排除。
监控¶
要跟踪从 Salesforce 同步到 Snowflake 的数据量,请查询事件表。以下示例查询检索过去 30 分钟的相关日志:
故障排除¶
使用以下信息排查与连接器有关的问题。
身份验证与 OAuth 错误¶
该连接器使用 OAuth 2.0 JWT Bearer Flow 与 Salesforce 进行身份验证。身份验证误通常发生在初始设置阶段,在启动连接器前,可以使用控制器服务上的 验证功能 进行诊断。
invalid_grant 错误¶
invalid_grant 错误表示 Salesforce 拒绝了 OAuth 令牌请求。常见原因包括:
OAuth 流类型错误。 Salesforce 中的外部客户端应用程序未勾选 Enable JWT Bearer Flow 复选框。该连接器需要特定的流程。不支持其他 OAuth 流程(如授权码流程)。请参阅 在 Salesforce 中创建外部客户端应用程序。
私钥与证书不匹配。 连接器中配置的私钥(Connected App Key 参数)与上传到 Salesforce 外部客户端应用的公钥证书不一致。
使用者密钥错误。OAuth2 Client ID 参数与上传证书的外部客户端应用程序的 Consumer Key 不匹配。
凭据跨多个应用程序混用。 如果您创建了多个外部客户端应用程序或尝试了不同配置,客户端 ID、证书和私钥可能属于不同的应用程序。这三者必须全部来自同一个外部客户端应用程序。
已弃用的连接应用程序。 Salesforce 已弃用连接应用程序,转而使用外部客户端应用程序。如果您使用的是连接应用程序,Snowflake 建议改为新建外部客户端应用程序。
令牌端点 URL 错误。 OAuth2 Token Endpoint URL 参数必须指向正确的 Salesforce 实例。例如:
https://myCompany.my.salesforce.com/services/oauth2/token。受众错误。 在生产环境中,OAuth2 Audience 参数必须设为
https://login.salesforce.com;在沙盒或测试环境中,必须设为https://test.salesforce.com。
权限错误¶
如果 JWT 令牌已成功生成但用户仍缺乏权限,则会显示权限或授权错误。这意味着 JWT Bearer Flow 运行正常,但 Salesforce 用户(OAuth2 主体)未获得使用该外部客户端应用程序的授权。
要解决此问题,请执行以下步骤:
在 Salesforce 中,进入外部客户端应用程序的 Policies 选项卡。
验证 Permitted Users 是否已设置为 Admin approved users are pre-authorized。
验证在 App Policies 部分中分配的配置文件或权限集是否包含连接器 OAuth2 Subject 参数中指定的该用户。
有关更多详细信息,请参阅 批准用户的客户端应用程序。
检查连接器状态¶
您可以检查连接器状态,以确保数据按预期复制。连接器会维护当前和过去操作的状态,以确保不会遗漏任何 Salesforce 更改,并在失败时重试批量作业查询。
要查看状态,请执行以下操作:
右键点击画布并选择 Controller services。
找到名为 Salesforce Bulk Jobs State 的控制器服务。
在 Salesforce Bulk Jobs State 菜单中,点击 View state。
状态是一组键/值对,其中键是 Salesforce 对象类型。例如,Account 对象的状态可能如下例所示:
status 可以是以下项之一:
IN_PROGRESSCOMPLETEDFAILEDABORTED
如果状态为 IN_PROGRESS,则表明仍在为该对象类型处理 FlowFile。
小心
请勿手动删除流文件。这可能会导致作业无限期保持在 IN_PROGRESS 状态,因为无法手动更新状态。
如果发生这种情况,您必须为该对象类型执行完整的重新加载操作。
强制完整加载给定对象类型¶
要强制连接器对一种或多种对象类型执行完整刷新,请执行以下操作:
停止流中的所有处理器。
确保未在处理传输中的 FlowFiles。
右键点击画布并选择 Disable all controller services。
转到 Controller services 并打开名为 Salesforce Bulk Jobs State 的控制器服务的状态。
执行以下某项操作:
选择 Clear state 以清除整个状态。这将强制完整加载连接器提取的 所有 已配置对象类型。
选择特定对象类型旁边的垃圾桶图标,仅清除特定对象类型的状态。这将强制在下次连接器执行时完整加载该特定对象类型。
在画布中,右键单击,选择 Enable all controller services,然后启动所有处理器。
如果对象类型仍处于 IN_PROGRESS 状态¶
如果给定对象类型的状态卡在 IN_PROGRESS,并且该对象类型没有传输中的 FlowFiles,FlowFile 在可以更新状态之前,可能已被手动删除。
在这种情况下,您必须对该对象类型执行完整加载,以确保连接器捕获所有事件。
如果状态卡在 IN_PROGRESS 但没有手动删除 FlowFiles,请联系 Snowflake 支持部门。