python - 为基于 Python 的编码设置用户速率限制(对于最终用户和我自己)(使用 AWS Cognito?)的简单方法是什么
问题描述
我正在将一项小型服务与 Amazon 的 API Gateway 和 Lambda 服务组合在一起。这项服务将对用户免费,但我想尝试限制用户提出过多的请求。理想情况下,我也想做某种基于 IP 的节流,但我的印象是基于 IP 的节流并不常见并且可能存在问题。
AWS Cognito 似乎可以与 API Gateway 一起用于此任务,但我不清楚是否有任何简单的方法可以让我启动并运行它(没有任何网络托管)以及让用户使用它(与 Python 的 requests 包之类的东西)。
最终,我想要一些相对简单的东西,如下所示:
r=requests.get(my_api_url,params=params,auth=(user_cognito_name, user_cognito_password))
或更可能是这样的:
user_jwt_token = <some_magic> #Not sure how to implement this
r=requests.get(my_api_url,params=params,auth=user_jwt_token)
从我所见,实现 Cognito 访问的 Python 库似乎相当复杂......
然后还有获取代币的问题。这篇文章描述了如何使用一堆 AWS lambda 函数来设置令牌维护:
https://medium.com/@houzier.saurav/aws-cognito-with-python-6a2867dd02c6
我认为这种方法的优点是您可以避免设置服务器,我也想这样做。然而,它似乎真的很复杂。
理想情况下,我想要一个 AWS 服务,如“AWS Cognito Manager”或“AWS Cognito Helper”,您可以在其中指定一些基本的 AWS cognito 信息,然后获得一个特定的 URL。然后任何人都可以访问该 URL 以获取令牌。我不确定令牌需要什么维护,但理想情况下,同一个网站——由 AWS 或我支付的某些公司管理——也可以处理维护问题(如果有的话)。或者,用于维护的简单 python 代码也可以。我要避免的是建立自己的网站或尝试拼凑大量 Lambda 调用或设置专门用于处理登录的 EC2 实例。
#Example of desired renewal code
renewed_token = magic_function(base_token,user_name,user_password)
请注意,在这一切之后,我的整个方法可能是错误的。也许我真的不需要 AWS Cognito,或者我只是以错误的方式思考问题。
解决方案
推荐阅读
- angular - 来自 Angular 输出的字符串连接发出,未按预期工作
- python - Run edited python script step by step / without reloading dataset
- azure-functions - 使用 Azure 函数及其协商函数连接到无服务器 Azure SignalR 服务
- excel - Excel VBA:循环行,然后引用该行中的单元格
- c# - 获取通过 Func 发送的匿名类型中定义的属性
- webpack - eslint-webpack-plugin 不会发出警告或错误
- python - CSV文件中的NULL,使用什么编码
- php - 如果主数据库唯一键不断变化,如何更新两个数据库?
- r - 保留从转换过程中删除的行
- android - 在华为 mapkit 中获取我的位置按钮的参考