본문 바로가기
AWS

DMS(Database Migration Service) 기동, 중지 lambda 함수

by 타마마임팩트_쫀 2025. 1. 10.

Amazon EventBridge Scheduler 를 통하여 lambda 함수를 호출하여, 특정 시간에 dms를 기동, 중지 하려고 합니다.

 

1. dms 기동 함수

import boto3

# DMS 클라이언트 초기화
dms_client = boto3.client('dms')

def lambda_handler(event, context):
    # DMS Task 이름
    dms_task_name = "dms-one"
    
    try:
        # DMS Task 시작 요청
        response = dms_client.start_replication_task(
            ReplicationTaskArn='arn:aws:dms:ap-northeast-2:344:task:dms-one',  # DMS Task ARN을 설정
            StartReplicationTaskType='reload-target'  # 전체 로드 후 지속적 복제
        )
        
        # 작업 결과 로그
        return {
            "statusCode": 200,
            "body": {
                "message": f"DMS Task '{dms_task_name}' has been started successfully.",
                "response": response
            }
        }
    except Exception as e:
        return {
            "statusCode": 500,
            "body": {
                "message": f"Failed to start DMS Task '{dms_task_name}'.",
                "error": str(e)
            }
        }

 

2. dms 중지 함수

import boto3

# DMS 클라이언트 초기화
dms_client = boto3.client('dms')

def lambda_handler(event, context):
    # DMS Task 이름
    dms_task_name = "dms-one"
    
    try:
        # DMS Task 중지 요청
        response_stop = dms_client.stop_replication_task(
            ReplicationTaskArn='arn:aws:dms:ap-northeast-2:344:task:dms-one'
        )
        
        # 작업 결과 로그
        return {
            "statusCode": 200,
            "body": {
                "message": f"DMS Task '{dms_task_name}' has been stopped successfully.",
                "response": response_stop
            }
        }
    except Exception as e:
        return {
            "statusCode": 500,
            "body": {
                "message": f"Failed to stop DMS Task '{dms_task_name}'.",
                "error": str(e)
            }
        }

 

3. IAM 역할 설정

{
	"Version": "2020-05-12",
	"Statement": [
		{
			"Effect": "Allow",
			"Action": [
				"lambda:InvokeFunction",
				"dms:CreateReplicationInstance",
				"dms:CreateReplicationTask",
				"dms:StartReplicationTask",
				"dms:StopReplicationTask"
			],
			"Resource": "*"
		}
	]
}

 

.