【发布时间】:2022-12-09 17:02:58
【问题描述】:
简而言之,我想将信息从我的自定义 Lambda 授权方传递到后端。我有一个带有代理集成 lambda 作为后端的 rest API GW。自定义授权方的返回对象看起来像下面的 json。在这种情况下,我想将 var1 和 var2 传递给代理 lambda。
{
"principalId": "ExecuteAPISid",
"policyDocument": {
"Version": "2012-10-17",
"Statement": [{
"Action": "execute-api:Invoke",
"Effect": "Allow",
"Resource": "*"
}]
},
"context": {
"var1": "hello_world",
"var2": "hello_world2"
}
}
我看到这个问题之前已经被问过和回答过,但是建议的解决方案,例如 here,指的是 AWS API 网关菜单中集成请求下的“标头映射”。然而,对我来说,我没有这样的选择。因此,我知道我想做什么,但缺乏实现它的能力。
有没有人知道如何实现这些标头映射?完成设置如下图所示。
编辑:进一步挖掘后发现问题与我使用 lambda-proxy 集成有关。 This answer 强调了这一点。但是,这只是将我的问题转移到:为什么我的 requestContext 不包含 authorizer 对象。
【问题讨论】:
-
配置的集成请求类型是 LAMBDA 还是 LAMBDA_PROXY?如果它是 lambda 代理,那么您不需要映射请求的标头,它会自动连接 - “请求将被代理到 Lambda,请求详细信息在您的处理函数的
event中可用。” -
它是一个 lambda 代理。用截图更新了问题。
-
- 在您的 lambda 函数中尝试输出事件对象并查看标头和上下文值是否已经存在。
-
我确实记录了整个事件对象,但没有任何痕迹。这就是我希望在线阅读的内容,这就是为什么需要标头映射的全部原因。
-
您是否在方法请求中定义了请求标头/请求主体,这些值是否已正确发送?
标签: amazon-web-services aws-lambda amazon-api-gateway