由于超过运动速率限制,Cloudformation 失败
Posted
技术标签:
【中文标题】由于超过运动速率限制,Cloudformation 失败【英文标题】:Cloudformation failure due to kinesis rate limit exceeded 【发布时间】:2022-01-22 19:51:42 【问题描述】:我们有一个 AWS Lambda SAM 模板在 Cloudformation 堆栈创建/更新期间偶尔会失败,原因是:
Invalid request provided: Received Exception while reading from provided stream. Rate exceeded for shard shardId-000000000000
在 SAM 模板中,10 个 Lambda 函数(Lambda 的 Kinesis 事件源)附加到具有 10 个分片的同一个 Kinesis Stream。
有没有人可能会导致这个问题?我没有看到附加到单个 Kinesis 流的 Lambda 数量有任何限制
【问题讨论】:
你的模板是什么? 【参考方案1】:如果在您更新堆栈时发生这种情况,您可能会遇到以下配额之一:
DescribeStream 限制为每个帐户每秒 10 次交易。 GetShardIterator 限制为每个分片每秒 5 个事务。这两个 API 调用都需要 Lambda 从流中读取,并且几乎肯定会在创建事件触发器时发生。
我不确定您当前的架构是否有保证的解决方案,但一种可能性是使用 DependsOn
链接 Lambda 和触发器的创建。创建这些资源所花费的时间应使 API 调用率低于限制。
如果这不起作用,您将不得不使用enhanced fan-out(您可能仍然需要它,具体取决于通过流推送的数据量)。但是,这并不能解决DescribeStream
配额的问题。
【讨论】:
感谢您使用dependsOn的详细回答,这是一个非常好的主意!以上是关于由于超过运动速率限制,Cloudformation 失败的主要内容,如果未能解决你的问题,请参考以下文章
如何将 Twitter API 用于超过 REST 速率限制的大型 Web 应用程序