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

AWS CodeCommit批量调用getFile接口遇非重试400错误求助

问题

使用JavaScript SDK调用AWS CodeCommit的getFolder API获取文件列表后,逐个调用getFile接口查看文件内容。但在包含60个以上文件的大文件夹中,会产生大量getFile调用,引发以下问题:

  • 并发调用时出现可重试的ThrottlingExceptions,已通过自定义退避回调处理:
retryDelayOptions: {
    customBackoff: (retryCount, err) => {
        console.warn(`Retry ${retryCount}. We hit a retryable error`, err);
        return 1000 + (1000 * Math.pow(3, retryCount));
    }
}
  • 一段时间后持续出现不可重试的400 BadRequest错误,自定义退避/重试回调无法生效,导致整个流程失败。错误详情:
code: 'UnknownError',
statusCode: 400,
time: 2022-10-13T10:16:56.723Z,
requestId: 'xyz',
retryable: false

API响应无更多有效信息,且AWS CodeCommit官方常见错误页面未列出该错误。

解决方案
  • 改用仓库克隆方式:通过SDK克隆整个仓库(仅需一次API调用),之后在本地处理文件内容。这种方式彻底规避了大量getFile请求带来的频率限制问题,是最优解。
  • 严格控制请求并发数:避免同时发起大量getFile请求,改为串行或低并发(如每次5-10个请求)的方式调用API。过高的并发即使有退避重试,仍可能触发后端流量管控逻辑,导致非重试的400错误。
  • 添加错误降级处理:针对不可重试的400错误,单独添加捕获逻辑,比如暂停请求1-2分钟后继续处理剩余文件,或者标记异常文件后续单独处理,防止整个流程直接失败。
  • 校验请求参数合法性:虽然错误提示为UnknownError,但高频请求中可能存在个别请求参数的隐性问题(如路径编码错误、格式不符合要求),调用getFile前统一校验参数格式,确保每个请求都符合API规范。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 16:30:57