AWS Lambda는 서버리스 컴퓨팅 서비스로, 코드 실행을 위한 서버 관리 없이 애플리케이션 코드를 실행할 수 있습니다. DynamoDB는 NoSQL 데이터베이스로, 확장성이 뛰어나고 신속한 데이터 처리를 지원합니다. 이 두 가지 서비스를 함께 사용하여 데이터 처리를 효율적으로 할 수 있습니다.
Lambda 함수 작성
Lambda 함수는 다양한 이벤트 트리거에서 실행될 수 있습니다. 이 예제에서는 S3 버킷에 업로드된 파일을 처리하는 Lambda 함수를 작성해보겠습니다.
import boto3
def lambda_handler(event, context):
# S3 이벤트에서 파일 정보 가져오기
s3_client = boto3.client('s3')
bucket_name = event['Records'][0]['s3']['bucket']['name']
file_key = event['Records'][0]['s3']['object']['key']
# DynamoDB에 데이터 쓰기
dynamodb = boto3.resource('dynamodb')
table = dynamodb.Table('my-table')
table.put_item(Item={'file_key': file_key, 'bucket_name': bucket_name})
# 처리 완료 메시지 반환
return {
'statusCode': 200,
'body': 'File processed successfully!'
}
위의 코드는 Lambda 함수의 핵심 로직을 담고 있습니다. 우선 boto3 라이브러리를 사용하여 S3 클라이언트 객체를 생성합니다. 이후에는 이벤트 정보를 이용해서 S3 버킷과 파일 키를 가져옵니다.
그 다음, DynamoDB 테이블에 데이터를 쓰기 위해 boto3 라이브러리를 사용하여 DynamoDB 리소스 객체를 생성합니다. put_item
메서드를 사용해서 파일 키와 버킷명을 저장합니다.
마지막으로, 처리 완료 메시지를 반환합니다.
Lambda 함수 배포
Lambda 함수를 배포하기 위해서는 AWS 콘솔이나 AWS CLI를 사용할 수 있습니다. 여기서는 AWS 콘솔을 사용한 예제를 보여드리겠습니다.
- AWS Management Console에 로그인하고, Lambda 서비스로 이동합니다.
- Lambda 함수 생성 페이지에서 “함수 만들기”를 선택합니다.
- 함수 생성 페이지에서 “이벤트 소스 설정하지 않음”을 선택한 뒤, 함수 이름을 입력하고 “함수 생성”을 선택합니다.
- 함수 코드 편집기에서, 위에서 작성한 Lambda 함수 코드를 붙여넣습니다.
- 필요한 경우, 런타임, 실행 역할 등을 설정합니다.
- “배포” 버튼을 선택하여 Lambda 함수를 배포합니다.
DynamoDB 설정
Lambda 함수에서 사용할 DynamoDB 테이블을 설정해야 합니다.
- 제어판에서 DynamoDB 서비스로 이동합니다.
- “테이블 만들기”를 선택합니다.
- 테이블 이름을 입력하고, 기본 설정을 수정하거나 그대로 두고 “만들기”를 선택합니다.
테스트
이제 Lambda 함수가 작동하는지 테스트해 보겠습니다.
- AWS Management Console에서 Lambda 함수로 이동합니다.
- Lambda 함수 목록에서 방금 만든 함수를 선택합니다.
- 상단 편집기 오른쪽에 있는 “테스트” 버튼을 선택합니다.
- 테스트 이벤트로
{"Records": [{"s3": {"bucket": {"name": "my-bucket"}, "object": {"key": "my-file.txt"}}}]}
을 입력합니다. - “테스트” 버튼을 클릭하여 테스트를 실행합니다.
테스트가 성공하면, DynamoDB 테이블에 데이터가 저장되었는지 확인할 수 있습니다.
결론
이 블로그 포스트에서는 AWS Lambda와 DynamoDB를 활용하여 데이터 처리를 할 수 있는 방법에 대해 알아보았습니다. 이를 통해 서버리스 아키텍처를 구축하고 빠르고 확장 가능한 데이터 처리를 할 수 있습니다.