【问题标题】:AWS API Gateway - throttle requests based on minute(s), not seconds.AWS API Gateway - 根据分钟而不是秒来限制请求。
【发布时间】:2018-09-17 15:45:16
【问题描述】:

我想知道是否有人设法解决了这个问题;

  • 我可以确认 AWS 已确认该功能目前还没有到位,也不太可能出现在任何近期的路线图中。

AWS API Gateway 具有当前的 Method Throttling 功能,可让您将所有方法请求限制为;

  • 每秒 X 个请求

我想找到一种方法来限制 每 Y 分钟 X 次请求的请求。

换句话说,并作为一个例子;

我希望我的方法每 5 分钟可访问一次。

我已经知道但不是选项的事情:

  • 我们可以通过基础设施做到这一点
  • 我们可以通过请求操作来做到这一点(添加自定义标头)
  • 我们可以使用使用计划,将 API 密钥放入其中并为其分配使用计划(没有意义)

所以,理想情况下 - 我们想要这样的东西:

有人有办法完成这样的事情吗?

还是一厢情愿,我需要在 AWS 上继续等待?

【问题讨论】:

  • 您的问题不是一个好主意,因为它引入了一个鲜为人知的标准,并且会让开发人员感到困惑,他们会假设您像其他人一样在几秒钟内工作。
  • 我不确定这不是一个好主意,特别是对于任何想要以不到一秒的时间(每秒 0.03 个请求)限制方法端点的人,或者理想情况下将时间更改为分钟(为了更具表现力的节流)。

标签: amazon-web-services aws-api-gateway


【解决方案1】:

我认为您可能需要在 API 网关上启用缓存并将 TTL 设置为 600(5 分钟)。然后,用户可以在给定的配额内多次访问您的 API,但他们实际上无法在 5 分钟内请求新数据,因为 TTL 需要先过期。这是假设您的方法是 GET 方法 - 如果不是,也许您可​​以将其更改为 GET?

如果这不符合您的需求,那么不幸的是,您需要将此逻辑推给您进行管理,正如您在问题中已经说明的那样。您想要做的事情实际上非常罕见,(我并不是说它无效)但是限制用户他们只能每 5 分钟发出一次请求是非常缓慢的,并且可能非常罕见。更常见的情况是,一个值可被许多请求访问,但仅使用 TTL 方法每隔几分钟更新一次。

请记住,限制的目的是保护您的服务免受过多负载或 DDos 攻击等。如果您的应用程序的某些部分具有工作流,其中的业务逻辑只需要用户最多每 5 分钟执行一次操作,这应该位于应用程序的工作流管理区域中,例如在 BPM - 业务流程管理器中,或者如果您想使用 AWS,您可以使用 SWF 或 Step Functions。原因是至少 IMO 不应将业务逻辑放入您的基础架构中。

【讨论】:

  • 好建议 - 我会试一试。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-06-30
  • 1970-01-01
  • 2013-12-13
  • 2019-05-20
  • 2021-04-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多