시작하기
데이터 수집 및 데이터 분석 프로세스는 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% 인하되어 요금 부담이 줄었습니다.