시작하기
데이터 수집, 데이터 분석 프로세스에서는 한개의 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% 감소 하여 요금 부담을 줄였다.
참고자료
'Project > Carryduo' 카테고리의 다른 글
Carryduo 정적 파일 저장 및 응답하기 (0) | 2023.03.22 |
---|---|
Carryduo 테스트코드 (0) | 2023.03.21 |
Carryduo DTO (0) | 2023.03.21 |
데이터 수집 프로세스 관리 및 오프셋 파일 저장 (0) | 2023.03.21 |
Carryduo 소환사 전적 갱신 요청 제한 시간 구현 (0) | 2023.03.21 |