由于超过运动速率限制导致 Cloudformation 失败

Cloudformation failure due to kinesis rate limit exceeded

我们有一个 AWS Lambda SAM 模板在 Cloudformation 堆栈 creation/update 期间偶尔会失败,原因是:

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 数量有任何限制

如果您在更新堆栈时发生这种情况,您可能 运行 处于以下配额之一:

这两个 API 调用都需要发生,Lambda 才能从流中读取数据,而且几乎肯定会在创建事件触发器时发生。

我不确定您当前的架构是否有可靠的解决方案,但一种可能性是使用 DependsOn 链接 Lambda 和触发器的创建。创建这些资源所花费的时间应该使 API 调用率低于限制。

如果这不起作用,您将不得不使用 enhanced fan-out(您可能仍然需要,具体取决于通过流推送的数据量)。但是,这不能解决 DescribeStream 配额的问题。