【问题标题】:AWS API Gateway HTTP Request InterceptorAWS API Gateway HTTP 请求拦截器
【发布时间】:2019-09-12 12:59:54
【问题描述】:

我找不到任何有关拦截通过 AWS API Gateway 的所有 HTTP 请求的文档。

我正在尝试为部署在 AWS API Gateway 上的后端 API 提出日志记录服务。这个想法是所有的 HTTP 请求都将通过 API 网关。如果我能够拦截通过 API 网关的请求,我可以挂钩日志服务代码。

采用这种方法的原因是,日志记录代码将独立于实际的服务代码,并且服务代码不必更新以包含请求/响应的日志记录。

有什么解决办法吗?

【问题讨论】:

  • 我也有类似的要求。我构建了一个烧瓶应用程序并使用 zappa 部署到 APIG/lambda。这使我能够拦截所有请求并迁移到新服务。
  • @al76 有趣!有没有什么地方可以让我通过实现细节或您在执行此操作时引用的博客?

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


【解决方案1】:

您可以将 CloudFront 放在您的 API Gateway 前面,然后使用 Lambda@Edge Viewer Request 拦截所有请求;我们这样做是为了记录某些功能,它可以完美运行。

这是一个关于如何使用 CloudFront 设置 API 网关的好教程 https://aws.amazon.com/premiumsupport/knowledge-center/api-gateway-cloudfront-distribution/

【讨论】:

  • 这似乎是一个很好的解决方案。请注意教程中提到使用区域(非边缘优化)API 部署的步骤。当您在 API Gateway 前部署自己的 CloudFront 分配时,这会改善延迟 - 否则您会将每个请求循环进出 AWS 边缘网络两次,而不仅仅是一次。
  • 我们在 Lambda 上的 API 很少,在 VPC 内的 EC2 上运行的 API 也很少。对于 Lambda@Edge,无法使用 Amazon VPC;所以恐怕这对我不起作用!
  • 您在问题中没有提到这一点;你的问题是关于 API 网关的,并且拦截对 API 网关的请求,没有关于拦截对在其他地方运行的 API 的请求。
【解决方案2】:

看来 Claudia-bot-builder 的 intercept 方法将帮助您拦截 API 网关请求。您可以触发针对 API 网关的请求的事件。

          `api.intercept(function (event) { ... });`

【讨论】:

    猜你喜欢
    • 2021-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-18
    • 2017-02-28
    • 1970-01-01
    • 1970-01-01
    • 2023-03-18
    相关资源
    最近更新 更多