aws-sdk-go를 통해 Cognito에서 User의sub를 획득하는 방법

7144 단어 AWSGoCognitotech

날과 씨


프레젠테이션 환경에서 DynamoDB의 데이터를 정기적으로 삭제하고 싶지만, 표 자체가 AppSync에서 관리하기 때문에'다른 도구를 사용하여 DynamoDB 테이블을 정기적으로 다시 만들고 싶지 않다'.
테이블에서 Cognito의sub을 독특한 값으로 사용하기 때문에 대상 환경과 관련된 사용자 일람을 얻고 이 사용자와 관련된 데이터를 삭제하려고 합니다.
이에 따라 코그니토의 특정 UserPoodId와 연관된 sub 일람을 얻는 방법을 조사해 필기를 진행했다.
샘플 코드가 yu-croco/GolangCognitoSample에 실렸으니 자유롭게 사용하세요.
*AWS Lambda에서 실행하기 위한 전제 조건으로 서버less frame work 구성

결론


실제 샘플은 AWS에서 공식적으로 제공한 샘플 코드로 다음과 같은 내용을 참고하십시오.
  • AWS Code Sample - CognitoListUsers.go
  • 이루어지다


    상기 견본 코드를 바탕으로userPoolID와 연결된 사용자의sub일람을 획득한 코드는 다음과 같다.
    // Cognitoのセッション
    func newCognitoSession()*cognitoidentityprovider.CognitoIdentityProvider {
    	sess := session.Must(session.NewSessionWithOptions(session.Options{
    		SharedConfigState: session.SharedConfigEnable,
    	}))
    
    	return cognitoidentityprovider.New(sess)
    }
    
    // userPoolIdを元にそれに紐づくUser一覧を取得する
    func findUsersByPoolId(userPoolId string) (*cognitoidentityprovider.ListUsersOutput, error) {
    	return newCognitoSession().
    		ListUsers(&cognitoidentityprovider.ListUsersInput{UserPoolId: &userPoolId})
    }
    
    // CognitoのUser情報一覧からsubの一覧を取得する
    func findSubs(userList *cognitoidentityprovider.ListUsersOutput) []string {
    	var userSubs []string
    
    	for _, user := range userList.Users {
    		for _, attr := range user.Attributes {
    			if *attr.Name == "sub" {
    				userSubs = append(userSubs, *attr.Value)
    			}
    		}
    	}
    	return userSubs
    }
    
    func main() error {
    	// ここに対象のuserPoolIdを入れる
    	userPoolId := "ADD ME!!"
    
    	userList, cognitoErr := findUsersByPoolId(userPoolId)
    	if cognitoErr != nil {
    		return cognitoErr
    	}
    
    	userSubs := findSubs(userList)
    
    	fmt.Println("userSubs: ", userSubs)
    
    	return nil
    }
    

    좋은 웹페이지 즐겨찾기