RDS를 lambda에서 정기적으로 중지를 시작

4493 단어 RDS람다AWS

소개



공부도 겸해 개인 개발하고 있는 앱을 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 *)

로 만들 수 있습니다.

이제 평일 밤중부터 낮에는 멈출 수 있습니다.

좋은 웹페이지 즐겨찾기