[파이썬] AWS Lambda와 S3를 활용한 데이터 백업 및 복원

AWS Lambda와 S3는 데이터 백업 및 복원 작업에 강력한 조합입니다. Lambda는 이벤트 기반으로 실행되는 서버리스 컴퓨팅 서비스이며, S3는 확장 가능한 객체 스토리지 솔루션입니다. 이 블로그에서는 Python을 사용하여 AWS Lambda와 S3를 통한 데이터 백업과 복원 방법을 소개합니다.

데이터 백업 Lambda 함수 작성하기

  1. AWS Management Console에 로그인하고 Lambda 서비스 페이지로 이동합니다.
  2. “함수 만들기” 버튼을 클릭하고 적절한 함수 이름을 입력합니다.
  3. “런타임” 탭에서 “Python 3.x”를 선택합니다.
  4. “실행 역할” 드롭다운 메뉴에서 “새 역할 생성하기”를 선택하고, 역할 이름과 “S3ObjectWriteOnly” 정책을 선택합니다. 이 정책은 Lambda 함수가 S3에 쓰기 작업을 수행할 수 있도록 허용합니다.
  5. “함수 생성” 버튼을 클릭합니다.

이제 Lambda 함수의 코드를 작성합니다. 다음 예제는 간단한 예시로, 데이터베이스 백업 파일을 S3 버킷에 업로드하는 코드입니다:

import boto3
import datetime

def lambda_handler(event, context):
    # 데이터베이스 백업 로직 작성
    
    # 백업 파일명 생성
    backup_filename = f"backup_{datetime.datetime.now().strftime('%Y-%m-%d')}.bak"
    
    # S3 클라이언트 생성
    s3 = boto3.client('s3')
    
    # S3 버킷에 백업 파일 업로드
    s3.upload_file(backup_filename, 'my-backup-bucket', backup_filename)

위 코드에서 “my-backup-bucket”은 사용자의 S3 버킷 이름으로 대체되어야 합니다. 코드를 변경하고 Lambda 함수를 업로드한 후에는 AWS CloudWatch 이벤트 등을 사용하여 주기적으로 실행되도록 예약할 수 있습니다.

데이터 복원 Lambda 함수 작성하기

데이터를 복원하기 위해 Lambda 함수를 작성해야 합니다. 아래 코드는 S3에서 백업 파일을 다운로드하여 데이터베이스에 복원하는 예시입니다:

import boto3

def lambda_handler(event, context):
    # 데이터베이스 복원 로직 작성
    
    # S3 클라이언트 생성
    s3 = boto3.client('s3')
    
    # S3 버킷에서 백업 파일 다운로드
    s3.download_file('my-backup-bucket', 'backup.bak', '/tmp/backup.bak')
    
    # 데이터베이스 복원 로직 작성

위 코드에서 “my-backup-bucket”과 “backup.bak”은 복원하려는 S3 버킷과 파일 이름으로 대체되어야 합니다. 데이터베이스 복원 로직은 각 사용자의 요구에 따라 다르게 작성되어야 합니다.

결론

이 블로그에서는 AWS Lambda와 S3를 활용하여 데이터 백업과 복원을 수행하는 방법을 Python으로 설명했습니다. Lambda 함수를 사용하여 지속적인 백업 및 복원 프로세스를 자동화할 수 있습니다. 이를 통해 데이터 보존과 회복력을 향상시킬 수 있으며, 중요한 데이터를 안전하게 보호할 수 있습니다. AWS Lambda와 S3는 강력한 도구이므로 적극적으로 활용할 것을 권장합니다.