Woozy_DevLog
article thumbnail

시작하기

데이터 수집, 데이터 분석 프로세스에서는 한개의 RDS 서버를 사용하고 있다.

문제

1. AWS 프리티어 기간이 종료됨에 따라 RDS 과금이 발생하였다.

2. 나는 데이터 분석 EC2 한대도 같이 사용하고 있어서 요금 절약과 rds 실행/중지 자동화를 구현해보려 한다.

 

1. IAM 사용자 생성

사용자 이름 작성 및 암호 설정 후 다음.

직접 정책 연결 선택 → rds 검색 → fullAccess 선택 후 사용자 생성

액세스 키 생성

 

2. Amazon Lambda로 함수 생성하기

Lambda에서 사용할 키 생성

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

Lambda 함수 생성

RDS 조작 코드 생성

  • aws-sdk패키지 사용, IAM에서 생성한 액세스키 입력 후 RDS 인스턴스 생성.
  • RDS 실행 / 중지 코드 작성
  • node-modules ,env, index.js, package 파일 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 함수 생성

생성한 zip 코드 파일 업로드 및 테스트 실행

 

3. Amazon EventBridge 규칙 생성하기

Amazon EventBridge는 일정에 맞게 규칙(lambda, 스냅샷 등)을 실행시켜준다.

cron식을 이용하여 일정 생성하기

실행할 lambda 함수 설정

처음 lambda에서 만든 함수명을 선택하고 생성하면 끝이다.

 

3. IAM으로 RDS 권한 정책 연결하기

IAM에서 정책을 선택한뒤 정책 검색에서 rds를 검색

RDSFullAccess 선택 후 정책 연결 선택

EventBridge 규칙에 정책 연결 후 저장

결과

  • 특정 시간에 rds를 실행/중지를 자동화 하였다.
  • RDS 요금이 약 52.3% 감소 하여 요금 부담을 줄였다.

참고자료

profile

Woozy_DevLog

@Woozy_Dev

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!