【发布时间】:2019-06-02 04:02:37
【问题描述】:
我正在尝试使用 SDK 从我的 Lambda 函数对我的 Cognito 用户池执行管理员操作,但我无法弄清楚如何正确地以管理员身份进行身份验证。理想情况下,我只想执行我的函数已经在使用的执行角色,但我还没有设法完成这项工作,并且不确定它是否可能。如果可能的话,我需要做什么才能使其工作?如果不可能,实现这一目标的正确方法是什么?是否必须在用户池中创建管理员用户,然后使用用户名和密码进行身份验证?
编辑:我已经用下面的代码实现了马特的建议,但我只是从 Cognito 得到一个空对象(实际上只是 {} 出现在日志中),我不知道为什么。通过阅读documentation,我应该得到数据或错误。更新正在进行,所以我知道它正在工作,我只是希望得到确认,有人知道我是否应该得到一些东西吗?
let cogUser;
const params = {
UserAttributes: [{
Name: "email",
Value: args.input.email
}],
UserPoolId: context.userpool_id,
Username: context.user
};
log.debug('Cog user params: ', params);
try {
cogUser = await context.conns.cognito.adminUpdateUserAttributes(params).promise();
} catch(err) {
log.error('Coguser threw error: ', err);
}
log.debug('Coguser return: ', cogUser);
编辑 2:尝试使用回调而不是承诺。
context.conns.cognito.adminUpdateUserAttributes(params, function(err, data) {
if (err) {
console.log(err)
} else {
cogUser = data;
}
});
【问题讨论】:
标签: javascript amazon-web-services aws-sdk amazon-cognito amazon-iam