微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 AWS Lambda 代理集成中从请求路径中剥离资源

如何解决在 AWS Lambda 代理集成中从请求路径中剥离资源

我有一个通过 terraform 部署的 lambda 函数和 API 网关。 API 网关在顶级根资源 / 下有多个资源,例如 /first/second/first 的资源是使用 lambda 代理集成(ANY/first 以及 ANY 上的 /first/{proxy+})设置的。 /second 资源指向不同的集成。

我的 lambda 是一个带有 Lambda 自定义运行时的 ASP.NET Core 3.1,最初使用 dotnet new serverless.AspNetCore30WebApi 生成,但后来在向 AWS 添加支持后更新为 3.1。

我的问题是,当 lambda 代理集成转换要发送到 lambda 函数的请求时,它包含完整的资源名称(即 /first/Product 而不仅仅是 /Product)。由于我在 lambda 函数中的 REST API 只知道产品并且不知道首先是什么,因此对于通过 API 网关转发的任何内容,我都会得到 404 结果。在将资源名称转发到 lambda 函数之前,我似乎找不到从路径中删除资源名称的地方,因为使用 lambda 代理集成,您似乎没有机会执行任何请求映射模板或替换。

Thu Jun 03 12:24:52 UTC 2021 : HTTP Method: GET,Resource Path: /first/Product
Thu Jun 03 12:24:52 UTC 2021 : Method request path: {proxy=Product}
Thu Jun 03 12:24:52 UTC 2021 : Method request query string: {}
Thu Jun 03 12:24:52 UTC 2021 : Method request headers: {}
...
Thu Jun 03 12:24:52 UTC 2021 : Endpoint request body after transformations: <<relevant snippet parts formatted below>>

{
    "resource": "/first/{proxy+}","path": "/first/Product","httpMethod": "GET","pathParameters": {
        "proxy": "Product"
    },"requestContext": {
        "resourcePath": "/first/{proxy+}","path": "/first/{proxy+}","protocol": "HTTP/1.1"
    }
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。