내용으로 건너뛰기

Aurora 클러스터를 7일 이상 중지하려면 어떻게 해야 합니까?

3분 분량
0

Amazon Aurora 클러스터를 7일 이상 중지하는 방법을 알고 싶습니다.

해결 방법

IAM 권한 구성

다음 AWS Identity and Access Management(IAM) 정책을 만들어 AWS Lambda가 클러스터를 시작 및 중지하고 클러스터에서 정보를 검색하도록 허용합니다.

{
  "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": "*"
    }
  ]
}

참고: 모든 리소스에 와일드카드(*)를 사용하거나, 클러스터의 Amazon 리소스 이름(ARN)을 지정하십시오.

IAM 역할을 만들고, 필요한 IAM 정책 연결

IAM 콘솔을 사용해 IAM 역할을 만들고 필요한 정책을 연결합니다. 서비스 또는 사용 사례Lambda를 선택합니다. 권한 정책의 경우, AWSLambdaBasicExecutionRole 정책을 선택하고 앞서 만든 정책을 선택합니다.

DB 클러스터에 태그 추가

Amazon Relational Databases(Amazon RDS) 콘솔을 사용해 DB 클러스터에 태그 두 개를 추가합니다. autostart를 입력한 다음, yes를 입력합니다. 다른 태그 추가를 선택하고, autostop, yes를 입력합니다.

DB 클러스터를 시작 및 중지할 Lambda 함수 만들기

클러스터를 시작하는 Lambda 함수를 만들려면 다음 단계를 완료하십시오.

  1. Lambda 콘솔을 엽니다.
  2. 탐색 창에서 함수를 선택합니다.
  3. 함수 만들기를 선택합니다.
  4. 새로 작성을 선택합니다.
  5. 함수 이름에 함수의 이름을 입력합니다.
  6. 런타임Python 3.13을 선택합니다.
  7. 아키텍처의 경우, 기본 선택인 x86_64를 유지하십시오.
  8. 기본 실행 역할 변경을 펼칩니다.
  9. 실행 역할에서 기존 역할 사용을 선택합니다.
  10. 기존 역할로 IAM 역할을 선택합니다.
  11. 함수 만들기를 선택합니다.
  12. 코드 탭을 선택합니다.
  13. 코드 소스 편집기에서 예시 코드를 삭제하고 다음 코드를 입력합니다.
import boto3
rds = boto3.client('rds')

def lambda_handler(event, context):
    #Start DB clusters
    dbs = rds.describe_db_clusters()
    for db in dbs['DBClusters']:
        #Check if DB cluster stopped. Start it if eligible.
        if (db['Status'] == 'stopped'):
            try:
                GetTags = rds.list_tags_for_resource(ResourceName=db['DBClusterArn'])['TagList']
                for tags in GetTags:
                    #if tag "autostart=yes" is set for cluster, start it
                    if(tags['Key'] == 'autostart' and tags['Value'] == 'yes'):
                        result = rds.start_db_cluster(DBClusterIdentifier=db['DBClusterIdentifier'])
                        print("Starting cluster: {0}.".format(db['DBClusterIdentifier']))
            except Exception as e:
                print("Cannot start cluster {0}.".format(db['DBClusterIdentifier']))
                print(e)

if __name__ == "__main__":
    lambda_handler(None, None)
  1. 배포를 선택합니다.
  2. 구성 탭을 선택하고, 다음으로 편집을 선택합니다.
  3. 시간 제한의 경우, 에는 0을, 에는 10을 선택합니다.
  4. 저장을 선택합니다.

클러스터를 중지할 Lambda 함수를 만들려면 앞선 단계를 반복합니다. 코드 소스 편집기에서 다음 코드를 입력합니다.

import boto3
rds = boto3.client('rds')

def lambda_handler(event, context):
    #Stop DB clusters
    dbs = rds.describe_db_clusters()
    for db in dbs['DBClusters']:
        #Check if DB cluster started. Stop it if eligible.
        if (db['Status'] == 'available'):
            try:
                GetTags = rds.list_tags_for_resource(ResourceName=db['DBClusterArn'])['TagList']
                for tags in GetTags:
                #if tag "autostop=yes" is set for cluster, stop it
                    if(tags['Key'] == 'autostop' and tags['Value'] == 'yes'):
                        result = rds.stop_db_cluster(DBClusterIdentifier=db['DBClusterIdentifier'])
                        print ("Stopping cluster: {0}.".format(db['DBClusterIdentifier']))
            except Exception as e:
                print ("Cannot stop cluster {0}.".format(db['DBClusterIdentifier']))
                print(e)


if __name__ == "__main__":
    lambda_handler(None, None)

함수 테스트

함수를 테스트하기 전에 DB 클러스터를 중지하십시오. 그런 다음, Lambda 콘솔을 사용하여 함수를 간접적으로 호출합니다. 저장된 이벤트 편집에서 이벤트를 선택합니다.

DB 클러스터를 자동으로 시작 및 중지할 일정 만들기

Amazon EventBridge Scheduler를 사용하여 유지 관리 기간 이전 및 이후 지정된 시간에 클러스터를 시작하고 중지하는 일정을 만들 수 있습니다. 일정 유형으로 Cron 기반 일정을 선택한 다음 cron 표현식을 입력하십시오.

관련 정보

Lambda 함수를 사용하여 Amazon RDS 인스턴스를 7일 이상 중지하려면 어떻게 해야 합니까?

AWS 공식업데이트됨 9달 전