복제 인스턴스에서 스토리지가 가득 차지 않도록 AWS DMS 오류 로그 삭제 프로세스를 자동화하려면 어떻게 해야 하나요?

3분 분량
0

AWS Database Migration Service(AWS DMS) 오류 로그 삭제 프로세스를 자동화하여 더 자주 삭제하고 싶습니다.

간략한 설명

AWS DMS 오류 로그가 DMS 복제 인스턴스에서 많은 공간을 차지하는 경우 복제 인스턴스는 storage-full 상태로 전환될 수 있습니다. 이 문제를 해결하려면 DMS 작업에 대한 DMS 작업 오류 로그를 삭제하세요.

AWS DMS 작업에 대한 오류 로그를 삭제하려면 다음 방법 중 하나를 사용하세요.

  • AWS DMS 콘솔
  • AWS Command Line Interface(AWS CLI)
  • API
  • Lambda 스케줄러

참고: storage-full 상태가 발생하는 데에는 몇 가지 이유가 있습니다. 자세한 내용은 AWS DMS 복제 DB 인스턴스가 스토리지가 storage-full 상태인 이유는 무엇인가요?를 참조하세요.

해결 방법

참고: AWS CLI 명령을 실행할 때 오류가 발생하면 AWS CLI 오류 문제 해결을 참조하세요. 또한 최신 AWS CLI 버전을 사용하고 있는지 확인하세요.

AWS DMS 콘솔 사용

DMS 작업 오류 로그를 수동으로 삭제하려면 AWS DMS용 CloudWatch 로그를 활성화, 액세스 또는 삭제하려면 어떻게 해야 하나요?를 참조하세요.

AWS CLI 사용

AWS CLI를 사용하여 작업 설정을 수정하고 DMS 작업 로그를 삭제하려면 modify-replication-task 명령을 실행합니다.

aws dms modify-replication-task --replication-task-arn <DMS task ARN> --replication-task-settings '{"Logging": { "DeleteTaskLogs": true}}'

이 명령은 "DeleteTaskLogs": true 매개변수를 변경하여 작업을 수정합니다. 이 파라미터를 사용하여 작업 설정을 추가하면 해당 작업에 대한 모든 로그가 복제 인스턴스에서 삭제됩니다. 로그가 삭제되면 작업 설정에서 "DeleteTaskLogs": true 매개 변수가 제거됩니다. 이 명령을 실행한 후 복제 인스턴스에서 로그가 삭제되었는지 확인합니다.

로그를 정기적으로 삭제하려면 "DeleteTaskLogs": true 매개 변수를 사용하여 작업 설정을 수정하세요. cron 작업을 사용하여 modify-replication-task이 주기적으로 실행되도록 스케줄을 지정할 수 있습니다.

API 사용

AWS DMS 작업 로그를 자동으로 삭제하려면 매일 또는 원하는 빈도로 실행할 스크립트를 생성하세요. 다음 예제는 AWS Lambda 및 Python 코드를 사용하여 제공된 작업 ARN에 대한 작업 오류 로그 삭제를 자동화합니다.

Lambda 함수 설정

Lambda 함수를 설정하려면 다음 단계를 완료하세요.

1.Lambda 콘솔을 열고 DMS 리소스가 포함된 AWS 리전을 선택합니다.

2.Functions(함수) 패널에서 Create function(함수 만들기)을 선택합니다.

3.    함수 이름을 입력합니다.

4.런타임Python 3.8을 선택합니다.

5.**Change default execution role(기본 실행 역할 변경)**에서 **Create a new role with basic Lambda permissions(기본 Lambda 권한으로 새 역할 생성)**를 선택하세요. Lambda가 생성하는 AWS 자격 증명 및 액세스 관리(IAM) 역할 이름을 기록해 두세요.

6.함수 생성을 선택합니다.

7.AWS IAM 콘솔을 연 다음 Lambda 함수가 생성한 IAM 역할을 엽니다.

8.IAM 정책을 생성하려면 다음 JSON을 사용합니다. 예제 작업 ARN을 작업 ARN으로 바꾸세요.

{    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "dms:ModifyReplicationTask"
            ],
            "Resource": "arn:aws:dms:us-east-1:1234567890:task:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
        }
    ]
}

9.Lambda 함수가 생성한 역할에 정책을 연결합니다.

10.Lambda 콘솔을 열고 생성한 Lambda 함수를 선택합니다.

11.Function code(함수 코드)에 다음 코드를 입력하고 Deploy를 선택합니다.

import boto3import json
client = boto3.client('dms')
def lambda_handler(event, context):
    # specific task ARN
    taskarn = 'arn:aws:dms:us-east-1:1234567890:task:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
    # modify the DMS task
    response = client.modify_replication_task(
        ReplicationTaskArn=taskarn,
        ReplicationTaskSettings='{"Logging": { "DeleteTaskLogs": true}}'
    )

12.Test(테스트)를 선택한 다음 기본 템플릿으로 Event name(이벤트 이름)을 입력합니다.

13.Create(만들기)를 선택한 다음 Test(테스트)를 다시 선택합니다.

DMS 작업 상태가 Modifying으로 변경됩니다. 동시에 복제 인스턴스 아래의 DMS 작업 오류 로그도 삭제됩니다.

Lambda 스케줄러 사용

Lambda 스케줄러를 사용하여 DMS 작업 오류 로그를 자동화하려면 다음 단계를 완료하세요.

  1. Lambda 콘솔을 열고 생성한 Lambda 함수를 선택합니다.
  2. Designer(디자이너)에서 Add trigger(트리거 추가)를 선택합니다.
  3. 드롭다운 목록에서 **EventBridge (Cloudwatch Events)**를 선택합니다.
  4. Rule(규칙)의 경우 Create a new rule(새 규칙 생성)을 선택합니다.
  5. Rule name(규칙 이름) 및 Rule description(규칙 설명)을 입력합니다.
  6. Schedule expression(스케줄 표현식)에 rate 표현식을 입력합니다. 자세한 내용은 rate 또는 cron을 사용한 스케줄 표현식을 참조하세요.
  7. 추가를 선택합니다.

참고: 이 코드를 변경하고 최적화할 수 있습니다. cron 작업 또는 Lambda 스케줄러를 사용하여 이 스크립트가 정기적으로 실행되도록 스케쥴링할 수도 있습니다.