我想知道是否有任何EC2 API限制限制(如EMR)会限制您每秒或每分钟可以拨打EC2的呼叫数量?
如果是这样,这些限制是什么?他们在任何地方发表了吗?
答案 0 :(得分:28)
Amazon EC2同时记录了他们的一般Query API Request Rate处理:
我们限制每个AWS账户的Amazon EC2 API请求,以帮助提高服务的性能。我们确保所有对Amazon EC2 API的调用(无论它们来自应用程序,调用Amazon EC2命令行界面还是Amazon EC2控制台)都不会超过允许的最大API请求率。请注意,IAM用户发出的API请求归属于底层AWS账户。
Amazon EC2 API操作分为以下几类:
[...]如果API请求超出其类别的API请求率,请求将返回RequestLimitExceeded错误代码。要防止出现此错误,请确保您的应用程序不会以高速率重试API请求。您可以在轮询时使用小心并使用指数退避重试来执行此操作。
虽然细节可能因其过多的服务而有所不同,但我认为通常采用类似的模式是安全的(至少由于EC2支持许多其他服务)。
来自EC2的上述解释以及来自与AWS支持互动的用户的一些间接引用似乎表明限制可能因服务状态和每个帐户而异,即AWS能够提高/减少个人帐户的限制取决于专用的高性能用例,疑似滥用等,请参阅例如:
RequestLimitExceeded
在Client Error Codes内,暗示每个帐户处理:
您的帐户已超出Amazon EC2 API允许的最高请求率。 [...]
How do we get the EBS API rate limit increased?:
Rightscale支持已经表示我们需要联系亚马逊以增加EBS API速率限制,因为我们似乎超出了对此API的调用,因为我们在此帐户中拥有大量MySQL数据库且他们都拥有EBS快照用于备份。
AWS团队对Error: Request limit exceeded using boto to launch and terminate instances的回复:
您将在EC2中看到的速率限制因系统负载而异。
Saul对Amazon Web Services S3 Request Limit的回答:
然而,在发布此问题后,我收到了来自AWS的电子邮件,该电子邮件说我已经将我的LIST请求限制为每秒10个请求,因为我有太多要去特定的存储桶。
当然,他们通常是大多数规则的例外,我知道以下两项服务记录特定限制:
Amazon Route 53正在记录其特定的Limits on Amazon Route 53 API Requests and Entity Counts:
所有请求:每个AWS账户每秒有五个请求。 [...]
Amazon SES还记录了大多数API操作的一个请求/秒的特定限制(可能除了SendEmail和SendRawEmail以外),请参阅例如GetSendQuota:
此操作每秒一次请求会受到限制。
正如Troubleshooting API Request Errors所述,在客户端处理此问题的正确方法是实施Error Retries and Exponential Backoff in AWS(大多数AWS SDKs同时自动应用此指南,包括调整默认重试的选项策略或甚至添加自定义实现。