我想在点击我的http端点之前从AWS_IAM auth获取调用者用户。
我试图在请求体中传递$ context.identity,在集成请求中添加映射模板,但我的http端点是一个GET请求,我得到一个空的请求体。
我需要知道我的哪个用户正在发出请求
可能将$ context.identity.cognitoIdentityId作为请求标头传递即可。
答案 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。希望它有所帮助。