【AWS】Lambda×CloudWatch Events에서 RDS 자동 정지
3229 단어 람다파이썬CloudWatchAWS
소개
요전날 사내의 AWS 유저로부터 「Aurora를 검증으로 이용하고 있는데, 정지해도 7일간 후에 자동으로 기동해 버리거나, 개발로 사용한 후에 멈추는 것을 잊어버리니까 뭔가 좋은 방법 없어?」라고 문의가 있었습니다. 그래서 CloudWatch Events와 Lambda를 사용하여 RDS를 정기적으로 자동 중지하는 프로그램을
python3.7
에서 만들었습니다.이 기사의 대상자
목차
Lambda용 IAM 역할 만들기
먼저 IAM 역할에 할당하기 위한 정책을 만들어 갑니다. 정책 작성에서 json 편집기를 열고 다음 json 파일을 복사하십시오. 이 작업이 끝나면 IAM 롤에 적절한 이름을 붙이고 연결하십시오.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"rds:Describe*",
"rds:StopDBInstance",
"rds:StartDBInstance"
],
"Resource": "arn:aws:rds:*:*:db:*"
}
]
}
Lambda 함수 만들기
다음으로 Lambda 함수를 만들겠습니다. Lambda의 대시보드에서 [함수 만들기] > [하나부터 만들기]를 선택하고 적절한 함수 이름을 입력하고, 런타임을 python3.7로 하고, 액세스 권한 곳에서 방금 만든 IAM 롤 할당해 봅시다. 【함수 작성】을 클릭하면 함수의 에디터 화면으로 천이한다고 생각하므로, 다음의 코드를 복사해 주세요.
import boto3
# 任意のDB識別子
db_instance = "sample_db"
def lambda_handler(event, context):
client = boto3.client('rds')
# DBの情報一覧が格納されている
informations = client.describe_db_instances(DBInstanceIdentifier=db_instance)
# DBの起動状態を取得
rds_stauts = informations["DBInstances"][0]["DBInstanceStatus"]
# DBが停止していた場合
if rds_stauts == "stopped":
print('DB already stopped.')
return
# DBが停止状態でなかった場合
else:
response = client.stop_db_instance(DBInstanceIdentifier = db_instance)
print('DB is stopping.')
return
프로그램 자체는 매우 간단합니다. DB의 식별자는 여러분의 DB에 맞추어 변경해 주세요.
describe_db_instances
에서 DB 인스턴스의 정보를 가져오고 있으며, 그 중에서 변수 rds_status
에 DB 상태를 문자열 형식으로 대입하고 있습니다. 자세한 내용은 공식 문서을 참조하십시오.여기까지 끝나면 실행합시다! 화면 오른쪽 상단의 [테스트]를 선택하고 이벤트 이름에 적절한 이름을 입력하십시오. 【만들기】버튼을 두고, 다시 한번 【테스트】를 실행하면 해당 DB정지되어 있는지 확인해 주십시오.
CloudWatch Events로 예약하기
마지막으로 CloudWatch Events에서 Lamda 함수를 정기 실행할 수 있도록 해 봅시다. CloudWatch 대시보드에서 [이벤트]를 선택합니다. 스케줄에 기반한 Cron 형식으로 실행하고 싶으므로 다음과 같이 입력해 봅시다.
위의 예에서는, 일본 시간으로 월요일부터 금요일의 17시 30분에 이벤트가 실행되게 됩니다. AWS에서의 표준시는 그리니치 표준시로 되어 있으므로 일본 시간으로 하기 위해서는 9시간 앞서야 한다는 점에 주의해 주세요. Cron식에 자세하게 알고 싶은 분은 공식 문서 를 참고해 주세요.
여기까지 끝나면 【타겟】의 곳에서 방금 작성한 Lambda 함수를 지정해 봅시다. 이것으로 완성입니다!
Reference
이 문제에 관하여(【AWS】Lambda×CloudWatch Events에서 RDS 자동 정지), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/panpanman/items/2c6531c23b0a42bc0cb5텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)