由于超过运动速率限制导致 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 数量有任何限制
如果您在更新堆栈时发生这种情况,您可能 运行 处于以下配额之一:
- DescribeStream 限制为每个帐户每秒 10 笔交易。
- GetShardIterator 限制为每个分片每秒 5 个事务。
这两个 API 调用都需要发生,Lambda 才能从流中读取数据,而且几乎肯定会在创建事件触发器时发生。
我不确定您当前的架构是否有可靠的解决方案,但一种可能性是使用 DependsOn
链接 Lambda 和触发器的创建。创建这些资源所花费的时间应该使 API 调用率低于限制。
如果这不起作用,您将不得不使用 enhanced fan-out(您可能仍然需要,具体取决于通过流推送的数据量)。但是,这不能解决 DescribeStream
配额的问题。
我们有一个 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 数量有任何限制
如果您在更新堆栈时发生这种情况,您可能 运行 处于以下配额之一:
- DescribeStream 限制为每个帐户每秒 10 笔交易。
- GetShardIterator 限制为每个分片每秒 5 个事务。
这两个 API 调用都需要发生,Lambda 才能从流中读取数据,而且几乎肯定会在创建事件触发器时发生。
我不确定您当前的架构是否有可靠的解决方案,但一种可能性是使用 DependsOn
链接 Lambda 和触发器的创建。创建这些资源所花费的时间应该使 API 调用率低于限制。
如果这不起作用,您将不得不使用 enhanced fan-out(您可能仍然需要,具体取决于通过流推送的数据量)。但是,这不能解决 DescribeStream
配额的问题。