你能用$ context(AWS API GATEWAY)静态设置一个Header值吗?

时间:2016-02-16 16:50:40

标签: amazon-web-services amazon-iam aws-api-gateway

我想在点击我的http端点之前从AWS_IAM auth获取调用者用户。

我试图在请求体中传递$ context.identity,在集成请求中添加映射模板,但我的http端点是一个GET请求,我得到一个空的请求体。

我需要知道我的哪个用户正在发出请求

可能将$ context.identity.cognitoIdentityId作为请求标头传递即可。

2 个答案:

答案 0 :(得分:0)

不幸的是,$ context变量当前不在请求标头中,仅在映射模板中有效。我们有一个功能请求,以便将来添加此功能,但尚未确定交付日期。

使用$ context.identity.cognitoIdentityId可以在映射模板中工作,但正如您所指出的,API Gateway不会将请求主体发送到后端端点以获取GET请求。

作为临时解决方法,您是否可以将后端端点更改为使用POST或PUT?

然后你可以通过 我对主体的映射模板中的$ context.identity.cognitoIdentityId感到惊讶。

答案 1 :(得分:0)

在此问题得到修复之前的另一个解决方法是使用Lambda作为另一个代理。您可以使用映射模板将$context.identity.cognitoIdentityId发送到Lambda函数。然后,该函数将请求转发到您的http端点,并在标头中使用相关的上下文字段而不是正文。这样您就不必更改API(您可以继续使用GET等)。

我发布了more details and an example of a generic function here。希望它有所帮助。