[파이썬] AWS Lambda와 AppSync를 활용한 서버리스 GraphQL API 개발

AWS Lambda와 AppSync는 서버리스 아키텍처를 구축하는 데 도움이 되는 강력한 도구입니다. 이 블로그 포스트에서는 Python 프로그래밍 언어를 사용하여 AWS Lambda와 AppSync를 활용하여 서버리스 GraphQL API를 개발하는 방법에 대해 알아보겠습니다.

Lambda 함수 생성

먼저 AWS Lambda 함수를 생성해야 합니다. 이 함수는 GraphQL API의 리졸버 역할을 수행하게 됩니다. 다음은 Lambda 함수를 작성하는 예제입니다.

import json

def lambda_handler(event, context):
    # 이곳에서 GraphQL 요청을 처리하는 로직을 작성합니다.

    # GraphQL 요청 파싱
    body = json.loads(event['body'])
    query = body['query']
    variables = body.get('variables')

    # GraphQL 스키마에 따라 적절한 리졸버 함수를 호출하여 결과를 반환합니다.
    result = execute_query(query, variables)
  
    # 결과를 JSON 형식으로 반환합니다.
    response = {
        'statusCode': 200,
        'body': json.dumps(result)
    }
  
    return response

위의 예제에서 execute_query 함수는 주어진 GraphQL 쿼리와 변수를 실행하고 결과를 반환하는 함수를 나타냅니다. 이 함수는 실제로 데이터베이스 등 백엔드 시스템과 상호작용하고 데이터를 가져오는 역할을 수행합니다.

AppSync API 생성

이제 AWS AppSync API를 생성해야 합니다. AppSync는 GraphQL API를 생성, 구성 및 관리하기 위한 서비스로 AWS 콘솔을 통해 쉽게 생성할 수 있습니다. AppSync 콘솔에서 다음 단계를 따라 API를 생성합니다.

  1. “새 API 만들기”를 클릭하고, “GraphQL”을 선택합니다.
  2. “API 이름”을 지정하고, “대상” 옵션에서 “새 데이터 소스”를 선택합니다.
  3. “새 데이터 소스”에서 “AWS Lambda”를 선택하고, 방금 생성한 Lambda 함수를 선택합니다.
  4. “모델 설정”을 위해 GraphQL 스키마를 작성합니다. 스키마는 GraphQL 요청과 응답의 형식을 정의합니다.

API 테스트

AppSync API가 생성되면 테스트하고 쿼리를 실행할 수 있습니다. AppSync 콘솔에서 직접 테스트 할 수도 있고, CLI 또는 프로그래밍 방식으로 테스트 할 수도 있습니다. 다음은 Python에서 AppSync API에 대한 GraphQL 쿼리를 실행하는 예제입니다.

import boto3

appsync_client = boto3.client('appsync')

response = appsync_client.start_query_execution(
    apiId='YOUR_API_ID',
    query='YOUR_GRAPHQL_QUERY'
)

result = appsync_client.get_query_results(
    queryExecutionId=response['queryExecutionId']
)

위의 예제에서 ‘YOUR_API_ID’와 ‘YOUR_GRAPHQL_QUERY’를 실제 값으로 대체해야 합니다. start_query_execution 함수를 사용하여 GraphQL 쿼리를 실행하고, get_query_results 함수를 통해 결과를 검색합니다.

결론

AWS Lambda와 AppSync를 사용하여 서버리스 GraphQL API를 개발하는 방법을 살펴보았습니다. 이는 확장 가능하고 유연한 아키텍처를 구축하는 데 도움이 되며, 서버 관리에 대한 부담을 줄여줍니다. AWS의 다양한 서비스를 통합하여 원하는 기능을 지원하는 API를 손쉽게 개발할 수 있습니다.