0

问题

当有人通过在 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": {
}

非常感谢!

4

1 回答 1

0

对已确认的用户调用 ConfirmSignUp 会引发错误“用户无法确认”。由于该后确认 lambda 函数没有被调用。尽管此错误可能更具描述性。

您是否已经从文档中查看过这个示例? http://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-identity-pools-working-with-aws-lambda-triggers.html#aws-lambda-triggers-post-confirmation-example

于 2017-01-06T21:25:00.407 回答