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를 생성합니다.
- “새 API 만들기”를 클릭하고, “GraphQL”을 선택합니다.
- “API 이름”을 지정하고, “대상” 옵션에서 “새 데이터 소스”를 선택합니다.
- “새 데이터 소스”에서 “AWS Lambda”를 선택하고, 방금 생성한 Lambda 함수를 선택합니다.
- “모델 설정”을 위해 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를 손쉽게 개발할 수 있습니다.