【问题标题】:Versioning using base path mappings in AWS API Gateway在 AWS API Gateway 中使用基本路径映射进行版本控制
【发布时间】:2018-08-14 06:39:35
【问题描述】:

我有一个非常简单的堆栈:位于 lambda 前面的 API 网关。目前我的路径看起来像: /dogs/dogs/{id}

我要做的就是在基本路径中添加一个版本(即api.dogs.com/v1/dogs)。我尝试通过使用 v1 的基本路径映射创建一个自定义域名来执行此操作,该映射指向我在 API Gateway 中的阶段。

这通过 API Gateway 路由很好,但一旦遇到我的 lambda 中的路由逻辑就会出现问题。我的 lambda 期待 /dogs,但使用基本路径映射,路径实际上是 v1/dogs

有什么好的方法来解决这个问题?如果可能的话,我想避免直接在我的代码 (lambda) 中处理版本。

【问题讨论】:

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


    【解决方案1】:

    在您的 lambda 函数接收的 event 对象中,您实际上应该找到所有需要的信息,无论是否有版本控制:

    event = {
      "resource": "/hi",
      "path": "/v1/hi",
      "requestContext": {   
        "resourcePath": "/hi",
        "path": "/v1/hi",
        ....
      },
      ....
    }
    

    只需调整路由器逻辑中的代码以访问所需的属性即可解决您的问题,并且无需再次关注代码中的版本控制。

    【讨论】:

    • 说得对。我想对我来说挑战在于我正在使用的框架 (github.com/gin-gonic/gin),它必须基于路径而不是资源进行路由。我得看看有没有办法做到这一点。
    • 原来在 aws-lambda-go-api-proxy 中有一个函数用于这个确切的用例 (StripBasePath)。
    猜你喜欢
    • 2016-12-23
    • 2017-06-25
    • 2020-10-08
    • 2018-02-02
    • 1970-01-01
    • 2021-12-30
    • 1970-01-01
    • 1970-01-01
    • 2020-11-26
    相关资源
    最近更新 更多