質問
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": {
}
どうもありがとう!