处理 AWS Cloud Map DiscoverInstances API 请求限制 - AWS Cloud Map

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

处理 AWS Cloud Map DiscoverInstances API 请求限制

AWS Cloud Map 按区域限制每个 AWS 账户的 DiscoverInstancesAPI 请求。Throttling 有助于提高服务的性能,并有助于为所有 AWS Cloud Map 客户提供公平使用。限制可确保对 AWS Cloud Map DiscoverInstancesAPI 的调用不会超过允许的最大 DiscoverInstancesAPI 请求配额。DiscoverInstances来自以下任何来源的 API 调用均受请求配额的限制:

  • 第三方应用程序

  • 命令行工具

  • 控制 AWS Cloud Map 台

如果您超过 API 节流配额,则会收到RequestLimitExceeded错误代码。有关更多信息,请参阅 请求速率限制

如何应用节流

AWS Cloud Map 使用令牌桶算法实现 API 限制。使用此算法,您的账户拥有一个持有特定数量的令牌存储桶。存储桶中的令牌数表示您在任何给定秒钟的节流配额。单个区域有一个存储桶,它适用于该区域的所有端点。

请求速率限制

限制限制您可以发出的 DiscoverInstancesAPI 请求数量。每个请求都会从存储桶中删除一个令牌。例如,DiscoverInstancesAPI 操作的存储桶大小为 2,000 个令牌,因此您最多可以在一秒钟内发出 2,000 个DiscoverInstances请求。如果您在一秒钟内超过 2,000 个请求,则会被节流,而该秒内剩余的请求将失败。

存储桶会以设定的速率自动填充。如果存储桶容量不足,则每秒添加一定数量的令牌,直到存储桶达到容量。如果重填令牌到达时存储桶已满,这些令牌将被丢弃。DiscoverInstancesAPI 操作的存储桶大小为 2,000 个令牌,充值速率为每秒 1,000 个令牌。如果您在一秒钟内发DiscoverInstances出 2,000 个 API 请求,则存储桶会立即减少为零 (0) 个令牌。然后,该存储桶每秒最多可重填 1,000 个令牌,直至达到其 2,000 个令牌的最大容量。

您可以在令牌被添加到存储桶时使用这些令牌。在发出 API 请求之前,您无需等待存储桶达到最大容量。如果您在一秒钟内发出 2,000 个 DiscoverInstancesAPI 请求来耗尽存储桶,那么在此之后您仍然可以根据需要每秒发出 1,000 个 DiscoverInstancesAPI 请求。这意味着当重填令牌被添加到存储桶时,您可以立即使用这些令牌。只有当您每秒发出的 API 请求数少于重填速率时,存储桶才会开始重填到最大容量。

重试或批处理

如果 API 请求失败,您的应用程序可能需要重试该请求。要减少 API 请求数,请在连续的请求之间添加相应的睡眠间隔。为了获得最佳的效果,请使用递增或可变的睡眠间隔。

计算睡眠间隔

在需要轮询或重试 API 请求时,我们建议您使用指数回退算法计算 API 调用之间的睡眠间隔。通过在两次重试之间逐渐延长连续错误响应的等待时间,您可以减少失败请求的数量。有关此算法的更多信息和实现示例,请参阅 AWS SDK 和工具参考指南中的重试行为

调整 API 节流配额

您可以申请增加账户的 API 限制配 AWS 额。要请求配额调整,请联系 AWS Support 中心