Elastic Load Balancing API 的请求限制 - Elastic Load Balancing

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

Elastic Load Balancing API 的请求限制

Elastic Load Balancing 会根据每个区域限制其对每个 AWS 账户的 API 请求。我们这样做是为了提高服务的性能和可用性。限制可确保对 Elastic Load Balancing API 的请求不超过允许的最大 API 请求限制。无论您调用还是代表您调用 API 请求(例如,由或第三方应用程序调用),API 请求均受请求限制的约束。 AWS Management Console

如果您超过了 Elastic Load Balancing API 的限制限制,则会收到ThrottlingException错误代码和Rate exceeded错误消息。

我们建议您做好准备,以优雅的方式处理限流。有关更多信息,请参阅超时、重试和回退并抖动。如果您遇到严重的限制,可以联系 AWS 支持 以帮助您评估您的 API 使用情况和潜在的解决方案。每个案例都经过单独评估。 支持 可能会在系统的安全限制范围内增加您的限制,以保持高可用性和可预测的性能。

如何应用节流

Elastic Load Balancing 使用令牌桶算法来实现 API 限制。使用此算法,您的账户拥有一个持有特定数量的令牌存储桶。存储桶中的代币数量代表您在任何给定秒钟的限制限制。

Elastic Load Balancing 提供两组 API 操作。ELB API 版本 2 支持以下类型的负载均衡器:应用程序负载均衡器、网络负载均衡器和网关负载均衡器。ELB API 版本 1 支持传统负载均衡器。每个 ELB API 版本都有自己的存储桶和令牌。

代表您调用 Elastic Load Balancing API 的服务,例如亚马逊 EC2、亚马逊 ECS、Amazon A EC2 uto Scaling,并且 AWS CloudFormation 拥有自己的账户级存储桶。这些服务不会消耗您存储桶中的代币。

请求速率限制

通过请求速率限制,您发出的 API 请求数量会受到限制。您发出的每个请求都会从存储桶中删除一个令牌。例如,非变更 API 操作的令牌桶大小为 40 个令牌。一秒钟内您最多可以发出 40 个Describe*请求。如果您在一秒钟内超过 40 个Describe*请求,则会受到限制,而该秒内剩余的请求将失败。

存储桶会以设定的速率自动填充。如果存储桶的容量低于其最大容量,则每秒会重新添加一定数量的令牌,直到该存储桶达到其最大容量。如果充值令牌到达时桶已满,则它们将被丢弃。一个存储桶不能容纳超过其最大数量的令牌。例如,非变更 API 操作的存储桶大小为 40 个令牌,填充速率为每秒 10 个令牌。如果您在一秒钟内发出 40 个DescribeLoadBalancers请求,则存储桶将减少为零 (0) 个令牌。我们每秒向存储桶中添加 10 个充值代币,直到其最大容量达到 40 个代币。这意味着,如果在此期间没有发出任何请求,则空存储桶需要 4 秒钟才能达到其最大容量。

您无需等到存储桶完全装满后即可发出 API 请求。您可以在将令牌添加到存储桶时使用它们。如果您立即使用重填令牌,存储桶就不会达到最大容量。

所有 Elastic Load Balancing API 操作都有一个账户级别的限制限制。账户级存储桶的容量为 40 个代币,充值速率为每秒 10 个请求令牌。

请求代币桶大小和充值率

出于限制请求速率的目的,API 操作分为几类。每个类别都有自己的限制。

类别
  • 变更操作 — 创建、修改或删除资源的 API 操作。此类别通常包括所有未归类为非变异操作的 API 操作。这些操作的限制比非变更的 API 操作更低。

  • 非变异操作 — 检索资源相关数据的 API 操作。这些 API 操作通常具有最高的 API 限制限制。

  • 资源密集型操作 — 需要最长时间且消耗最多资源才能完成的 API 操作。与变异操作相比,这些操作的限制还要低。这些操作与其他变异操作是分开进行限制的。

  • 注册操作 — 注册或取消注册目标的 API 操作。这些 API 操作与其他变异操作是分开限制的。

  • 未分类的操作 — 这些 API 操作会获得自己的代币桶大小和充值率,即使它们属于其他类别之一。

下表显示了已分类的请求令牌存储桶的默认容量和充值费率。

类别 ELBv2 行动 ELBv1 行动 铲斗容量 填充速率(每秒)
资源密集型 CreateLoadBalancer, SetSubnets CreateLoadBalancer, AttachLoadBalancerToSubnets, DetachLoadBalancerFromSubnets, EnableAvailabilityZonesForLoadBalancer, DisableAvailabilityZonesForLoadBalancer 10 0.2
注册 RegisterTargets, DeregisterTargets RegisterInstancesWithLoadBalancer, DeregisterInstancesFromLoadBalancer 20 4
非变异 DescribeAccountLimits, DescribeListenerCertificates, DescribeListeners, DescribeLoadBalancerAttributes, DescribeLoadBalancers, DescribeRules, DescribeSSLPolicies, DescribeTags, DescribeTargetGroupAttributes, DescribeTargetGroups, DescribeTargetHealth Describe* 40 10
变异 AddListenerCertificates, AddTags, CreateListener, CreateRule, CreateTargetGroup, DeleteListener, DeleteLoadBalancer, DeleteRule, DeleteTargetGroup, ModifyListener, ModifyLoadBalancerAttributes, ModifyRule, ModifyTargetGroup, ModifyTargetGroupAttributes, RemoveListenerCertificates, RemoveTags, SetIpAddressType, SetRulePriorities, SetSecurityGroups AddTags, ApplySecurityGroupsToLoadBalancer, ConfigureHealthCheck, CreateAppCookieStickinessPolicy, CreateLbCookieStickinessPolicy, CreateLoadBalancerListener, CreateLoadBalancerPolicy, Delete*, ModifyLoadBalancerAttributes, RemoveTags, SetLoadBalancer* 20 3

下表显示了未分类的请求令牌存储桶的默认容量和充值费率。 ELBv2

ELBv2 行动 铲斗容量 填充速率(每秒)
CreateTrustStore 10 0.2
AddTrustStoreRevocations, DeleteSharedTrustStoreAssociation, DeleteTrustStore, ModifyTrustStore, RemoveTrustStoreRevocations 10 0.2
GetTrustStoreCaCertificatesBundle, GetTrustStoreRevocationContent 20 4
DescribeTrustStoreAssociations, DescribeTrustStoreRevocations, DescribeTrustStores 40 10

部分充值率需要几秒钟才能生成一个完整的代币。

监控 API 请求

您可以使用 AWS CloudTrail 来监控您的 Elastic Load Balancing API 请求。有关更多信息,请参阅 使用记录 Elastic Load Balancing 的 API 调用 AWS CloudTrail