Shopify Admin API

Bulk Operation 完成后 URL 七天过期下载失败

现象#

一周前跑完的导出任务,今天点下载返回 403,响应体是一段 XML 而不是 JSONL;数据库里存的 bulkOperation.url 字段看着还有值。

原因#

  • url 与 partialDataUrl 都是带签名的临时地址,完成或失败后七天失效
  • 只把链接存进数据库却没落盘文件,补跑时拿到的是过期地址
  • 任务失败时只有 partialDataUrl 可用,误以为 url 为空是解析出错
  • 下载中断后用同一个链接重试,签名过期导致 Range 续传也无法完成

处理步骤#

  1. 收到 COMPLETED 后立即流式下载并写入对象存储,不要只保存链接
  2. 按行解析写入,单文件可能到 GB 级,禁止一次性读进内存
  3. 失败任务改读 partialDataUrl,并按 errorCode 判断是否值得重跑
  4. 需要重取时重新发起 bulkOperationRunQuery,旧链接无法续期
  5. 在任务表记录 completedAt,超过六天未下载的自动补拉

验收标准#

对象存储里的 JSONL 行数与 objectCount 一致;一周后仍能用已落盘文件重放,不依赖任何临时链接。

本文由 风格技术 技术团队整理,适用于 Shopify 标准版与 Plus 店铺。Shopify 平台能力迭代较快,具体操作路径与字段以官方文档和店铺后台实际版本为准。