Aws lambda 使用Lambda授权器结果转换上游请求查询参数

Aws lambda 使用Lambda授权器结果转换上游请求查询参数,aws-lambda,aws-api-gateway,Aws Lambda,Aws Api Gateway,是否有一种标准的、受支持的方式,使用Lambda授权人确定的值转换发送到网关上游的请求URL? 在我的AWS API网关中,我的资源使用Lambda“authorizer”。授权者解密请求携带的身份验证令牌,并在向上游传递请求之前进行部分授权 我的目标是将解密的身份验证令牌附加到上游请求,最好作为请求参数,但如果必须,请求头也可以工作。我认为应该有一种方法来实现这一点,要么在我的资源的“方法请求”的授权者步骤中,要么在资源的“集成请求”步骤中 例如,本文档演示了如何将自定义参数附加到授权策略:

是否有一种标准的、受支持的方式,使用Lambda授权人确定的值转换发送到网关上游的请求URL?

在我的AWS API网关中,我的资源使用Lambda“authorizer”。授权者解密请求携带的身份验证令牌,并在向上游传递请求之前进行部分授权

我的目标是将解密的身份验证令牌附加到上游请求,最好作为请求参数,但如果必须,请求头也可以工作。我认为应该有一种方法来实现这一点,要么在我的资源的“方法请求”的授权者步骤中,要么在资源的“集成请求”步骤中

例如,本文档演示了如何将自定义参数附加到授权策略:

//具有字符串、数字或布尔类型的自定义属性的可选输出。
authResponse.context={
“stringKey”:“stringval”,
“numberKey”:123,
“布尔键”:正确
};
返回authResponse;
这似乎是授权人Lambda(网关资源的方法请求)和网关资源的集成请求的URL转换功能之间进行通信的完美接口,但是我还没有找到从“集成请求参数”访问授权人上下文数据的文档化方法.

似乎解决了转换请求有效负载的问题。如何访问动态请求参数的自定义身份验证响应上下文


在“集成请求”位置使用Lambda代理集成似乎是可能的,这将协调其自身转换的“传递”,但这似乎是网关体系结构内部的一种荒谬的改造

解决方案在文档中,它只需要一点外推

上的下表表明,上下文值可用于集成请求参数:

虽然非常特定于请求映射,但在
$context.authorizer.property
下:

上下文的指定键值对的字符串化值 从API网关自定义授权器Lambda函数返回的映射。 例如,如果授权人返回以下上下文映射:

“context”:{“key”:“value”,“numKey”:1,“boolKey”:true}

调用
$context.authorizer.key
返回“value”字符串,调用
$context.authorizer.numKey
返回“1”字符串,并调用
$context.authorizer.boolKey
返回“true”字符串

只需从authorizer响应上下文的自定义值中添加密钥的名称,如
context.authorizer.booleanKey
,与文档中的示例保持一致:

请记住,资源的“方法执行”接口中的“测试”功能不是此类配置的有效测试,因为方法请求授权程序不是从测试接口执行的。测试日志显示authorizer上下文变量不可用:

Mon Feb 05 14:54:37 UTC 2018:端点请求URI:http://v.x.y.z/ping?standard_context_var_ex=vxyz&test=1

为了进行测试,我必须部署API网关,跟踪我的访问日志并发出一个实时请求(满足授权人的要求)