如何避免 Route 53 API 节流错误?

1 分钟阅读
0

我在 Amazon Route 53 中遇到了 API 节流错误。

简短描述

对 Route 53 执行批量 API 调用时,可能会出现 **HTTP 400(错误请求)**错误。

如果响应标头的代码元素值为节流消息元素值为超出速率,则表明出现了速率节流的情况。当 API 请求数量大于每个账户每秒五个请求的硬性限制时,就会出现速率节流的情况。

如果 Route 53 无法在下一个针对同一托管区域的请求之前处理该错误请求,则后续请求将遭到拒绝,并再次出现 HTTP 400 错误。响应标头包含以下两个元素:

  • 值为 PriorRequestNotComplete代码元素
  • 值为请求遭到拒绝,因为 Route 53 仍在处理先前请求消息元素。

来自同一账户中的 AWS Identity and Access Management(IAM)用户的 API 调用计入该账户的全球速率节流限制。来自这些 IAM 用户的 API 调用也会影响从 AWS 管理控制台发出的 API 调用。

解决方法

**注意:**如果在运行 AWS 命令行界面(AWS CLI)命令时收到错误,请确保您使用的是最新的 AWS CLI 版本

为避免出现速率节流的情况,请使用以下任一方法:

批处理请求

要减少 API 调用,请使用 AWS CLI 或您的首选 SDK 将相同类型的单个操作归为一个批量更改操作。

例如,通过一个批处理操作来请求 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,则在两次调用之间增加“休眠时间”以最大限度地降低节流风险。

AWS 官方
AWS 官方已更新 1 年前