问题
当有人通过在 dynamodb 表中创建条目的联合身份注册时,我触发了一个 lambda 函数。
我希望当用户通过关联的用户池注册(我正在考虑发布确认)时发生相同的功能(或类似功能)。
背景(我尝试过的)
我已将联合身份链接到用户池,但链接到 Cognito 触发器的 lambda 不会被用户池调用。我认为它可能不支持相同的流程(是这种情况吗?)并尝试将自定义工作流触发器添加到用户池以进行后期确认。尽管用户在 Cognito 中显示为已确认,但我只是收到一条错误消息(错误请求 400),说明“{“__type”:“NotAuthorizedException”,“消息”:“用户无法确认。”}。
我查看了文档,但没有看到很多清晰的示例。我发现最好的是一封邮件确认邮件,我对其进行了修改以包含一个基本的发电机调用,如下所示:
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);
}
};
我查看了类似的问题,我发现最接近的是这个 先前的问题 ,尽管它不包含工作代码片段。我尝试了一些变化,但没有运气!
正如那里所说,我还看到了其他示例中使用的回调,因此最好弄清楚首选和工作代码应该是什么样子!
我还想知道它是否应该在 context.done 中以特定格式返回数据,因为我看到了一些设置响应,如下所示:
"response": {
}
非常感谢!