Nodejs 환경 기준으로 작성하지만, 혹여 다른 환경일지라도 아마존 코그니토 사용자 풀을 처음 써보려는 사람에게는 이 글이 분명 도움될 것이라 생각한다. 처음부터 끝까지 세세한 설명보다는, 길어보이지만 짧은 이 글을 읽고 나면 스스로 코그니토 API 를 찾고 사용하여 개발할 수 있게끔 설명하는 것이 목적이다. 생각보다 자세하거나 쉽게 설명한 글이 보이지 않아서 직접 알아보고 시행 착오를 겪으며 시작이 오래 걸렸지만, 이 글을 읽는 누군가는 금방 시작할 수 있다거나, 한줄기 희망으로 느껴졌으면 한다.
사용자 풀 정보 확인 - 사용자 풀 ID, (사용자 풀 ID에 포함된)지역을 확인한다. AWS - Cognito - 사용자 풀 관리 - 생성한 사용자 풀 - 일반 설정
- 클라이언트 ID 를 확인한다. AWS - Cognito - 사용자 풀 관리 - 생성한 사용자 풀 - 앱 클라이언트
AWS 계정 액세스 키 생성 및 정보 확인 AWS - 내 보안 자격 증명 - 액세스 키 - 새 액세스 키 만들기
- 액세스 키를 생성하면 한번만 다운로드 받을 수 있다. 분실할 경우, 새 액세스 키를 만들어 사용해야 한다. - '액세스 키 ID' 와 ‘액세스 키’ 를 확인한다.
프로젝트 내에 npm 모듈 설치 - npm install aws-sdk - npm install jwk-to-pem - npm install jsonwebtoken - npm install request
원하는 기능 조회 AWS - Documentation - Amazon Cognito - API Reference
- Actions 페이지 혹은 좌측 내비게이션 바에서 원하는 항목을 찾거나, 상단 검색창에서 검색한다. - 관리자의 사용자 생성 기능을 예로, AdminCreateUser 를 조회할 수 있다. ‘create user’ 등의 검색어로 검색해서 찾을 수도 있다.
기능 확인 AWS - Documentation - Amazon Cognito - API Reference - AdminCreateUser
- 조회한 api 가 원하던 기능인지 확인한다. 페이지 첫 문단이 해당 api 에 대한 설명이므로, 읽어보며 생각했던 기능이 맞는지 확인해야 한다.
특성 및 속성 확인 AWS - Documentation - Amazon Cognito - API Reference - AdminCreateUser
- 페이지 우측에 내비게이션 바가 생긴 것을 알 수 있다.
- Request Syntax : 요청 구문의 형식을 확인할 수 있다. - Request Parameters : 요청 구문에 들어가는 속성의 형식과 필수 여부를 확인할 수 있다. - Response Syntax : 응답 구문의 형식을 확인할 수 있다. - Response Elements : 성공시 응답 요소가 무엇인지 확인할 수 있다. - Errors : 발생하는 Exception을 확인하여 에러 처리를 할 수 있다.
- 위와 같이 Documents에 나오는 Exception 코드만으로 원하는 처리를 할 수 있는 경우도 있었지만, 앞서 api 사용법 설명을 위해 예를 들었던 ‘AdminCreateUser’ 같은 경우는, 같은 Exception 코드에서도 다른 경우를 구분해야 원하는 처리를 할 수 있었다.- 이처럼 err.code(Exception 코드) 가 아닌 err.message(에러 메세지)로 구분하여 처리를 해야할 수도 있다.
cognitoIdentityServiceProvider.adminCreateUser(createUserParams,function(err,data){
if(err)
{
console.log(err);
if(err.message.startsWith('User account already exists')){
res.json({code:-1, msg:'이미 존재하는 아이디입니다.'});
}else if(err.message.startsWith('An account with the email already exists')){
res.json({code:-2, msg:'이미 등록된 이메일 주소입니다.'});
}
}
else
{
console.log(data);
res.json({code:0, msg:'계정 생성 안내 이메일이 발송되었습니다.'});
}
});