Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services AWS API网关-基于分钟而非秒的节流请求。_Amazon Web Services_Aws Api Gateway - Fatal编程技术网

Amazon web services AWS API网关-基于分钟而非秒的节流请求。

Amazon web services AWS API网关-基于分钟而非秒的节流请求。,amazon-web-services,aws-api-gateway,Amazon Web Services,Aws Api Gateway,我想知道是否有人设法回避了这个问题 我可以确认,AWS已经确认,这目前不是一项功能,不太可能出现在任何近期的路线图上 AWS API网关具有当前的方法限制功能,允许您根据需要限制所有方法请求 每秒X个请求 我想找到一种方法来限制每Y分钟X个请求的请求 换言之,并以此为榜样 我希望我的方法可以每5分钟访问一次 我已经意识到但不可选择的事情: 我们可以通过基础设施做到这一点 我们可以通过请求操作(添加自定义头)实现这一点 我们可以使用一个使用计划,将API键放入其中,并将使用计划分配给它(

我想知道是否有人设法回避了这个问题

  • 我可以确认,AWS已经确认,这目前不是一项功能,不太可能出现在任何近期的路线图上
AWS API网关具有当前的
方法限制
功能,允许您根据需要限制所有方法请求

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

换言之,并以此为榜样

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

我已经意识到但不可选择的事情:

  • 我们可以通过基础设施做到这一点
  • 我们可以通过请求操作(添加自定义头)实现这一点
  • 我们可以使用一个使用计划,将API键放入其中,并将使用计划分配给它(没有意义)
因此,理想情况下,我们希望这样:

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


或者这是一厢情愿的想法,还是我需要继续等待的东西

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

如果这不符合您的需要,您将不幸地需要将此逻辑推给您来管理,正如您在问题中所述。实际上,您希望做的事情非常罕见(我并不是说这是无效的),但限制用户每5分钟只能发出一次请求的速度非常慢,而且可能非常罕见。更常见的情况是,对于许多请求都有一个可访问的值,但使用TTL方法仅每隔几分钟更新一次


请记住,节流的目的是保护您的服务免受过多负载或DDos攻击等。如果您的应用程序的某些部分具有工作流,其中其业务逻辑为要求用户最多每5分钟执行一次操作,则应将其放在您的应用程序的工作流管理区域中应用程序,例如在BPM-business process manager中,或者如果您想使用AWS,则可以使用SWF或Step函数。原因是,至少在我看来,业务逻辑不应该放在您的基础架构中。

这不是一个好主意,因为它引入了一个不太知名的标准,并且会让开发人员感到困惑,他们会认为您和其他人一样在几秒钟内工作。我不确定这不是一个好主意,特别是对于那些希望在不到1秒的时间内(每秒0.03个请求)限制方法终结点的人,或者理想情况下,如前所述,将时间更改为min(以获得更具表现力的限制)。很好的建议-我将尝试一下。