gpt4 book ai didi

javascript - 使用 Lambda IAM Angular 色以管理员身份对 Cognito 进行身份验证

转载 作者:行者123 更新时间:2023-11-30 19:55:13 25 4
gpt4 key购买 nike

我正在尝试使用 SDK 从我的 Lambda 函数对我的 Cognito 用户池执行管理操作,但我不知道如何正确地以管理员身份进行身份验证。理想情况下,我只想执行我的函数已经在使用的 Angular 色,但我还没有设法让它工作,而且不确定它是否可能。如果可能的话,我需要做什么才能让它发挥作用?如果不可能,实现这一目标的正确方法是什么?我是否必须在用户池中创建管理员用户,然后使用用户名和密码进行身份验证?

编辑:我已经用下面的代码实现了 Matt 的建议,但我只是从 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:尝试使用回调而不是 promise 。

context.conns.cognito.adminUpdateUserAttributes(params, function(err, data) {
if (err) {
console.log(err)
} else {
cogUser = data;
}
});

最佳答案

如果您想使用已经绑定(bind)到 Lambda 函数的 IAM Angular 色,您只需在 AWS 控制台中编辑 Angular 色并为 Angular 色添加适当的策略(取决于您想要完成的任务)。

例如,您可以将预配置的“AmazonCognitoPowerUser”策略添加到 Angular 色(见下文):

{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"cognito-identity:*",
"cognito-idp:*",
"cognito-sync:*",
"iam:ListRoles",
"iam:ListOpenIdConnectProviders",
"sns:ListPlatformApplications"
],
"Resource": "*"
}
]
}

或者更好的是,将您的 lambda 函数所需的特定资源所需的特定策略规则添加为新策略。

执行此操作后,您可以直接调用 Cognito Admin API(参见下面的示例):

exports.handler = (event, context, callback) => {
var AWS = require('aws-sdk');
var CognitoIdentityServiceProvider = new AWS.CognitoIdentityServiceProvider({apiVersion: '2016-04-18'});

var params = {
UserAttributes: [{
Name: `custom:${event.attribute}`,
Value: event.value
}],
UserPoolId: 'us-east-1_example',
Username: event.username
}

CognitoIdentityServiceProvider.adminUpdateUserAttributes(params, function(err, data) {
if (err) { console.log(err) }
context.done(null, data);
});
};

关于javascript - 使用 Lambda IAM Angular 色以管理员身份对 Cognito 进行身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54075245/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com