如何才能避免 Route 53 API 限制错误?
上次更新日期:2021 年 4 月 23 日
如何避免 Amazon Route 53 中的 API 限制错误?
简短描述
当您对 Route 53 执行批量 API 调用时,您可能会收到 HTTP 400 (Bad Request) 错误。
如果相应标头中包含值为限制的代码元素和值为超出速率的消息元素,则表示速率限制。当 API 请求数量超过每秒 5 个请求的硬限制(每个账户)时,就会发生速率限制。
如果 Route 53 无法在下一次请求同一托管区域之前处理请求,则后续请求将被拒绝,并出现另一个 HTTP 400 错误。响应标头包含以下两项内容:
- 值为 PriorRequestNotComplete 的代码元素
- 值为请求因 Route 53 仍在处理先前的请求而被拒绝的消息元素。
来自同一账户中的 AWS Identity and Access Management (IAM) 用户的 API 调用将计入账户的全局速率限制。来自这些 IAM 用户的 API 调用也会影响从 AWS 管理控制台进行的 API 调用。
解决方法
注意:如果您在运行 AWS 命令行界面 (AWS CLI) 命令时遇到错误,请确保您使用的是最新版的 AWS CLI。
使用以下方法避免速率限制。
批处理请求
将相同类型的各个操作分组到一个更改批处理操作中,以减少使用 AWS CLI 或首选软件开发工具包的 API 调用。
例如,请求通过一个批处理操作 CREATE、DELETE 或 UPSERT(更新和插入)多条记录。使用 AWS CLI 中的 change-resource-record-sets 命令执行批量资源记录操作。
请注意:
- UPSERT 请求(更新和插入)计数两次。
- change-resource-record-sets API 调用中的元素和字符存在配额。
使用错误重试和指数退避
为避免限制,请在 Route 53 API 调用中添加错误重试和指数退避。例如,使用简单的指数退避算法,该算法在 2^i 秒内重试调用,其中 i 是重试次数。
随机化开始时间
随机化调用 Route 53 API 的开始时间。确保没有多个应用程序同时处理逻辑。同时请求可能会导致限制。
在调用之间安排“睡眠时间”
如果代码函数连续调用 Route 53 API,请在两次调用之间添加“睡眠时间”,以最大限度地降低限制风险。
相关信息
配额 (Route 53)