[파이썬] AWS Lambda와 Cognito를 활용한 사용자 관리 시스템 구축

AWS Lambda와 Cognito를 활용하여 간단하고 안전한 사용자 관리 시스템을 구축할 수 있습니다. 이 글에서는 AWS Lambda와 Cognito를 이용하여 사용자를 등록, 인증, 인가하는 방법에 대해 알아보겠습니다.

AWS Lambda 소개

AWS Lambda는 서버리스 컴퓨팅 서비스로, 코드를 실행하고 관리하는 서비스입니다. 여기에 업로드된 코드는 트리거 이벤트가 발생할 때마다 실행되며, 런타임 환경에서 실행되어 필요한 리소스만 할당받고 비용을 절감할 수 있습니다.

Cognito 소개

Amazon Cognito는 사용자 인증 및 권한 부여 솔루션으로, 통합 애플리케이션에 사용자 등록 및 인증 기능을 제공합니다. 사용자 정보를 안전하게 저장하고 관리하며, 다양한 인증 방법을 지원합니다.

사용자 등록 기능 구현하기

다음은 AWS Lambda와 Cognito를 활용하여 사용자 등록 기능을 구현하는 예시 코드입니다.

import boto3

def lambda_handler(event, context):
    # Cognito 사용자 풀 정보 설정
    userpool_id = "your_userpool_id"
    client_id = "your_client_id"
    client_secret = "your_client_secret"
    
    # Cognito 클라이언트 생성
    cognito = boto3.client('cognito-idp')
    
    # 사용자 등록 요청
    response = cognito.sign_up(
        ClientId=client_id,
        SecretHash=client_secret,
        Username=event['username'],
        Password=event['password'],
        UserAttributes=[
            {
                'Name': 'email',
                'Value': event['email']
            }
        ]
    )
    
    return response

위의 코드에서는 event 인자를 통해 사용자의 username, password, email 정보를 전달받고, 해당 정보를 이용하여 사용자를 Cognito에 등록하는 작업을 수행합니다.

사용자 인증 및 인가 기능 구현하기

아래는 사용자 인증 및 인가 기능을 구현하기 위한 예시 코드입니다.

import boto3

def lambda_handler(event, context):
    # Cognito 사용자 풀 정보 설정
    userpool_id = "your_userpool_id"
    client_id = "your_client_id"
    client_secret = "your_client_secret"
    
    # Cognito 클라이언트 생성
    cognito = boto3.client('cognito-idp')
    
    # 사용자 인증 요청
    response = cognito.initiate_auth(
        ClientId=client_id,
        AuthFlow='USER_PASSWORD_AUTH',
        AuthParameters={
            'USERNAME': event['username'],
            'PASSWORD': event['password']
        }
    )
    
    # 사용자 인증 성공 여부 판단
    if response['AuthenticationResult']:
        # 사용자 인가 정보 반환
        # 여기에서 인증된 사용자를 기반으로 다른 서비스를 호출하거나 자체 로직을 처리할 수 있습니다.
        return response['AuthenticationResult']
    else:
        # 인증 실패 처리
        raise Exception("User authentication failed")

위의 코드에서는 event 인자로 사용자의 usernamepassword를 전달받아, 해당 정보를 이용하여 사용자 인증을 수행합니다. 사용자 인증이 성공하면 인가된 사용자 정보를 반환하며, 인증에 실패하면 예외를 발생시킵니다.

마무리

AWS Lambda와 Cognito를 통해 간단하고 안전한 사용자 관리 시스템을 구축할 수 있습니다. 위의 예시 코드는 간단한 예시로 설명된 것이며, 실제 운영 환경에 맞게 정확한 설정과 예외 처리를 추가해야 합니다. AWS Lambda와 Cognito의 공식 문서를 참고하여 자세한 정보를 확인하고, 실제 시나리오에 맞게 사용자 관리 시스템을 구축해보세요.