如何解决在 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 举报,一经查实,本站将立刻删除。