Amazon web services 限制访问URL的用户数

Amazon web services 限制访问URL的用户数,amazon-web-services,amazon-eks,amazon-ecr,aws-application-load-balancer,Amazon Web Services,Amazon Eks,Amazon Ecr,Aws Application Load Balancer,有没有办法限制使用AWS访问网站url的用户数量。WAF检查IP地址并在其超过速率限制时阻止它 我需要它从任何IP,如果完全超过了速率限制,它应该重定向到自定义页面,说限制已经超过 从api网关进行速率限制似乎是更好的方法,但是,主页不调用任何api。因此,它只能通过url进行管理。据我所知,不是本地的。我的理解是,您希望对访问特定URL的频率有一个全局限制 你可以用一个Lambda@EdgeCloudFront中的函数,后端有DynamoDB表 Lambda函数在每次请求时都会被调用 如果应该

有没有办法限制使用AWS访问网站url的用户数量。WAF检查IP地址并在其超过速率限制时阻止它

我需要它从任何IP,如果完全超过了速率限制,它应该重定向到自定义页面,说限制已经超过


从api网关进行速率限制似乎是更好的方法,但是,主页不调用任何api。因此,它只能通过url进行管理。

据我所知,不是本地的。我的理解是,您希望对访问特定URL的频率有一个全局限制

你可以用一个Lambda@EdgeCloudFront中的函数,后端有DynamoDB表

Lambda函数在每次请求时都会被调用

如果应该限制的是URL,它会有条件地调用DynamoDB
UpdateItem
,并在计数器不大于X的条件下尝试将计数器增加1,其中X是URL的最大限制

如果
UpdateItem
成功,您可以将请求传递给源站。 如果调用失败,您知道已超过限制,可以进行重定向

通过这种方式,您可以使用DynamoDB作为中央计数器,它应该足够快,并且可以很好地扩展。
一旦超过限制,您可以将其缓存在Lambda@Edge函数以避免发出过多请求。

您可以在应用程序前面使用Nginx。他们的利率限制非常灵活。您可以将速率限制键设置为URL,然后它将全局地位于该URL上,而不是每个IP地址:尝试过,但不太稳定。我还使用EKS及其无状态。在这种情况下,存储请求细节的nginx内存共享是不可能的,因为我使用的是docker容器和podsGood idea。谢谢若AWS并没有直截了当的可能性,那个么我想,以编程的方式做是更好的方法。