RDS를 lambda에서 정기적으로 중지를 시작
소개
공부도 겸해 개인 개발하고 있는 앱을 aws로 공개하고 있습니다만, AWS의 EC2와 RDS의 요금이 상당히 높다.
특히 RDS는 최저 스펙에서도 확실히 2000엔 정도 걸려 버린다.
우선 요금 낮추기 위해 개발을 하지 않는 평일의 낮은 RDS를 정지하도록 하고, 조금이라도 절약하고 싶었기 때문에 lambda로 자동적으로
평일 낮에는 멈추도록 했습니다.
lambda의 언어에 관해서는 Ruby를 사용했습니다.
lambda 만들기
먼저 lambda를 만듭니다.
만든 후 lambda 세부 화면에서
액세스 권한을 보고 실행 역할의 역할 이름 부분을 클릭합니다.
그리고 정책 연결에서 RDS 권한을 부여합니다.
권한에 관해서는 조사하는 것이 귀찮았기 때문에 자신은 RDS의 FullAccess를 부여했습니다.
lambda 코드
다음으로 lambda의 코드 부분
에 아래 코드를 붙여 넣습니다.
require 'json'
require 'aws-sdk'
def lambda_handler(event:, context:)
ENV['TZ'] = 'Asia/Tokyo'
client = Aws::RDS::Client.new(
region: 'ap-northeast-1'
)
current_time = Time.now
p "現在の時刻は #{current_time.strftime('%H時%M分')}"
if current_time.hour == 18
p '現在は夕方なのでRDSを起動します。'
resp = client.start_db_instance({
db_instance_identifier: "sb-develop"
})
p '起動完了'
else
p '就寝時間なのでRDSを終了します。'
resp = client.stop_db_instance({
db_instance_identifier: "sb-develop"
})
p '一時停止完了'
end
end
Aws::RDS::Client 인스턴스를 만들고
stop_db_instance, start_db_instance에서 시작 및 중지할 수 있습니다.
다른 것들도 가능합니다 => htps : // / cs. 아 ws. 아마존. 이 m/sdk-f-r-by/v3/아피/아ws/RDS/C페엔 t. HTML
lambda 일정 설정
스케줄에 대해서는 EventBridge (CloudWatch Events)로 할 수 있습니다.
트리거 추가에서 EventBridge(CloudWatch Events)를 선택하여 생성합니다.
이번에는 평일 저녁 6시에 시작하고 평일 저녁 0시에 정지하는 형태로
이것은 ↓가 평일의 밤중 0시에 lambda를 실행하는 예입니다.
만들면 똑같이 cloudwatch events
cron 부분을
cron(0 18 ? * MON-FRI *)
로 만들 수 있습니다.
이제 평일 밤중부터 낮에는 멈출 수 있습니다.
Reference
이 문제에 관하여(RDS를 lambda에서 정기적으로 중지를 시작), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/sibakenY/items/f90845de226b3258775a
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
먼저 lambda를 만듭니다.
만든 후 lambda 세부 화면에서
액세스 권한을 보고 실행 역할의 역할 이름 부분을 클릭합니다.
그리고 정책 연결에서 RDS 권한을 부여합니다.
권한에 관해서는 조사하는 것이 귀찮았기 때문에 자신은 RDS의 FullAccess를 부여했습니다.
lambda 코드
다음으로 lambda의 코드 부분
에 아래 코드를 붙여 넣습니다.
require 'json'
require 'aws-sdk'
def lambda_handler(event:, context:)
ENV['TZ'] = 'Asia/Tokyo'
client = Aws::RDS::Client.new(
region: 'ap-northeast-1'
)
current_time = Time.now
p "現在の時刻は #{current_time.strftime('%H時%M分')}"
if current_time.hour == 18
p '現在は夕方なのでRDSを起動します。'
resp = client.start_db_instance({
db_instance_identifier: "sb-develop"
})
p '起動完了'
else
p '就寝時間なのでRDSを終了します。'
resp = client.stop_db_instance({
db_instance_identifier: "sb-develop"
})
p '一時停止完了'
end
end
Aws::RDS::Client 인스턴스를 만들고
stop_db_instance, start_db_instance에서 시작 및 중지할 수 있습니다.
다른 것들도 가능합니다 => htps : // / cs. 아 ws. 아마존. 이 m/sdk-f-r-by/v3/아피/아ws/RDS/C페엔 t. HTML
lambda 일정 설정
스케줄에 대해서는 EventBridge (CloudWatch Events)로 할 수 있습니다.
트리거 추가에서 EventBridge(CloudWatch Events)를 선택하여 생성합니다.
이번에는 평일 저녁 6시에 시작하고 평일 저녁 0시에 정지하는 형태로
이것은 ↓가 평일의 밤중 0시에 lambda를 실행하는 예입니다.
만들면 똑같이 cloudwatch events
cron 부분을
cron(0 18 ? * MON-FRI *)
로 만들 수 있습니다.
이제 평일 밤중부터 낮에는 멈출 수 있습니다.
Reference
이 문제에 관하여(RDS를 lambda에서 정기적으로 중지를 시작), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/sibakenY/items/f90845de226b3258775a
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
require 'json'
require 'aws-sdk'
def lambda_handler(event:, context:)
ENV['TZ'] = 'Asia/Tokyo'
client = Aws::RDS::Client.new(
region: 'ap-northeast-1'
)
current_time = Time.now
p "現在の時刻は #{current_time.strftime('%H時%M分')}"
if current_time.hour == 18
p '現在は夕方なのでRDSを起動します。'
resp = client.start_db_instance({
db_instance_identifier: "sb-develop"
})
p '起動完了'
else
p '就寝時間なのでRDSを終了します。'
resp = client.stop_db_instance({
db_instance_identifier: "sb-develop"
})
p '一時停止完了'
end
end
스케줄에 대해서는 EventBridge (CloudWatch Events)로 할 수 있습니다.
트리거 추가에서 EventBridge(CloudWatch Events)를 선택하여 생성합니다.
이번에는 평일 저녁 6시에 시작하고 평일 저녁 0시에 정지하는 형태로
이것은 ↓가 평일의 밤중 0시에 lambda를 실행하는 예입니다.
만들면 똑같이 cloudwatch events
cron 부분을
cron(0 18 ? * MON-FRI *)
로 만들 수 있습니다.
이제 평일 밤중부터 낮에는 멈출 수 있습니다.
Reference
이 문제에 관하여(RDS를 lambda에서 정기적으로 중지를 시작), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/sibakenY/items/f90845de226b3258775a텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)