OpenSearch Service 클러스터의 수동 스냅샷 오류를 해결하려면 어떻게 해야 합니까?

6분 분량
0

Amazon OpenSearch Service 클러스터의 수동 스냅샷을 복원하려고 했지만 리포지토리를 등록하거나 액세스하려고 할 때 오류가 발생했습니다.

간략한 설명

OpenSearch Service의 수동 스냅샷에서 데이터를 마이그레이션하려면 다음 단계를 완료하세요.

1.    스냅샷을 저장할 Amazon Simple Storage Service(Amazon S3) 버킷을 선택합니다.

2.    Amazon S3 버킷을 OpenSearch Service 소스 클러스터에 등록합니다.

3.    OpenSearch Service 소스 클러스터의 스냅샷을 만든 다음 Amazon S3 버킷에 저장합니다.

4.    대상 클러스터를 동일한 Amazon S3 버킷에 등록하여 수동 스냅샷을 볼 수 있는지 확인합니다.

5.    OpenSearch Service의 대상 클러스터에 수동 스냅샷을 복원합니다.

그렇지 않으면 다음 오류 중 하나가 발생할 수 있습니다.

  • 403 승인되지 않은 오류
  • illegal_state_exception
  • repository_missing_exception
  • concurrent_snapshot_execution_exception
  • snapshot_restore_exception
  • a_w_s_security_token_service_exception
  • “PARTIAL” 스냅샷 상태
  • Amazon Simple Storage Service Glacier(Amazon S3 Glacier) 스토리지 클래스 문제

해결 방법

403 승인되지 않은 오류

OpenSearch Service 도메인에서 세분화된 액세스 제어(FGAC)를 활성화한 경우, 스냅샷을 생성할 때 다음과 같은 오류가 발생할 수 있습니다.

{
    "error": {
        "root_cause": [{
            "type": "security_exception",
            "reason": "no permissions for [cluster:admin/repository/put] and User [name=arn:aws:iam::012345678912:user/username, backend_roles=[], requestedTenant=null]"
    }],
        "type": "security_exception",
        "reason": "no permissions for [cluster:admin/repository/put] and User [name=arn:aws:iam::012345678912:user/username, backend_roles=[], requestedTenant=null]"
    },
    "status": 403
}

403 승인되지 않은 오류를 해결하려면 수동 스냅샷을 만들 때 사용자 이름:암호 매개 변수를 지정해야 합니다.

curl -XPUT -u 'opensearch-domain-endpoint/_snapshot/snapshot-repository-name/snapshot-name'

**참고:**OpenSearch Service 도메인에 대한 세분화된 액세스 제어를 활성화하려면 슈퍼 사용자여야 합니다. 슈퍼 사용자 이름과 암호를 사용하거나 AWS Identity Access Management(IAM) 역할을 슈퍼 사용자로 설정할 수 있습니다. 클러스터 스냅샷에 액세스할 때 슈퍼 사용자 보안 인증 또는 IAM 역할을 지정합니다. IAM 역할을 지정하는 경우 IAM 역할은 sigv4를 사용하여 HTTP 요청에 서명해야 합니다. 세분화된 액세스 제어 및 IAM 역할 사용에 대한 자세한 내용을 보려면 OpenSearch Service 도메인 생성 및 관리를 참조하세요.

또한 스냅샷에 스냅샷 리포지토리를 등록하고 manage_snapshots 역할을 IAM 역할에 매핑해야 합니다. manage_snapshots 역할에 유효한 권한(IAM:PassRole)이 있어야 IAM 역할(스냅샷 역할)을 맡을 수 있습니다. 자세한 내용을 보려면 사전 요구 사항을 참조하세요.

**manage_snapshotss ** 역할을 IAM 역할에 매핑하려면 다음 단계를 완료하세요.

1.    OpenSearch Service 콘솔을 기본 사용자로 엽니다.

2.    보안을 선택합니다.

3.    역할을 선택합니다.

4.    manage_snapshots을 역할로 선택합니다.

5.    매핑된 사용자를 선택합니다.

6.    매핑 관리를 선택합니다.

7.   사용자 아래에서 사용자 ARN(예: "arn:aws:iam::012345678912:user/username")을 추가합니다.

8.    수동 스냅샷 리포지토리를 등록합니다.

illegal_state_exception

수동 스냅샷을 생성하기 위해 여러 도메인에 Amazon S3 버킷을 사용할 때 다음 오류가 발생합니다.

{
  "error": {
    "root_cause": [
      {
        "type": "illegal_state_exception",
        "reason": "Can't get text on a FIELD_NAME at 1:1838"
      }
    ],
    "type": "illegal_state_exception",
    "reason": "Can't get text on a FIELD_NAME at 1:1838"
  },
  "status": 500
}

이 문제를 해결하려면 새 Amazon S3 버킷을 생성하고 수동 스냅샷을 찍거나 기존 버킷에서 모든 데이터를 지우세요.

Repository_missing_exception

수동 인덱스 스냅샷을 찍기 전에 OpenSearch Service에 수동 스냅샷 리포지토리를 등록해야 합니다. 또한 Amazon S3와 함께 작동하려면 IAM 역할(스냅샷 역할)을 설정해야 합니다.

수동 스냅샷을 만들기 전에 스냅샷 리포지토리를 등록하지 않았거나 잘못된 리포지토리 이름을 사용하는 경우 다음 오류가 발생합니다.

{
    "error": {
        "root_cause": [{
            "type": "repository_missing_exception",
            "reason": "[snapshot-repository-name] missing"
        }],
        "type": "repository_missing_exception",
        "reason": "[snapshot-repository-name] missing"
    },
    "status": 404
}

이 오류를 해결하려면 수동 스냅샷 사전 요구 사항을 충족해야 합니다. 또한 리포지토리 이름에 오타가 없는지 확인하세요.

Concurrent_snapshot_execution_exception

스냅샷이 진행 중인 경우 다른 스냅샷을 만들려고 하면 다음 오류가 발생합니다.

{
    "error": {
        "root_cause": [{
            "type": "concurrent_snapshot_execution_exception",
            "reason": "[snapshot-repository-name:snapshot-name] a snapshot is already running"
        }],
        "type": "concurrent_snapshot_execution_exception",
        "reason": "[snapshot-repository-name:snapshot-name] a snapshot is already running"
    }
}

진행 중인 다른 스냅샷이 있는지 확인하려면 다음 명령을 실행합니다.

curl -XGET 'opensearch-domain-endpoint/_snapshot/_status'

스냅샷이 이미 진행 중이면 현재 스냅샷이 완료될 때까지 기다리세요. 또는 스냅샷이 멈췄다고 생각되면 시간별 스냅샷 기록을 확인하세요. 자세한 내용을 보려면 인덱스를 삭제하거나 OpenSearch Service 클러스터를 업그레이드할 수 없는 이유는 무엇인가요?를 참조하세요.

Snapshot_restore_exception

온프레미스 클러스터에서 OpenSearch Service 도메인으로 데이터를 마이그레이션하려고 하면 다음과 같은 예외 오류가 발생할 수 있습니다.

{
    "error": {
        "root_cause": [{
            "type": "snapshot_restore_exception",
            "reason": "[manual-snapshot-repo:my-manual-snapshot1/HPOcIJryTj6a6GJvyP79bw] the snapshot was created with Elasticsearch version [6.8.0] which is higher than the version of this node [6.7.0]"
        }],
        "type": "snapshot_restore_exception",
        "reason": "[manual-snapshot-repo:my-manual-snapshot1/HPOcIJryTj6a6GJvyP79bw] the snapshot was created with Elasticsearch version [6.8.0] which is higher than the version of this node [6.7.0]"
    },
    "status": 500
}

이 오류 메시지는 기존 클러스터에서 생성한 스냅샷이 OpenSearch Service와 다른 버전의 Elasticsearch에서 실행될 때 발생합니다. 클러스터가 OpenSearch Service보다 이전 버전의 Elasticsearch에서 실행되고 있는 경우 Elasticsearch 버전을 업그레이드하세요. 또는 원격 재색인 API를 사용하여 인덱스를 마이그레이션할 수 있습니다.

도메인의 FGAC가 활성화된 상태에서 스냅샷에서 모든 인덱스를 복원하려고 하면 다음과 유사한 403 오류가 발생할 수 있습니다.

{
  "error" : {
    "root_cause" : [
      {
        "type" : "security_exception",
        "reason" : "no permissions for [] and User [name=RahulSarkar, backend_roles=[], requestedTenant=]"
      }
    ],
    "type" : "security_exception",
    "reason" : "no permissions for [] and User [name=RahulSarkar, backend_roles=[], requestedTenant=]"
  },
  "status" : 403
}

이 오류를 해결하려면 다음과 유사한 보안 인덱스를 제외하세요.

curl -XPOST 'username:password' "https://opensearch-domain-endpoint/_snapshot/snapshot-repository/snapshot-id/_restore" -H 'Content-Type: application/json' -d'
{
  "indices": "-.opensearch*,-.opendistro*,-.kibana*"
}'

a_w_s_security_token_service_exception

수동 스냅샷과 연결된 IAM 역할에 “es.amazonaws.com”에 대한 신뢰 관계가 설정되어 있지 않은 경우 다음과 같은 예외 오류가 발생합니다.

{
    "error": {
        "root_cause": [{
            "type": "repository_exception",
            "reason": "[es_01082021_repo] Could not determine repository generation from root blobs"
        }],
        "type": "repository_exception",
        "reason": "[es_01082021_repo] Could not determine repository generation from root blobs",
        "caused_by": {
            "type": "i_o_exception",
            "reason": "Exception when listing blobs by prefix [index-]",
            "caused_by": {
                "type": "a_w_s_security_token_service_exception",
                "reason": "a_w_s_security_token_service_exception: User: arn:aws:sts::332315457451:assumed-role/cp-sts-grant-role/swift-us-west-2-prod-679203657591 is not authorized to perform: sts:AssumeRole on resource: arn:aws:iam::679203657591:role/ES_Backup_Role (Service: AWSSecurityTokenService; Status Code: 403; Error Code: AccessDenied; Request ID: 36d09b93-d94f-457e-8fa5-b0a50ba436c3)"
            }
        }
    },
    "status": 500
}

OpenSearch Service 스냅샷을 사용하면 내부 역할이 생성됩니다(예: arn:aws:sts: :332315457451:assumed-role/cp-sts-grant-role/swift-us-west-2-prod-679203657591). 이 내부 역할은 수동 스냅샷과 연결된 IAM 역할을 가정하고 필요한 작업을 수행합니다.

보안 토큰 예외 오류를 해결하려면 수동 스냅샷과 연결된 IAM 역할을 지정해야 합니다. 수동 스냅샷과 연결된 IAM 역할이 없는 경우 새로 생성하세요. 자세한 내용을 보려면 사전 요구 사항을 참조하세요.

또한 수동 스냅샷과 연결된 IAM 역할에 대한 신뢰 관계를 확인하세요. 역할에 대한 신뢰 관계는 다음과 같이 Principal 문에 OpenSearch Service를 명시해야 합니다.

{
    "Version": "2012-10-17",
    "Statement": [{
        "Sid": "",
        "Effect": "Allow",
        "Principal": {
            "Service": "es.amazonaws.com"
        },
        "Action": "sts:AssumeRole"
    }]
}

PARTIAL 스냅샷 상태

스냅샷이 “PARTIAL” 상태가 되는 이유는 다음과 같습니다.

부분 스냅샷은 샤드의 데이터를 저장할 수 없음을 나타냅니다. 여전히 부분 스냅샷에서 데이터를 복원할 수 있지만 누락된 인덱스를 복원하려면 이전 스냅샷을 사용해야 합니다. 클러스터가 “PARTIAL” 상태로 전환되었는지 확인하려면 스냅샷 기록을 확인하세요. 자세한 내용을 보려면 스냅샷 복원을 참조하세요.

Amazon S3 Glacier 클래스 문제

복원된 스냅샷을 S3 Glacier 스토리지 클래스 중 하나에 저장하는 경우, Amazon S3 Glacier 수명 주기 규칙을 버킷에 적용하지 마세요. 수동 스냅샷은 S3 Glacier 스토리지 클래스를 지원하지 않습니다. 따라서 S3 버킷에 Amazon S3 Glacier 수명 주기 정책을 적용하는 경우 전환되는 모든 객체를 뒤로 이동해야 합니다.

객체를 표준 Amazon S3 스토리지 클래스로 다시 이동한 후 해당 스냅샷에서 객체를 복원할 수 있습니다. 자세한 내용을 보려면 사전 요구 사항을 참조하세요.

관련 정보

Amazon OpenSearch Service에서 "cannot restore index [.kibana]" 오류를 해결하려면 어떻게 해야 합니까?

수동 스냅샷 찍기

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