소개

다른 언어(node, javascript, python 등)의 경우 aws sdk를 이용하여 cognito에 연동하는 자료는 많습니다.하지만 Go언어의 경우 SDK는 있으나 문서가 불친절 하고, 샘플로 참조할 자료가 부족하여 어려움이 있어, 직접 함수를 하나씩 써보고 확인한 Cognito UserPool의 회원가입과 로그인 구현을 위한 중요한 부분을 정리해보았습니다.

패키지

import (
"github.com/aws/aws-sdk-go/aws/session"
"github.com/aws/aws-sdk-go/service/cognitoidentityprovider"
)

기본적으로 필수적인 패키지는 위와 같습니다.세션을 제어하기 위한 aws/session 과 cognito를 사용하기 위한 service/cognitoidentityprovider 가 필요합니다.

세션 정의

제일 먼저 AWS의 세션을 정의해줍니다.

sess := session.Must(session.NewSession(aws.Config{
Region: aws.String("ap-northeast-2"),
}))

svc := cognitoidentityprovider.New(sess)

회원가입

SignUpInput

회원가입을 위해서는 회원가입시 필요한 입력 데이터를 넣어 주어야 합니다.

paramsSignup := cognitoidentityprovider.SignUpInput{
ClientId:aws.String("AWS_CLINET_ID"),
Password:aws.String("USER_PASSWORD"),
Username:aws.String("USER_NAME"),
UserAttributes: []*cognitoidentityprovider.AttributeType{
// 속성
{
Name:aws.String("nickname"),
Value:aws.String("USER_NICKNAME"),
},
// 커스텀 속성
{
Name:aws.String("custom:id"),
Value:aws.String("USER_CUSTON_ATTRIBUTE_ID"),
},
},
}

SignUp

위의 SignUpInput에 유저 데이터를 입력했다면, 이제는 유저 데이터를 Cognito User Pool에 추가해 줍니다.

resp, err := svc.SignUp(paramsSignup)
if err != nil {
fmt.Println(err.Error())
return
}
log.Info("회원가입: ", resp)