【问题标题】:Rate limiting / scheduling AWS Cognito operations to avoid TooManyRequestsException速率限制/调度 AWS Cognito 操作以避免 TooManyRequestsException
【发布时间】:2021-10-12 22:17:19
【问题描述】:

AWS Cognito UserUpdate 相关操作的配额为每秒 25 个请求(无法增加的硬限制)

我有一个 Lambda 函数,它同时获得 1000 个请求并负责调用 Cognito 的 AdminUpdateUserAttributes 操作。结果,一些请求通过,一些失败对TooManyRequestsException

请务必注意,这 1000 个请求每天都会发生一次,每天早上一次。一整天都没有任何请求。

我们的堆栈完全是无服务器的,并由 cloudformation(使用无服务器框架)管理,我们倾向于尽可能避免使用 EC2。

处理这些每日 1000 个请求的最佳方法是什么,以便在我收到它们时立即处理它们,同时避免由于 TooManyRequestsException 而导致的失败

我尝试过的解决方案: 一个 lambda 接收请求并将它们发送到 SQS + 另一个 lambda,保留并发为 1,由 SQS 中调用 Congito 的 AdminUpdateUserAttributes 操作的事件触发。

此解决方案部分有效,因为我不再收到 TooManyRequestsException 异常,但看起来有些消息在途中丢失了(我认为这是因为 SQS 受到限制)。

谢谢!

【问题讨论】:

    标签: amazon-web-services aws-lambda amazon-cognito job-scheduling rate-limiting


    【解决方案1】:

    AWS 建议将 exponential backoff with jitter 用于任何受速率限制或产生可重试失败的 API 操作。

    【讨论】:

      【解决方案2】:

      标准队列支持每个 API 操作(SendMessage、ReceiveMessage 或 DeleteMessage)每秒几乎无限数量的 API 调用。

      您确定 SQS 被限制了吗?

      增加失败的 lambda 退休的另一种选择。

      【讨论】:

        猜你喜欢
        • 2016-08-18
        • 1970-01-01
        • 2022-01-14
        • 1970-01-01
        • 2015-03-19
        • 1970-01-01
        • 2018-05-12
        • 2023-04-03
        • 1970-01-01
        相关资源
        最近更新 更多