问题
当有人通过在dynamodb表中创建条目的联合身份进行注册时,我触发了lambda函数。
当用户通过关联的用户池注册(我正在考虑发布确认)时,我希望发生相同的功能(或类似功能)。
背景(我尝试过的)
我已将联合身份链接到用户池,但是不会为用户池调用链接到Cognito触发器的lambda。我认为它可能不支持相同的过程(是这种情况吗?)并尝试将自定义的工作流触发器添加到用户池以进行后确认。我只是收到一个错误(错误的请求400),说明' {" __ type":" NotAuthorizedException"," message":"用户不能确认"}'虽然用户在Cognito中显示已确认。
我查看了文档,但我没有看到很多明显的例子。我找到的最好的是一封邮件确认邮件,我修改后包含一个基本的发电机调用如下:
var doc = require('dynamodb-doc');
exports.handler = function(event, context) {
console.log(event);
if (event.request.userAttributes.email) {
var db = new doc.DynamoDB();
var tableName = 'Users'
var user = {
'id' : event.identityId,
'name' : event.datasetRecords.name.newValue,
'email' : event.datasetRecords.email.newValue,
};
var params = {
'TableName' : tableName,
'Item' : user
};
console.log('Inserting user', params);
db.putItem(params, function(err, data) {
console.log(err, data);
if (err) {
console.log('User insert failure', err);
context.done(err);
} else {
console.log('User insert success', data);
context.done(null, event);
}
});
} else {
// Nothing to do, the user's email ID is unknown
context.done(null, event);
}
};
我看过类似的问题,最近我发现了这个问题 previous question 虽然它不包含工作代码段。我尝试了一些变化,但没有运气!
如上所述,我还看到其他示例中使用了回调,因此最好清楚首选和工作代码应该是什么样的!
我还想知道它是否应该以特定格式返回context.done中的数据,因为我看到了一些set responses,如下所示:
"response": {
}
非常感谢!
答案 0 :(得分:0)
在已确认的用户上调用ConfirmSignUp会引发错误“用户无法确认”。由于该post确认lambda函数未被调用。虽然这个错误可能更具描述性。