如何在 AWS 上跟踪用户对我的外部 API 的请求?

如何在 AWS 上跟踪用户对我的外部 API 的请求?

我是一个初学者,但我正在使用 AWS SAM(使用 API 网关和 Lambda)创建外部 API,并且我想要一种方法来跟踪和监控使用情况。

我正在考虑的一些选择:

1. 将请求存储在数据库中

优点:它可以让我存储尽可能多的有关请求的信息
缺点:我认为这可能太慢,无法处理大量快速请求

2. 统计用户使用 Redis 发出请求的频率——但我还想了解更多有关他们发出的请求的信息

优点:我可以快速计算用户请求数
缺点:user-id如果我的键值对是:这可能会限制我可以存储的有关用户的信息量:number-of-requests

3. 使用消息队列

优点:我可以将请求信息放入消息队列,并让另一个 Lambda 函数将其放入数据库,而不会减慢我的 API 的响应时间 缺点:这可能太复杂了?而且我可能仍然会遇到与选项 1 相同的问题,即我会同时进行大量小额交易。

您能建议一种方法或者批评上述任何选项吗?

感谢您的帮助!

答案1

API Gateway 包含一些到 Cloudwatch Logs 的请求日志记录,文档如下这里。如果您想记录更多信息,我个人会在 lambda 中收集它,并将其推送到专用 Cloudwatch Logs 组中的访问日志。但要小心,因为对于繁忙的网站来说,Cloudwatch Logs 的带宽和存储成本可能会增加。

否则关于你的选择

  1. DynamoDB 速度足够快。MySQL 数据库的性能可能也不错,处理时间可能增加不到一毫秒。
  2. 功能并不齐全
  3. 这样做效果很好,但我只会在 #1 太慢时才这么做。将消息推送到队列然后让另一个进程使用它并不复杂。

相关内容