【问题标题】:AWS API Gateway - log bad requests?AWS API Gateway - 记录错误请求?
【发布时间】:2017-12-09 06:04:18
【问题描述】:

我为我的 api(API 网关和 Lambda)设置了日志记录。 API Gateway 在哪里记录 Apache 类型的 HTTPS 连接日志?我想看看没有映射到我的 API 的终点是什么。例如,我的 api 是 domain.com/api/v1/resource,如果客户端尝试访问 domain.com/api/v1/some_invalid_resource,我该如何记录? API Gateway 还可以防止 API 滥用(请参阅https://aws.amazon.com/api-gateway/faqs/),如果我没有连接级别日志,我如何知道我的 API 是否受到攻击?

【问题讨论】:

  • 我不确定 API Gateway 是否真的对根本上无效的请求收费。
  • 这也是一个很好的问题,我们目前并不关心这个问题。我们假设我们不收费,否则会有一个指标/日志,到目前为止,没有人显示在任何论坛或搜索中可以看到它们的位置。我也会在 AWS 论坛上发帖。
  • 哇,这个评论根本没有说明我的意图:我不确定 API Gateway 是否会捕获根本无效请求的日志,这些请求不会将其引导至有效资源。这些请求是否收费是事后才想到的。我去谷歌搜索它,然后回来并彻底扼杀了评论。
  • 谢谢 - 它在哪里记录这些无效请求?没有关于主题的博客,AWS Cloudwatch 中没有任何内容。在 CloudWatch 中可以正常访问我们的 API。例如,如果我 curl 到正确的域,但 API 无效,则不会记录任何内容。

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


【解决方案1】:

当您为 API Gateway 配置日志记录时,请确保您设置了写入日志的角色以允许将其写入 cloudwatch。

您可以在 cloudwatch 下看到它们,如下所示,

API-Gateway-Execution-Logs_(APIID)/{stage}

【讨论】:

  • 不,如果我的 lambda 函数匹配,我的所有设置都很好,并且日志会进入。我想要的是访问日志,比如 Apache 或 Tomcat 让我知道什么样的流量正在到达我的端点,这样我就可以管理客户端错误、DOS 等。如果客户端不正确地到达端点并且它没有,我不会得到日志t 映射到有效的 API,即使 API 网关域是正确的。
【解决方案2】:

这是来自 AWS 的官方回答:

很遗憾,API Gateway 不为客户提供访问日志。我将在 API Gateway 端创建一个功能请求,API Gateway 会考虑优先考虑此请求,但我无法为此提供 ETA。作为解决方法,您可以创建一个具有与其他资源相同级别的模拟集成的代理资源,并且您将能够看到访问错误资源的请求的日志。

https://forums.aws.amazon.com/thread.jspa?messageID=805138&#805138

【讨论】:

    【解决方案3】:

    您现在可以在 API 网关的某个阶段启用访问日志记录。 (请参阅此处的页面底部:http://docs.aws.amazon.com/apigateway/latest/developerguide/set-up-logging.html)在我的测试中,它仅记录有效请求的正确 IP 地址、请求时间和资源路径。它记录了对无效请求的尝试访问,但没有获取 IP、requestTime(无论如何您都可以从日志条目时间中获取)或尝试的路径。

    我想启用此功能以查看是否有人试图探测我的 API 以查找攻击向量,到目前为止,它并没有太大帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-12-13
      • 2021-05-18
      • 1970-01-01
      • 1970-01-01
      • 2020-11-18
      • 2019-09-12
      • 2021-03-30
      • 1970-01-01
      相关资源
      最近更新 更多