RDS 시작/중지로 런타임 조작

시작하기

데이터 수집 및 데이터 분석 프로세스는 RDS 서버를 사용합니다.

문제

1. AWS 프리 티어 기간이 종료되면 RDS 요금이 발생했습니다.

2. 데이터 분석을 위해 EC2를 사용하고 있으므로 비용을 절감하고 RDS 시작/중지 자동화를 구현하려고 합니다.

하나. IAM 사용자 생성

사용자 이름을 만들고 암호를 설정한 후 다음을 클릭합니다.


Direct Policy Connection 선택 → RDS 검색 → FullAccess 선택 및 사용자 생성


액세스 키 생성


2. Amazon Lambda를 사용하여 함수 생성

사용할 Lambda용 키 생성


액세스 키/비밀 액세스 키 다운로드


Lambda 함수 생성

RDS opcode 생성

  • IAM에서 생성한 액세스 키를 입력한 후 aws-sdk 패키지를 사용하여 RDS 인스턴스를 생성합니다.
  • RDS 실행/중지 코드 작성
  • node-modules, env, index.js, ZIP 파일로 압축된 패키지 파일
import AWS from "aws-sdk"

AWS.config.update({
    accessKeyId: process.env.accessKeyId,
    secretAccessKey: process.env.secretAccessKey,
    region: "ap-northeast-2",
})

const rds = new AWS.RDS({
    region: "ap-northeast-2",
})

export const handler = async (event, context) => {
    try {
        const instanceId = "carryduo-data-analysis" // RDS 인스턴스의 ID

        const params = {
            DBInstanceIdentifier: instanceId,
        }

        const data = await rds.startDBInstance(params).promise()

        console.log(`Start RDS instance ${instanceId}`)

        return {
            statusCode: 200,
            body: JSON.stringify(data),
        }
    } catch (err) {
        console.error(`Error stopping RDS instance: ${err}`)

        return {
            statusCode: 500,
            body: JSON.stringify({
                message: `Error stopping RDS instance: ${err}`,
            }),
        }
    }
}

Lambda 함수 생성


생성된 우편번호 파일 업로드 및 테스트 실행

3. Amazon EventBridge 규칙 생성

Amazon EventBridge를 사용하면 일정에 따라 규칙(lambda, 스냅샷 등)을 실행할 수 있습니다.


cron 식으로 일정 만들기


실행할 Lambda 함수 설정


첫 번째 람다에서 생성된 함수 이름을 선택하고 생성하면 완료됩니다.

3. IAM을 사용하여 RDS 권한 정책 연결

IAM에서 정책 선택 후 정책 검색에서 rds 검색


RDSFullAccess 선택 후 Policy Attachment 선택


EventBridge 규칙에 정책을 연결하고 저장


결과

  • 특정 시간에 RDS를 자동으로 실행/정지합니다.
  • RDS 요금이 약 52.3% 인하되어 요금 부담이 줄었습니다.

참조