[파이썬] AWS Lambda와 RDS를 연동한 데이터베이스 백업 및 복원

AWS Lambda는 서버리스 컴퓨팅 서비스로, 코드 실행에 필요한 리소스를 동적으로 할당해줍니다. AWS Lambda와 함께 Amazon RDS(Relational Database Service)를 사용하면 편리하게 데이터베이스를 백업 및 복원할 수 있습니다.

이번 포스트에서는 Python을 사용하여 AWS Lambda와 RDS를 연동하여 데이터베이스를 백업하고, 필요한 경우 복원하는 방법을 알아보겠습니다.

1. AWS Lambda 설정

먼저, AWS Lambda 함수를 생성하고 설정해야 합니다.

  1. AWS Management Console에 로그인합니다.
  2. “서비스” 메뉴에서 “Lambda”를 선택합니다.
  3. “함수 만들기” 버튼을 클릭합니다.
  4. “함수 생성” 페이지에서 “택시 마라톤” 템플릿을 선택합니다.
  5. “기본 구성” 섹션에서 함수 이름, 설명 등을 입력하고, “실행 역할”을 구성합니다. 이 역할은 AWS Lambda 함수가 AWS 리소스에 액세스할 수 있도록 권한을 제공합니다.
  6. “함수 생성” 버튼을 클릭하여 함수를 생성합니다.

2. 필요한 패키지 설치

AWS Lambda에서 Python 코드를 실행하기 위해 필요한 패키지를 설치해야 합니다. 이를 위해 pip를 사용하여 다음 명령을 실행합니다.

pip install boto3

3. 데이터베이스 백업 및 복원 코드 작성

이제 Python 코드를 작성하여 데이터베이스를 백업 및 복원할 수 있는 기능을 구현해보겠습니다. 아래의 코드는 간단한 예시이며, 필요에 따라 수정하십시오.

import boto3

def lambda_handler(event, context):
    # AWS RDS 연결
    rds = boto3.client('rds')

    # 데이터베이스 백업
    backup_response = rds.create_db_snapshot(
        DBSnapshotIdentifier='my-db-snapshot',
        DBInstanceIdentifier='my-db-instance',
        Tags=[
            {
                'Key': 'backup',
                'Value': 'true'
            },
        ]
    )
    print("Database backup created: " + backup_response['DBSnapshot']['DBSnapshotIdentifier'])

    # 데이터베이스 복원
    restore_response = rds.restore_db_instance_from_db_snapshot(
        DBInstanceIdentifier='restored-db-instance',
        DBSnapshotIdentifier='my-db-snapshot',
        DBInstanceClass='db.t2.micro',
        AvailabilityZone='us-west-2b'
    )
    print("Database restored: " + restore_response['DBInstance']['DBInstanceIdentifier'])

위의 코드는 boto3 라이브러리를 사용하여 AWS RDS와 통신합니다. create_db_snapshot 메서드를 사용하여 데이터베이스를 백업하고, restore_db_instance_from_db_snapshot 메서드를 사용하여 필요한 경우 데이터베이스를 복원합니다.

4. Lambda 함수 배포 및 테스트

이제 작성한 코드를 AWS Lambda 함수에 배포하고, 테스트해보겠습니다.

  1. AWS Lambda 콘솔에서 생성한 함수로 이동합니다.
  2. “함수 코드” 섹션에서 코드 유형을 “직접 수정”으로 변경합니다.
  3. 아래의 코드를 “편집 코드” 창에 붙여넣습니다.
  4. “배포” 버튼을 클릭하여 함수를 배포합니다.

이제 Lambda 함수를 테스트하려면 다음 단계를 따릅니다.

  1. “구성” 탭으로 이동합니다.
  2. “이벤트 테스트” 드롭다운 아래에 있는 “생성한 테스트 이벤트 템플릿” 중 하나를 선택합니다.
  3. “테스트” 버튼을 클릭하여 함수를 실행합니다.

요약

이번 포스트에서는 AWS Lambda와 RDS를 연동하여 데이터베이스를 백업 및 복원하는 방법을 알아보았습니다. Python을 사용하여 AWS Lambda 함수를 작성하고, boto3를 사용하여 RDS와 통신하는 방법을 살펴보았습니다. 이를 통해 편리하게 데이터베이스를 관리할 수 있습니다. 이를 기반으로 필요에 맞게 코드를 수정하여 실제 환경에서 활용해보세요.