我有一个API网关,其中包含由Cognito支持的授权者。我有一个由Lambda(用Java实现)支持的端点,该端点需要用户的唯一标识符。
当我通过API网关UI测试该功能时,Lambda会在APIGatewayProxyRequestEvent.getRequestContext().getIdentity()
中接收用户信息。当我从Java客户端从外部调用该函数时,此信息丢失。
有人知道有什么区别吗?我如何将用户的信息传递给Lambda?
我尝试使用在用户信息之间复制的正文映射模板,而不是使用Lambda代理集成。我也尝试过从接受ID令牌转换为访问令牌。这些行为均如上所述。
答案 0 :(得分:0)
在this AWS forum thread和this serverless forum post中找到了答案。
用户的标识符包含在requestContext.authorizer.claims.sub
中,而Java对象模型ProxyRequestContext
中没有包含该标识符。
我仍然不清楚为什么identity
对象总是(大部分)为空