Amazon RDS 인스턴스를 7일 넘게 중지하려면 어떻게 해야 하나요?
Amazon Relational DatabaseService(RDS)를 7일 넘게 중지하고 싶습니다.
간략한 설명
몇 분 안에 Amazon RDS 인스턴스를 시작하고 중지할 수 있습니다. 이 기능은 항상 실행할 필요가 없는 데이터베이스에 대한 비용 절감을 지원합니다. 최대 7일 동안 데이터베이스 인스턴스를 중지할 수 있습니다. 7일 후에 DB 인스턴스를 수동으로 시작하지 않으면 인스턴스가 자동으로 시작됩니다. 이 조치는 인스턴스가 하드웨어, 기본 운영 체제 또는 데이터베이스 엔진 버전에 대한 필수 유지 관리 업데이트에 뒤처지지 않도록 하기 위해 수행됩니다.
필수 유지 관리 업데이트를 놓치지 않고 7일 넘게 RDS 인스턴스를 중지하려면 다음 단계를 수행합니다.
1. AWS Lambda가 다음을 수행할 수 있도록 AWS Identity Access Management(IAM) 권한을 설정합니다. 인스턴스를 시작합니다. 인스턴스를 중지합니다. 인스턴스에 대한 정보를 검색합니다.
2. 자동으로 시작 및 중지할 RDS 인스턴스에 태그를 추가합니다.
3. DB 인스턴스를 시작하는 Lambda 함수를 생성합니다.
4. DB 인스턴스를 중지하는 Lambda 함수를 생성합니다.
5. 다음 작업을 수행할 일정을 세웁니다. 주간 유지 관리 기간이 시작될 때 DB 인스턴스를 시작합니다. 유지 관리 기간이 끝날 때 DB 인스턴스를 중지합니다.
해결 방법
IAM 권한 구성
Lambda가 인스턴스를 시작 및 중지하고 인스턴스에 대한 정보를 검색하도록 허용하는 IAM 정책을 생성합니다.
1. IAM 콘솔을 엽니다.
2. 탐색 창에서 [Policies]를 선택합니다.
3. 정책 생성을 선택합니다.
4. [JSON] 탭을 선택합니다.
5. 다음 정책을 복사하고 JSON 탭 아래에 정책을 붙여 넣어 필요한 IAM 권한을 부여합니다.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "rds:StartDBCluster", "rds:StopDBCluster", "rds:ListTagsForResource", "rds:DescribeDBInstances", "rds:StopDBInstance", "rds:DescribeDBClusters", "rds:StartDBInstance" ], "Resource": "*" } ] }
6. 다음: 태그를 선택합니다.
7. (선택 사항) 태그를 추가하려면 태그 추가를 선택한 다음 키 및 값-옵션 필드에 적절한 값을 입력합니다.
8. 다음: 검토를 선택합니다.
9. 정책 검토 페이지에서 이름란에 정책의 이름을 입력합니다. 요약 섹션을 검토하여 정책에 의해 부여된 권한을 확인합니다.
10. 정책 생성을 선택합니다.
자세한 내용은 JSON 탭에서 정책 만들기를 참조하십시오.
IAM 역할을 생성한 다음 필요한 정책 연결
1. IAM 콘솔을 엽니다.
2. 탐색 창에서 [Roles]를 선택합니다.
3. **역할 생성(Create Role)**을 선택합니다.
4. 신뢰할 수 있는 유형의 엔터티 선택에서 AWS 서비스를 선택합니다.
5. 또는 서비스를 선택하여 사용 사례 보기에서 Lambda를 선택합니다.
6. [다음: 권한]을 선택합니다.
7. Filter-policies(필터 정책)에는 이전 섹션에서 생성한 정책 이름을 입력합니다. 표시되면 해당 정책을 선택합니다. Filter-policies(필터 정책)에 AWSLambdaBasicExecutionRole을 입력합니다. 표시되면 AWSLambdaBasicExecutionRole 관리형 정책을 선택합니다.
8. 다음: 태그를 선택합니다.
9. (선택 사항) 태그를 추가하려면 키 및 값(선택 사항) 필드에 적절한 값을 입력합니다.
10. [Next: Review]를 선택하십시오.
11. 역할 만들기 페이지에서 역할 이름에 생성 중인 역할의 이름을 입력합니다.
12. [Create role]을 선택합니다.
자세한 내용은 AWS 서비스(콘솔)에 대한 역할 생성을 참조하세요.
DB 인스턴스에 태그 추가
1. Amazon RDS 콘솔을 엽니다.
2. 탐색 창에서 데이터베이스를 선택합니다.
3. 자동으로 시작 및 중지할 DB 인스턴스를 선택합니다.
4. 세부 정보 섹션에서 태그 섹션까지 아래로 스크롤합니다.
5. 태그 탭에서 추가를 선택합니다. 태그 키에는 자동 시작을 입력합니다. 값에는 예를 입력합니다. 추가를 선택하여 변경 내용을 저장합니다.
6. 추가를 다시 선택합니다. 태그 키에는 AutoStop을 입력합니다. 값에는 예를 입력합니다. 추가를 선택하여 변경 내용을 저장합니다.
자세한 내용은 태그 추가, 나열 및 제거를 참조하십시오.
Lambda 함수를 생성하여 태그가 지정된 DB 인스턴스를 시작
1. Lambda 콘솔을 엽니다.
2. 탐색 창에서 함수를 선택합니다.
3. [함수 생성]을 선택합니다.
4. 새로 작성을 선택합니다.
5. 함수 이름에 함수 이름을 입력합니다.
6. 런타임에서 Python 3.7을 선택합니다.
7. 아키텍처는 기본 선택 항목인 x86_64를 그대로 둡니다.
7. 기본 실행 역할 변경을 확장합니다.
8. 실행 역할의 경우 기존 역할 사용을 선택합니다.
9. 기존 역할은 이전에 생성한 IAM 역할을 선택합니다.
10. 함수 생성을 선택합니다.
11. 코드 탭을 선택합니다.
12. Code source(코드 소스) 편집기에서 샘플 코드를 삭제하고 다음 코드를 복사하여 붙여 넣습니다.
import boto3 rds = boto3.client('rds') def lambda_handler(event, context): #Start DB Instances dbs = rds.describe_db_instances() for db in dbs['DBInstances']: #Check if DB instance stopped. Start it if eligible. if (db['DBInstanceStatus'] == 'stopped'): try: GetTags=rds.list_tags_for_resource(ResourceName=db['DBInstanceArn'])['TagList'] for tags in GetTags: #if tag "autostart=yes" is set for instance, start it if(tags['Key'] == 'autostart' and tags['Value'] == 'yes'): result = rds.start_db_instance(DBInstanceIdentifier=db['DBInstanceIdentifier']) print ("Starting instance: {0}.".format(db['DBInstanceIdentifier'])) except Exception as e: print ("Cannot start instance {0}.".format(db['DBInstanceIdentifier'])) print(e) if __name__ == "__main__": lambda_handler(None, None)
13. 파일을 선택하고 저장을 선택한 다음 배포를 선택합니다.
15. 구성 탭을 선택하고 일반 구성을 선택한 다음 편집을 선택합니다.
16. 시간 초과에서 다음을 수행합니다. 분은 0을 선택합니다. 초는 10을 선택합니다.
17. Save(저장)를 선택합니다.
태그가 지정된 DB 인스턴스를 중지하는 Lambda 함수 생성
태그가 지정된 DB 인스턴스를 중지하는 Lambda 함수를 생성하려면 이전 섹션 태그가 지정된 DB 인스턴스를 시작하는 Lambda 함수 생성을 참조하세요. 동일한 단계를 따르다가 12단계에서는 다른 코드를 사용합니다.
Code source(코드 소스) 편집기에서 샘플 코드를 삭제하고 다음 코드를 복사하여 붙여 넣습니다.
import boto3 rds = boto3.client('rds') def lambda_handler(event, context): #Stop DB instances dbs = rds.describe_db_instances() for db in dbs['DBInstances']: #Check if DB instance is not already stopped if (db['DBInstanceStatus'] == 'available'): try: GetTags=rds.list_tags_for_resource(ResourceName=db['DBInstanceArn'])['TagList'] for tags in GetTags: #if tag "autostop=yes" is set for instance, stop it if(tags['Key'] == 'autostop' and tags['Value'] == 'yes'): result = rds.stop_db_instance(DBInstanceIdentifier=db['DBInstanceIdentifier']) print ("Stopping instance: {0}.".format(db['DBInstanceIdentifier'])) except Exception as e: print ("Cannot stop instance {0}.".format(db['DBInstanceIdentifier'])) print(e) if __name__ == "__main__": lambda_handler(None, None)
함수 테스트 수행
Stopped(중지됨) 상태인 태그 지정된 DB 인스턴스에서 함수 테스트를 수행하려면 다음 단계를 완료합니다.
1. Lambda Functions(Lambda 함수) 목록을 엽니다.
2. DB 인스턴스를 시작하기 위해 생성한 함수를 선택합니다*.*
3. [작업]을 선택한 다음, [테스트]를 선택합니다.
4. 테스트 탭에서 이름에 이벤트 이름을 입력합니다.
5. 변경 사항 저장을 선택한 다음테스트를 선택합니다.
일정 수립
규칙을 생성하여 일정을 설정할 수 있습니다. 예를 들어, 태그가 지정된 DB 인스턴스의 주간 유지 관리 기간이 일요일 22:00~22:30인 경우 다음 규칙을 생성할 수 있습니다.
- 유지 관리 기간이 시작되기 30분 전에 DB 인스턴스 자동 시작
- 유지 관리 기간이 종료되고 30분 후에 DB 인스턴스 자동 중지
유지 관리 기간 30분 전에 DB 인스턴스를 자동으로 시작하는 규칙을 생성하려면 다음 단계를 수행합니다.
1. Lambda Functions(Lambda 함수) 목록을 엽니다.
2. DB 인스턴스를 시작하기 위해 생성한 함수를 선택합니다.
3. Function overview(함수 개요)에서 Add trigger(트리거 추가)를 선택합니다.
4. **EventBridge(CloudWatch Events)**를 선택한 다음 새 규칙 만들기를 선택합니다.
5. 규칙 이름은 생성하고자 하는 규칙 이름을 입력합니다.
6. 일정 표현식의 경우 자동화된 일정에 대한 cron 표현식을 추가합니다(예: cron(30 21 ? * SUN *)).
7. Add(추가)를 선택합니다.
유지 관리 기간이 30분 지난 후에 DB 인스턴스를 자동으로 중지하는 또 다른 규칙을 생성하는 동일한 지침을 사용합니다. 이에 따라 자동화된 일정에 대한 규칙 이름과 cron 표현식을 변경합니다(예: cron(00 23 ? * SUN *)).
관련 정보

관련 콘텐츠
- 질문됨 4달 전lg...
- 질문됨 22일 전lg...
- 질문됨 15일 전lg...
- 질문됨 7일 전lg...
- 질문됨 4달 전lg...
- AWS 공식업데이트됨 3년 전
- AWS 공식업데이트됨 8달 전
- AWS 공식업데이트됨 3달 전
- AWS 공식업데이트됨 일 년 전