我正在使用AWS Amplify创建一个Lambda函数、RESTAPI和Cognito用户池。我想检索向endpoint发出请求的Cognito用户,以便访问他们的用户属性。
我为函数选择了无服务器Express模板:
app.js
app.post('/do-something', async (req, res) => {
// The user pool ID is available as an environment variable.
// I want to get the user and use their user attributes here.
});
客户端配置根据当前用户的令牌设置授权头:
应用程序。js
Amplify.configure({
API: {
endpoints: [
{
name: "sampleCloudApi",
endpoint: "https://xyz.execute-api.us-east-1.amazonaws.com/Development",
custom_header: async () => {
return { Authorization: `Bearer ${(await Auth.currentSession()).getIdToken().getJwtToken()}` }
}
}
]
}
});
事件(req.apiGateway.event
)或上下文是否保存用户信息?或者我可以以某种方式使用授权标头吗?
另外,在Lambda函数中进行Cognito调用会是什么样子?这是否需要使用管理API?
谢谢
您可以使用context通过Lambda上下文对象获取用户的联邦标识ID。身份cognitoIdentityId
,但这只是与Cognito标识池中的用户关联的ID,而不是Cognito用户池。
我所看到的在Lambda中获取用户池属性的最佳方法是使用自定义授权程序,传入由SDK在客户端生成的JWT令牌,并在服务器端解码。授权用户并解码JWT令牌后,您的Lambda将能够访问context.authorizer.claims
中的用户池属性。这里有一篇文章穿过定制授权程序:https://aws.amazon.com/blogs/mobile/integrating-amazon-cognito-user-pools-with-api-gateway/
我有一个Lambda函数来处理由API网关触发的POST请求。后者设置为通过Cognito用户池授权器进行授权。授权有效-如果我传递了一个用户的ID令牌,请求就会被处理,如果我不传递,我就会得到一个401。 但是,我无法在Lambda函数中获取授权用户的身份。所有的文档都让我相信它应该在上下文中,但它不是。我也无法将它映射到上下文中。此外,似乎也没有一种方法可以查询给定ID令牌的用户的用户池。 我
我正在使用AWS Congito用户池进行帐户管理,其中Cognoto标识池将此用户池作为标识提供者。我用它来控制通过API网关对API的访问,API网关向Lambda发送请求。我的Lambda是使用Micronaut用Java8实现的。所有这些都很好。 在Lambda中,我从中的获得名称: 在Cognito标识符的字符串名称中返回的是什么。像这样的东西: us-east-1:xxxxe650-5
我想从AWS IAM获取用户详细信息,因此我创建了一个lambda函数,但响应代码502有一个错误。我的代码如下。
我正在使用AWS Lambda+API网关+无服务器(Python)。太神奇了!
问题内容: 我有一个如下所示的span标签,单击该标签会在控制器中调用一个函数。 HTML 控制者 我需要在控制器功能的data属性中获取值。我尝试使用此关键字和$ event; 没人工作。 请帮忙。 问题答案: 尝试将其直接传递给ng-click函数: 然后它应该在您的处理程序中可用: 这是一个例子
一旦用户登录到Cognito,我希望使用lambda函数获取与该用户关联的当前角色。 似乎Cognito用户池或身份池将用于移动应用程序,而前端开发人员? 正确的做法是什么?代码示例总是很好,但我更喜欢寻找逻辑解决方案或文档链接。 我尝试了亚马逊认知身份(这不是我要找的),并阅读了所有(?)留档这件事,但我不能在这里连接点...