AWS Lambda는 서버리스 컴퓨팅 서비스로, 코드 실행에 필요한 리소스를 동적으로 할당해줍니다. AWS Lambda와 함께 Amazon RDS(Relational Database Service)를 사용하면 편리하게 데이터베이스를 백업 및 복원할 수 있습니다.
이번 포스트에서는 Python을 사용하여 AWS Lambda와 RDS를 연동하여 데이터베이스를 백업하고, 필요한 경우 복원하는 방법을 알아보겠습니다.
1. AWS Lambda 설정
먼저, AWS Lambda 함수를 생성하고 설정해야 합니다.
- AWS Management Console에 로그인합니다.
- “서비스” 메뉴에서 “Lambda”를 선택합니다.
- “함수 만들기” 버튼을 클릭합니다.
- “함수 생성” 페이지에서 “택시 마라톤” 템플릿을 선택합니다.
- “기본 구성” 섹션에서 함수 이름, 설명 등을 입력하고, “실행 역할”을 구성합니다. 이 역할은 AWS Lambda 함수가 AWS 리소스에 액세스할 수 있도록 권한을 제공합니다.
- “함수 생성” 버튼을 클릭하여 함수를 생성합니다.
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 함수에 배포하고, 테스트해보겠습니다.
- AWS Lambda 콘솔에서 생성한 함수로 이동합니다.
- “함수 코드” 섹션에서 코드 유형을 “직접 수정”으로 변경합니다.
- 아래의 코드를 “편집 코드” 창에 붙여넣습니다.
- “배포” 버튼을 클릭하여 함수를 배포합니다.
이제 Lambda 함수를 테스트하려면 다음 단계를 따릅니다.
- “구성” 탭으로 이동합니다.
- “이벤트 테스트” 드롭다운 아래에 있는 “생성한 테스트 이벤트 템플릿” 중 하나를 선택합니다.
- “테스트” 버튼을 클릭하여 함수를 실행합니다.
요약
이번 포스트에서는 AWS Lambda와 RDS를 연동하여 데이터베이스를 백업 및 복원하는 방법을 알아보았습니다. Python을 사용하여 AWS Lambda 함수를 작성하고, boto3
를 사용하여 RDS와 통신하는 방법을 살펴보았습니다. 이를 통해 편리하게 데이터베이스를 관리할 수 있습니다. 이를 기반으로 필요에 맞게 코드를 수정하여 실제 환경에서 활용해보세요.