You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过API触发Salesforce与Snowflake的数据同步?

如何通过API触发Salesforce Data Manager与Snowflake的数据同步?

可以通过Salesforce的REST API直接触发Data Manager中的Snowflake同步任务,无需专门的Data Manager对接库,以下是具体实现步骤:

1. 获取同步任务ID

进入Salesforce Data Manager,找到你创建的Snowflake关联同步任务,打开详情页后从URL中提取任务ID——比如URL为/lightning/r/DM_SyncJob/0ZbXXXXXXXXXXXXXX/view,其中0ZbXXXXXXXXXXXXXX就是同步任务的唯一ID。

2. 通过Salesforce REST API触发同步

步骤1:获取访问令牌

通过Salesforce的OAuth2密码模式(适合自动化场景)获取访问令牌:

ACCESS_TOKEN=$(curl -X POST "https://你的Salesforce实例域名/services/oauth2/token" \
  -d "grant_type=password" \
  -d "client_id=你的Connected App客户端ID" \
  -d "client_secret=你的Connected App客户端密钥" \
  -d "username=你的Salesforce用户名" \
  -d "password=你的Salesforce密码+安全令牌" | jq -r '.access_token')

步骤2:触发同步任务

调用Salesforce的自定义Apex动作API启动同步:

curl -X POST "https://你的Salesforce实例域名/services/data/v58.0/actions/custom/apex/DM_RunSyncJobAction" \
  -H "Authorization: Bearer $ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"inputs": [{"syncJobId": "你的同步任务ID"}]}'

注意:将v58.0替换为你使用的Salesforce API版本,同步任务ID替换为第一步获取的值。

3. 在Gitlab流程中集成

在你的Gitlab CI/CD配置文件(如.gitlab-ci.yml)中,添加一个后续步骤,待Snowflake数据加载转换完成后执行上述API调用:

stages:
  - load_transform
  - salesforce_sync

load_transform:
  stage: load_transform
  script:
    - # 你的Snowflake数据加载/转换脚本

salesforce_sync:
  stage: salesforce_sync
  needs: [load_transform]
  script:
    - # 安装jq(如果Gitlab runner未预装)
    - apt-get update && apt-get install -y jq
    - # 获取Salesforce访问令牌
    - ACCESS_TOKEN=$(curl -X POST "https://你的Salesforce实例域名/services/oauth2/token" -d "grant_type=password" -d "client_id=你的客户端ID" -d "client_secret=你的客户端密钥" -d "username=你的用户名" -d "password=你的密码+安全令牌" | jq -r '.access_token')
    - # 触发同步
    - curl -X POST "https://你的Salesforce实例域名/services/data/v58.0/actions/custom/apex/DM_RunSyncJobAction" -H "Authorization: Bearer $ACCESS_TOKEN" -H "Content-Type: application/json" -d '{"inputs": [{"syncJobId": "你的同步任务ID"}]}'

4. 验证同步状态

如果需要确认同步是否完成,可以调用API查询任务状态:

curl -H "Authorization: Bearer $ACCESS_TOKEN" "https://你的Salesforce实例域名/services/data/v58.0/sobjects/DM_SyncJob/你的同步任务ID"

返回结果中的Status字段会显示任务状态(如Completed、Running、Failed)。

注意事项

  • 确保你的Salesforce账号拥有DM_SyncJob对象的读写权限,以及调用DM_RunSyncJobAction动作的权限。
  • 可以用Python替代curl实现(比如用requests库),逻辑和上述步骤一致,无需依赖simple-force专门处理Data Manager相关操作。

内容的提问来源于stack exchange,提问作者user15915737

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 03:10:35