我有一个 rust lambda 来处理从 dynamo DB 获取数据。
当 API Gateway 将代理信息传递到 lambda 时会出现问题,它还在 URL 中包含 stage。例如,这里是 aws-rust-runtime 箱给出的 api_gateway 示例 json,其中包括
stage
= testStage
.
这意味着路由现在必须在路由开头包含
testStage
,否则什么都不会匹配。这个:
pub fn get_router() -> axum::Router {
Router::new()
.route("/messages/message/:message_id", get(get_message))
.route("/messages/message", post(create_message))
...
}
现在必须是
pub fn get_router() -> axum::Router {
Router::new()
.route("/testStage/messages/message/:message_id", get(get_message))
.route("/testStage/messages/message", post(create_message))
...
}
在不同阶段和不同环境中使用 IaaC 部署此功能时,这是令人烦恼和有问题的。
有没有办法处理这个问题或者将其从API网关的路由中删除?
我认为可能有一种方法可以告诉 Axum 仅关注来自网关的有效负载的某些部分,但默认情况下,axum 正在获取整个 uri,如该跟踪所示
{method=GET uri=https://gy415nuibc.execute-api.us-east-2.amazonaws.com/testStage/messages/message/okay
我认为最合适的方法是通过 AWS 控制台。您可以在自定义域名部分配置您的 API 映射,并将您的阶段
testStage
添加到您的 API GTW;这样,您的舞台将被AWS GTW“吸收”,并且登陆您的应用程序的路径是/messages...
NB:我仍在寻找我最近遇到的关于此的
repost.aws
..