S3의 ElastiCache 클러스터 복원 문제를 해결하려면 어떻게 해야 합니까?

4분 분량
0

Amazon Simple Storage Service(S3)에서 Amazon ElastiCache for Redis 백업을 복원할 때 클러스터 생성이 실패합니다. "생성 실패" 또는 "권한 거부" 오류 메시지가 표시됩니다. 이 문제를 해결하려면 어떻게 해야 합니까?

간략한 설명

Amazon S3에서 ElastiCache 백업을 복원할 때 실패하는 일반적인 이유는 다음과 같습니다.

  • 백업 제한 범위를 벗어난 백업을 복원하려고 합니다.
  • ElastiCache가 Amazon S3에서 파일을 검색하지 못했습니다.
  • ElastiCache 백업 파일이 다른 리전의 Amazon S3 버킷에 있습니다.
  • 여러 데이터베이스가 포함된 .rdb 파일을 ElastiCache(클러스터 모드 활성화) 클러스터로 복원하고 있습니다.

해결 방법

백업 제한 범위를 벗어난 백업을 복원하려고 하는 경우

ElastiCache for Redis 백업을 복원할 때는 다음과 같은 백업 제약 조건에 유의해야 합니다.

  • Redis(클러스터 모드 활성화) 클러스터를 사용하여 생성한 백업에서 Redis(클러스터 모드 비활성화) 클러스터로 복원할 수 없습니다.
  • ElastiCache(클러스터 모드 활성화) 클러스터에서 만든 백업을 복원하는 경우 ElastiCache 콘솔에서 클러스터 모드 비활성화 옵션을 선택할 수 없습니다. 클러스터 모드 활성화 옵션만 사용할 수 있습니다.
  • ElastiCache(클러스터 모드 활성화) 클러스터 백업을 Amazon S3로 내보내면 여러 .rdb 파일이 생성됩니다(샤드당 하나씩). Amazon S3에서 백업을 시드하려는 경우 하나의 백업(.rdb)만 참조할 수 있습니다. 그러면 단일 샤드의 키가 시드됩니다. 와일드카드를 포함하여 이를 우회하려고 하면 다음 오류가 발생합니다.
    오류: S3 객체(examplebucket/cluster-mode-enabled-*.rdb)에 대한 객체 또는 버킷이 존재하지 않습니다.
  • 데이터 계층화를 사용하는 클러스터에서는 백업을 복원할 수 없습니다. 예를 들어 r6gd 노드를 r6g 노드와 같이 데이터 계층화를 사용하지 않는 클러스터로 복원할 수 없습니다.
  • .rdb 파일이 둘 이상의 데이터베이스를 참조하는 경우 Redis(클러스터 모드 비활성화) 클러스터에서 Redis(클러스터 모드 활성화) 클러스터로 복원할 수 없습니다. 이렇게 하려고 하면 다음 오류가 발생합니다.
    오류: 클러스터 모드에서 스냅샷을 복원하려면 RDB 파일의 모든 키가 DB 0에 있어야 합니다.

ElastiCache가 Amazon S3에서 파일을 검색하지 못한 경우

이 오류는 ElastiCache에 S3 버킷에 저장된 ElastiCache 백업에 액세스하는 데 필요한 권한이 없는 경우에 발생합니다. ElastiCache 이벤트를 검토하여 권한 문제를 확인할 수 있습니다.

다음 ElastiCache 이벤트 예시는 ElastiCache가 S3에서 백업 파일을 검색하지 못했기 때문에 Redis 복제 그룹 "테스트" 생성이 실패했음을 보여 줍니다.

Restore from snapshot failed for node group 0001 in replication group test. Failed to retrieve file from S3

오류의 원인이 ElastiCache가 Amazon S3에서 파일을 검색하지 못했기 때문임을 확인한 후 리전이 다음 중 하나인지 확인합니다.

옵트인 리전을 사용하려면 ElastiCache가 Amazon S3에서 백업 파일을 검색할 수 있도록 허용하는 버킷 정책이 필요합니다.

S3 버킷이 다음 리전 중 하나에 있는 경우 S3의 백업 파일에 대한 ElastiCache 서비스 액세스를 허용해야 합니다.

  • 중국(베이징), 중국(닝샤)
  • AWS GovCloud(미국 서부)
  • 기본 리전

참고: 중국(베이징), 중국(닝샤) 및 AWS GovCloud(미국 서부) 리전의 정식 ID는 기본 AWS 리전과 다릅니다.

중국(베이징), 중국(닝샤)

Canonical ID: b14d6a125bdf69854ed8ef2e71d8a20b7c490f252229b806e514966e490b8d83

AWS GovCloud(미국 서부) 리전

Canonical ID: 40fa568277ad703bd160f66ae4f83fc9dfdfd06c2f1b5060ca22442ac3ef8be6

AWS 기본 리전

Canonical ID: 540804c33a284a299d2547575ce1010f2312ef3da9b3a053c8bc45bf233e4353

정식 ID 또는 버킷 정책을 사용하여 Amazon S3의 .rdb 백업 객체에 대한 액세스 권한을 ElastiCache에 부여한 후 Redis 클러스터를 복원합니다.

ElastiCache 백업 파일이 다른 리전의 Amazon S3 버킷에 있는 경우

다음 오류 메시지는 다른 리전 내의 Amazon S3 버킷에 있는 ElastiCache 백업을 복원하려고 시도했음을 나타냅니다.

"S3 객체에 액세스할 수 있는 권한이 거부되었습니다. 동일한 리전의 S3 객체를 사용하세요."

이 문제를 해결하려면 다음을 수행합니다.

1.    백업이 포함된 S3 버킷의 백업(.rdb)을 Redis 클러스터가 복원되는 리전에 위치한 S3 버킷으로 복사합니다.

다음은 서로 다른 리전의 Amazon S3 버킷 간에 복사하는 데 사용할 수 있는 AWS Command Line Interface(AWS CLI) 명령의 예입니다.

aws s3 cp s3://SourceBucketName/BackupName.rdb s3://DestinationBucketName/BackupName.rdb --acl bucket-owner-full-control --source-region SourceRegionName --region DestinationRegionName

참고: AWS CLI 명령을 실행할 때 오류가 발생하는 경우, 최신 버전의 AWS CLI를 사용하고 있는지 확인합니다.

2.    복사가 완료되면 백업(.rdb) 객체에 정식 ID 또는 버킷 정책 형식으로 올바른 권한이 할당되었는지 확인합니다. 올바른 정식 ID에 대한 내용은 이전 섹션을 참조하세요.

이제 백업 객체가 올바른 리전에 복사되고 올바른 권한이 적용되었으므로 클러스터 복원을 계속 할 수 있습니다.

여러 데이터베이스가 포함된 .rdb 파일을 ElastiCache(클러스터 모드 활성화) 클러스터로 복원하는 경우

여러 데이터베이스가 포함된 Redis 백업(.rdb) 파일을 ElastiCache(클러스터 모드 활성화) 클러스터로 복원할 수 없습니다. ElastiCache(클러스터 모드 활성화)는 여러 데이터베이스를 지원하지 않습니다. 모든 키는 DB0에 있어야 합니다. ElastiCache 이벤트를 검토하여 이것이 복원 실패의 원인인지 확인할 수 있습니다.

다음 ElastiCache 이벤트 예시에서는 여러 데이터베이스가 포함된 .rdb 파일로 인해 Redis 복제 그룹 "테스트" 생성이 실패했음을 보여 줍니다.

Restore from snapshot failed for node group 0001 in replication group test. To restore a snapshot in cluster mode, all keys in the RDB file should reside in DB 0. Snapshot ID: arn:aws:s3:::example-bucket/multidb.rdb

이 문제를 해결하려면 다음을 수행합니다.

1.    모든 키가 단일 데이터베이스로 마이그레이션되었는지 확인합니다.

참고: 소스 데이터베이스가 ElastiCache Redis에 있는 경우 마이그레이션 명령은 지원되지 않습니다.

2.    모든 키가 동일한 데이터베이스에 있으면 Redis 데이터베이스의 로컬 백업을 생성하고 Amazon S3에 백업을 업로드한 다음 ElastiCache(클러스터 모드 활성화) 클러스터로 복원을 계속 할 수 있습니다.


AWS 공식
AWS 공식업데이트됨 2년 전