0

質問

dynamodb テーブルにエントリを作成するフェデレーション ID を介して誰かが登録すると、ラムダ関数がトリガーされます。

関連するユーザープールを介してユーザーが登録するとき(ポスト確認を考えていたとき)に同じ機能(または同様の機能)が発生するようにします。

背景(私が試みたこと)

フェデレーション ID をユーザー プールにリンクしましたが、Cognito トリガーにリンクされたラムダがユーザー プールに対して呼び出されません。同じプロセスをサポートしていない可能性があると思い (これは本当ですか?)、カスタマイズされたワークフロー トリガーをポスト確認用のユーザー プールに追加してみました。ユーザーが Cognito で確認済みとして表示されているにもかかわらず、「{"__type":"NotAuthorizedException","message":"User cannot confirm."}」というエラーが返されます (bad request 400)。

ドキュメントを見てきましたが、明確な例はあまりありません。私が見つけた最高のものは、次のように基本的な dynamo 呼び出しを含むように変更した投稿確認のメールです。

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 を呼び出すと、「ユーザーは確認できません」というエラーがスローされます。その結果、確認後のラムダ関数は呼び出されません。このエラーはもっとわかりやすいかもしれませんが。

ドキュメントからこの例をすでに見ましたか? 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 に答える