AWS API Gateway-根据分钟而非秒来限制请求。

时间:2018-09-17 06:03:39

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

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

  • 我可以确认AWS已经确认当前没有此功能,并且不太可能出现在未来的任何路线图中。

AWS API网关具有当前的Method Throttling功能,可让您按以下方式限制所有方法请求;

  • 每秒X个请求

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

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

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

我已经知道的事情,不是一种选择:

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

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

enter image description here

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

这是否是一厢情愿的事情,我需要继续等待AWS?

1 个答案:

答案 0 :(得分:2)

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

如果这不适合您的需求,那么您很可能需要按照您在问题中已经陈述的那样,将此逻辑推给您进行管理。实际上,您要执行的操作非常罕见(我并不是说这是无效的),但是限制用户只能每5分钟发出一次请求非常缓慢,并且可能非常罕见。具有许多请求可访问的值,但使用TTL方法仅每隔几分钟更新一次的值会更常见。

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