- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
目前我有一个使用 lambda 和 API 网关的无服务器 API。
我要构建的下一个功能是使用 AWS Cognito 进行用户身份验证,然后对每个用户应用速率限制。
我该怎么做呢? API网关可以和cogito通信吗?
我读了in the AWS docs :
Per-client throttling limits are applied to clients that use API keys associated with your usage policy as client identifier.
但据我所知,这是指用于调用 lambda 的每个 x-api-key
的速率限制。
我真的不想为每个用户都创建一个新的 key ,因为一次发布的硬性限制为 10000 个。我更愿意使用 Cognito 用户池 key 。
我知道另一种方法是,构建一个自定义授权器,它将用户 ID 写入内存数据库,例如 Redis 或 ElastiCache,然后在每个请求上查询以计算用户最后一次发出请求的时间.
但是,我不太喜欢这种方法,因为它不像无服务器 API 那样可扩展,并且可能成为整个 API 的瓶颈。
每个人如何实现这样的速率限制?我错过了一些基本的东西吗?亚马逊有开箱即用的解决方案吗?
最佳答案
AWS API 网关更适合用于点对点连接的客户端凭据 oAuth 身份验证流程。它没有提供很多功能,例如基于用户的速率限制。您可以将 lambda authoriser 与 dynamodb 结合使用来存储用户限制和当前值,并根据用户提供速率限制。AWS API 网关没有提供基于用户的限制功能。
关于amazon-web-services - 如何在无服务器 lambda 应用程序上实现速率限制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71998170/
我是一名优秀的程序员,十分优秀!