AWS Cognito User pool을 DynamoDB에 저장하기
0. 들어가기
Cognito user pool은 사용자 정보를 담고 있는 디렉터리이다. 이 정보를 DB로 Export하는 기능은 없고, 회원가입 시에 Post confirm lambda를 트리거해서 Lambda에서 user 정보를 DB에 저장하도록 구현했다.
Cognito user pool의 Lambda에 대해서는 공식 문서를 참조.
1. Create User pool
User Pool은 이미 만들어져 있고, 속성은 아래와 같다.
사용자 ID, Email, name, sub로 구성되어 있다.
2. Create DynamoDB Table
사용자 ID를 파티션 키로 사용하는 테이블 생성.
모든 설정은 기본으로 사용했고, 파티션 키를 ID, 타입은 String으로 설정하고 생성했다.
3. Create Lambda
DB에 저장하는 Lambda를 작성. Lambda 콘솔에서 AddUserFunc이라는 람다를 만들고, 아래의 코드를 작성했다.
index.js
var aws = require('aws-sdk');
var ddb = new aws.DynamoDB({apiVersion: '2012-10-08'});
exports.handler = async (event, context) => {
console.log(event);
let date = new Date();
// If the required parameters are present, proceed
if (event.request.userAttributes.sub) {
// -- Write data to DDB
let ddbParams = {
Item: {
'id': {"S": event.request.userAttributes.sub},
'__typename': {"S": 'User'},
'username': {"S": event.userName},
'name': {"S": event.request.userAttributes.name},
'email': {"S": event.request.userAttributes.email}
},
TableName: "sampleUserPoolTbl"
};
// Call DynamoDB
try {
await ddb.putItem(ddbParams).promise()
console.log("Success");
} catch (err) {
console.log("Error", err);
}
console.log("Success: Everything executed correctly");
context.done(null, event);
} else {
// Nothing to do, the user's email ID is unknown
console.log("Error: Nothing was written to DDB or SQS");
context.done(null, event);
}
};
4. Post confirm Lambda
사용자 풀 속성에서 Post confirm Lambda 트리거를 추가함.
5. Test
Sign up
구현 해둔 react 앱에서 회원가입.
user pool에는 당연히 사용자가 생성되었고, DB를 확인해보면 사용자 정보가 잘 저장된 것을 확인할 수 있다.
참조
https://velog.io/@seunghwa17/Cognito-User-Pool-정보-DynamoDB에-저장하기
Author And Source
이 문제에 관하여(AWS Cognito User pool을 DynamoDB에 저장하기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@dlruddms5619/AWS-Cognito-User-pool을-DynamoDB에-저장하기저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)