我的 AWS Batch 作业失败,并且我收到“出现‘请求过多’错误”的错误。
简短描述
AWS Batch 会根据账户的 AWS 区域限制 AWS 账户中的所有 API 请求。这样可确保 AWS Batch 为所有客户提供一致的性能并保证公平使用。AWS Batch API 配额通常适用于每个 API,包括 DescribeJobs 和 SubmitJob API 调用。
**注意:**对于 SubmitJob 操作,每个账户每秒的最大事务数量 (TPS) 为 50 个。
当您达到 AWS Batch API 配额时,AWS Batch 会返回以下错误消息:
“出现‘请求过多’错误(服务: AWSBatch;状态代码: 429;错误代码: TooManyRequestsException)。”
以下两个常见原因会导致出现“请求过多”错误的错误:
- 使用 AWS 命令行界面 (CLI) 或 AWS 软件开发工具包 (SDK) 以编程方式同时提交多个作业
- 使用 AWS Lambda 提交多个作业
解决方法
在对错误进行排查时,请注意以下几点:
- API 配额仅适用于 AWS 端点。这些配额不适用于您的账户。
- AWS 按区域限制 Amazon API 请求,以防止每个账户向服务端点发送过多请求。
- AWS 确保对所有 Amazon API 的所有调用均不超过允许的最大 API 请求速率。最大 API 请求速率因地区而异。
使用重试和带抖动的指数回退算法,然后重新提交作业
有关更多信息,请参阅指数回退和抖动。
使用 AWS Batch 阵列作业通过一次 SubmitJob API 调用提交多个作业
有关更多信息,请参阅阵列作业和 SubmitJob。
**注意:**AWS Batch 阵列作业允许您最多提交 10,000 份作业。
调整 API 节流配额
您可以为您的 AWS 账户请求增加 API 节流配额。要请求调整配额,请联系 AWS Support 中心