Aurora PostgreSQL 호환 DB 클러스터의 스냅샷 복원 문제를 해결하려면 어떻게 해야 합니까?
Amazon Aurora PostgreSQL 호환 버전 데이터베이스(DB) 클러스터 스냅샷에서 복원할 때 발생하는 스냅샷 복원 오류를 해결하고 싶습니다.
해결 방법
참고: AWS Command Line Interface(AWS CLI) 명령을 실행할 때 오류가 발생하면 AWS CLI의 오류 해결을 참조하십시오. 또한 최신 AWS CLI 버전을 사용하고 있는지 확인하십시오.
스냅샷 복원 오류를 해결하기 전에 스냅샷이 대상 구성과 호환되고 필요한 권한이 있는지 확인하십시오.
복원 전 스냅샷 호환성 확인
스냅샷을 복원하기 전에 버전 호환성을 확인하여 오류를 방지하십시오.
스냅샷 상태 및 엔진 버전 확인
스냅샷을 복원하기 전에 콘솔 또는 AWS CLI를 사용하여 버전 호환성을 확인할 수 있습니다.
콘솔을 사용하려면 다음 단계를 완료합니다.
- Amazon Relational Database Service(Amazon RDS) 콘솔을 엽니다.
- 스냅샷을 선택합니다.
- 스냅샷을 선택합니다.
- 세부 정보 탭을 선택한 후 다음 구성을 확인합니다.<br id=hardline_break/> 엔진 파라미터가 aurora-postgresql인지 확인합니다.<br id=hardline_break/> 엔진 버전이 대상 버전과 호환되는지 확인합니다.<br id=hardline_break/> 상태가 사용 가능으로 설정되어 있는지 확인합니다.
AWS CLI를 사용하여 사용 가능한 모든 Aurora PostgreSQL 호환 버전을 나열하려면 다음 describe-db-engine-versions 명령을 실행합니다.
aws rds describe-db-engine-versions \ --engine aurora-postgresql \ --query "DBEngineVersions[?EngineVersion=='your-snapshot-version'].ValidUpgradeTarget[*].EngineVersion" \ --region your-region
참고: your-snapshot-version을 스냅샷의 엔진 버전으로, your-region을 AWS 리전으로 바꾸십시오.
IAM 권한 확인
스냅샷을 복원하려면 AWS Identify and Access Management(IAM) 사용자 또는 역할에 필요한 권한이 있어야 합니다.
현재 권한을 확인하려면 다음 get-user AWS CLI 명령을 실행합니다.
aws iam get-user --region your-region
참고: your-region을 해당 AWS 리전으로 바꾸십시오.
IAM 정책 예시:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "rds:RestoreDBClusterFromSnapshot", "rds:CreateDBInstance", "rds:DescribeDBSnapshots", "rds:DescribeDBClusters", "rds:DescribeDBInstances" ], "Resource": "*" } ] }
IAM 권한 오류 해결
필요한 Amazon RDS 권한이 없는 경우 다음과 같은 오류 메시지가 나타납니다.
"User is not authorized to perform: rds:RestoreDBClusterFromSnapshot"
이 오류를 해결하려면 필요한 Amazon RDS 권한을 IAM 정책에 추가하십시오. 다음 단계를 완료하십시오.
-
IAM 콘솔을 엽니다.
-
탐색 창에서 사용자 또는 역할을 선택합니다.
-
사용자 또는 역할 이름을 선택합니다.
-
권한 추가를 선택합니다.
-
인라인 정책 생성을 선택하거나 IAM 엔터티에 이미 연결된 정책을 편집합니다.
-
JSON 탭을 선택합니다.
-
스냅샷 복원에 필요한 권한이 포함된 정책을 입력합니다.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "rds:RestoreDBClusterFromSnapshot", "rds:CreateDBInstance", "rds:DescribeDBSnapshots", "rds:DescribeDBClusterSnapshots", "rds:DescribeDBClusters", "rds:DescribeDBInstances" ], "Resource": "*" } ] } -
다음을 선택합니다.
-
정책 이름을 입력합니다. 예를 들어 RDSSnapshotRestorePolicy를 입력합니다.
-
정책 만들기를 선택합니다.
AWS KMS 암호화 권한 오류 해결
적절한 AWS Key Management Service(AWS KMS) 권한 없이 암호화된 스냅샷을 복원하려고 하면 다음 오류 메시지 중 하나가 표시됩니다.
"Unable to restore from encrypted snapshot"
"KMS key access denied"
오류를 해결하려면 스냅샷에서 사용하는 AWS KMS 키를 확인한 다음 필요한 AWS KMS 권한을 IAM 정책에 추가하십시오.
스냅샷에서 사용하는 AWS KMS 키를 확인하려면 다음 describe-db-cluster-snapshots 명령을 실행하십시오.
aws rds describe-db-cluster-snapshots \ --db-cluster-snapshot-identifier your-snapshot-id \ --region your-region
참고: your-snapshot-id를 스냅샷 식별자로, your-region을 AWS 리전으로 바꾸십시오.
그런 다음 AWS KMS 권한을 IAM 정책에 추가합니다.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:CreateGrant", "kms:DescribeKey", "kms:GenerateDataKey" ], "Resource": "arn:aws:kms:region:account-id:key/key-id" } ] }
참고: region을 AWS 리전으로, account-id를 AWS 계정 ID로, key-id를 AWS KMS 키 ID로 바꾸십시오.
스냅샷을 찾을 수 없음 오류 해결
존재하지 않거나 액세스할 수 없는 스냅샷에서 복원하려고 하면 다음과 같은 오류 메시지가 나타납니다.
"DBClusterSnapshotNotFoundFault: DBClusterSnapshot snapshot-id not found"
이 오류를 해결하려면 스냅샷이 존재하고 액세스 권한이 있는지 확인하십시오.
계정에서 사용 가능한 스냅샷을 나열하려면 다음 describe-db-cluster-snapshot 명령을 실행합니다.
aws rds describe-db-cluster-snapshots \ --region your-region
참고: your-region을 해당 AWS 리전으로 바꾸십시오.
스냅샷이 다른 AWS 계정에서 공유된 경우, 해당 스냅샷이 내 계정과 공유되었고 공유를 수락했는지 확인하십시오.
잘못된 파라미터 오류 해결
복원 중에 호환되지 않는 인스턴스 클래스를 지정하면 다음과 같은 오류 메시지가 나타납니다.
"InvalidParameterValue: Invalid DB Instance class"
이 오류를 해결하려면 Aurora PostgreSQL 호환 버전의 호환 가능한 인스턴스 클래스를 선택하십시오.
대상 엔진 버전에 유효한 인스턴스 클래스를 나열하려면 다음 describe-orderable-db-instance-options 명령을 실행합니다.
aws rds describe-orderable-db-instance-options \ --engine aurora-postgresql \ --engine-version your-version \ --region your-region
참고: your-version을 PostgreSQL 버전(예: 15.4)으로 바꾸십시오. your-region을 해당 AWS 리전으로 바꾸십시오.
출력을 검토하고 대상 엔진 버전과 필수 기능을 지원하는 인스턴스 클래스를 선택합니다.
서브넷 그룹 오류 해결
복원 중에 잘못된 서브넷을 지정하면 다음과 같은 오류 메시지가 나타납니다.
"InvalidSubnet: The requested subnet is not valid"
이 오류를 해결하려면 DB 서브넷 그룹의 서브넷이 여러 가용 영역에 있는지 확인하십시오.
서브넷 그룹 구성을 확인하려면 다음 describe-db-subnet-groups 명령을 실행합니다.
aws rds describe-db-subnet-groups \ --db-subnet-group-name your-subnet-group \ --region your-region
참고: your-subnet-group을 DB 서브넷 그룹 이름으로, your-region을 AWS 리전으로 바꾸십시오.
서브넷 그룹에 있는 서브넷이 2개 이상의 가용 영역에 있는지 확인합니다. 서브넷 그룹의 서브넷이 여러 가용 영역에 없는 경우 서브넷 그룹을 수정하여 추가 가용 영역에 서브넷을 추가할 수 있습니다.
교차 계정 AWS KMS 키 액세스 오류 해결
적절한 AWS KMS 권한 없이 다른 AWS 계정에서 공유한 암호화된 스냅샷을 복원하려고 하면 다음과 같은 오류 메시지가 나타납니다.
"AccessDenied: Cross-account pass role is not allowed"
이 오류를 해결하려면 AWS KMS 키 정책이 교차 계정 액세스를 허용하고 IAM 역할에 필요한 권한이 있는지 확인하십시오.
AWS KMS 키 정책을 확인하려면 다음 get-key-policy 명령을 실행합니다.
aws kms get-key-policy \ --key-id your-key-id \ --policy-name default \ --region your-region
참고: your-key-id를 AWS KMS 키 ID로, your-region을 AWS 리전으로 바꾸십시오.
권한 부여를 복호화하고 생성할 수 있는 액세스 권한을 AWS 계정에 부여하는 설명이 키 정책에 포함되어 있는지 확인하십시오. AWS KMS 키 정책을 업데이트할 수 없는 경우 스냅샷 소유자에게 문의하여 AWS KMS 키 정책을 업데이트하십시오.
교체 계정의 암호화된 스냅샷의 경우 공유 스냅샷에서 직접 복원할 수 없습니다. 대신 자체 AWS KMS 키를 사용하여 공유 스냅샷을 계정에 복사한 다음 복사본에서 복원하십시오. 자세한 내용은 암호화된 스냅샷 공유를 참조하십시오.
엔진 버전 호환성 문제 해결
호환되지 않는 엔진 버전으로 복원하려고 하면 복원 프로세스 중에 오류가 발생할 수 있습니다.
오류를 해결하려면 대상 버전이 스냅샷의 PostgreSQL 버전 이상이어야 합니다. 하위 버전으로는 복원할 수 없습니다.
사용 가능한 Aurora PostgreSQL 호환 버전을 확인하려면 다음 describe-db-engine-versions 명령을 실행합니다.
aws rds describe-db-engine-versions \ --engine aurora-postgresql \ --region your-region
참고: your-region을 해당 AWS 리전으로 바꾸십시오.
출력을 검토하여 복원 대상과 호환되는 엔진 버전을 파악하십시오.
인스턴스 클래스 호환성 문제 해결
대상 엔진 버전이나 필요한 기능을 지원하지 않는 인스턴스 클래스를 선택하면 복원이 실패할 수 있습니다.
이 문제를 해결하려면 워크로드에 필요한 스토리지와 메모리가 있는 인스턴스 클래스를 선택하십시오. 인스턴스 클래스가 복원하려는 Aurora PostgreSQL 호환 버전을 지원하고 성능 개선 도우미와 같은 특정 기능을 지원하는지 확인하십시오.
인스턴스 클래스 호환성을 확인하려면 describe-orderable-db-instance-options 명령을 실행합니다.
aws rds describe-orderable-db-instance-options \ --engine aurora-postgresql \ --engine-version your-version \ --region your-region
참고: your-version을 PostgreSQL 버전(예: 15.4)으로 바꾸십시오. your-region을 해당 AWS 리전으로 바꾸십시오.
