다른 AWS 계정의 OpenSearch Service 도메인에서 데이터를 복원하려면 어떻게 해야 합니까?

5분 분량
0

다른 계정의 Amazon OpenSearch Service 도메인에서 데이터를 복원하고 싶습니다.

간략한 설명

다른 계정의 OpenSearch Service 도메인에서 데이터를 복원하려면 다음 도메인에 대한 교차 계정 액세스를 설정해야 합니다.

  • 데이터를 복원하려는 소스 도메인(계정 A)
  • OpenSearch Service 대상 도메인(계정 B)

또한 데이터를 저장하는 Amazon Simple Storage Service(Amazon S3) 버킷에 액세스할 수 있도록 도메인에 대한 권한을 설정해야 합니다.

참고: 대상(계정 B)에 Amazon S3 버킷을 생성할 필요가 없습니다. OpenSearch Service는 단일 Amazon S3 버킷을 사용하여 계정 전체의 데이터를 복원합니다.

해결 방법

참고: OpenSearch Service는 클러스터 스냅샷에 계정 A의 소스 도메인을 사용합니다.

먼저, OpenSearch Service 대상 도메인과 동일한 AWS 리전의 계정 A에 Amazon S3 버킷을 생성합니다. 그 후 다음 단계를 완료하여 교차 계정 액세스를 설정합니다. 계정 A와 계정 B에 모두 단계를 완료해야 합니다.

두 계정의 S3 버킷에 대한 액세스 설정

다음 단계를 완료하십시오.

  1. S3 버킷에 액세스할 수 있는 권한을 OpenSearch Service에 부여하는 AWS Identity and Access Management(IAM) 역할을 생성합니다. 그런 다음, Amazon Elastic Compute Cloud(Amazon EC2)를 서비스로 선택합니다.

  2. S3 버킷 액세스 권한을 부여하는 다음 IAM 정책을 생성하고 정책을 IAM 역할에 연결합니다.

    {     "Version": "2012-10-17",
         "Statement": [{
              "Action": [
                   "s3:ListBucket"
              ],
              "Effect": "Allow",
              "Resource": [
                   "arn:aws:s3:::AccountA_S3_Bucket_Name"
              ]
         },
         {
              "Action": [
                   "s3:GetObject",
                   "s3:PutObject",
                   "s3:DeleteObject",
                   "iam:PassRole"
              ],
              "Effect": "Allow",
              "Resource": [
                   "arn:aws:s3:::AccountA_S3_Bucket_Name/*"
              ]
         }]
    }

    참고: arn:aws:s3:::AccountA_S3_Bucket_Name을 버킷의 ARN으로 바꾸십시오.

  3. 계정 A 버킷 정책을 다음 문으로 업데이트하여 계정 B의 IAM 역할에 교차 계정 버킷 액세스 권한을 부여합니다.

    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Sid": "Permission for AccountB role",
                "Effect": "Allow",
                "Principal": {
                    "AWS": "arn:aws:iam::account-B-id:role/AccountB-role"
                },
                "Action": [
                    "s3:GetLifecycleConfiguration",
                    "s3:ListBucket",
                    "s3:GetObject",
                    "s3:PutObject",
                    "s3:DeleteObject"
                ],
                "Resource": [
                    "arn:aws:s3:::AccountA-bucket",
                    "arn:aws:s3:::AccountA-bucket/*"
                ]
            }
        ]
    }
  4. 다음과 같은 신뢰 관계를 포함하도록 역할의 신뢰 정책을 업데이트합니다.

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

    참고: 이후 단계에서 사용할 역할의 ARN을 기록해 둡니다.

  5. OpenSearch Service에 S3 버킷에 대한 쓰기 액세스 권한을 부여하려면 다음 작업 중 하나를 수행합니다.
    모든 권한을 하나의 IAM 역할로 그룹화하려면 기존 IAM 정책에 iam:PassRole 권한을 포함합니다.
    또는
    권한을 분할하려면 iam:PassRole 권한을 사용하여 새 IAM 정책을 생성합니다.
    참고: HTTP 요청에 서명하는 데 사용하는 IAM 역할에 IAM 정책을 연결해야 합니다.
    다음 예제 정책에는 필요한 IAM 권한이 포함되어 있습니다.

    {     "Version": "2012-10-17",
         "Statement": [{
              "Effect": "Allow",
              "Action": "iam:PassRole",
              "Resource": "arn:aws:iam::Account:snapshot role"
         },
         {
              "Effect": "Allow",
              "Action": "es:ESHttpPut",
              "Resource": "arn:aws:es:us-east-1:Account:domain/srestore/*"
         }]
    }

    참고: arn:aws:iam::Account:snapshot-role을 IAM 역할로 바꾸십시오. 또한 arn:aws:es:us-east-1:Account:domain/restore/*를 계정 A 또는 계정 B의 OpenSearch Service 도메인으로 바꾸십시오.

  6. 도메인에 대해 세분화된 액세스 제어를 설정한 경우 IAM 역할을 OpenSearch 대시보드에 매핑해야 합니다. IAM 역할은 세분화된 액세스 제어를 사용하여 읽기 또는 쓰기 API에 대한 액세스를 제공합니다.

  7. (선택 사항) 계정 A의 Python 클라이언트를 사용하여 OpenSearch Service에 버킷을 등록한 경우 계정 A에서 EC2 인스턴스를 시작한 다음, IAM 역할을 연결합니다.

참고: 보안 그룹이 OpenSearch Service 도메인에 액세스할 수 있는지 확인하십시오.

S3 버킷을 두 계정의 스냅샷 리포지토리로 등록

중요: 계정 B의 경우 계정 B의 IAM 사용자 인증 자격 증명을 사용하고 OpenSearch Service를 대상으로 선택해야 합니다.

버킷을 등록하려면 Postman 애플리케이션을 사용하여 HTTP PUT 요청을 수행하십시오. 애플리케이션을 설치하려면 Postman 웹 사이트에서 Postman 다운로드를 참조하십시오.

다음 단계를 완료하십시오.

  1. PUT에서 OpenSearch Service 도메인 엔드포인트와 S3 버킷 이름이 포함된 URL(예: your-domain-endpoint.amazonaws.com/_snapshot/your-snapshot-repository-name)을 입력합니다.
  2. Authorization(권한 부여) 탭을 선택합니다.
  3. Postman에서 유형으로 AWS 서명을 선택합니다. AccessKeySecretKey에 IAM 사용자의 액세스 키를 입력합니다.
  4. AWS 리전에서 해당 리전을 입력합니다.
  5. 서비스 이름es를 입력합니다.
  6. 저장을 선택합니다.
  7. 헤더 탭을 선택합니다.
  8. 키 유형에서 콘텐츠 유형을 선택합니다.
  9. 키 값에서 애플리케이션/JSON을 선택합니다.
  10. 저장을 선택합니다.
  11. 본문 탭을 선택합니다.
  12. S3 버킷을 스냅샷 리포지토리로 등록합니다.
{     "type": "s3",
     "settings": {
          "bucket": "snapshot",
          "region": "us-east-1",
          "role_arn": "arn:aws:iam::Account:role/cross"
     }
}

참고: snapshot을 S3 버킷 이름으로, us-east-1을 해당 리전으로, arn:aws:iam::Account:role/cross를 계정 A 또는 계정 B의 IAM 역할로 바꾸십시오. 쿼리를 제출하려면 Send(전송)를 선택합니다.

등록이 완료되면 상태 코드: 200 OK 메시지가 표시됩니다.

스냅샷 리포지토리가 올바르게 구성되었는지 확인

계정 A에서 다음 단계를 완료하십시오.

  1. OpenSearch 대시보드를 열고 버킷에서 사용 가능한 데이터를 확인합니다.
  2. 다음 명령을 실행하여 새 스냅샷을 생성합니다.
    PUT /_snapshot/my-snapshot-repo-name/snapshot_name
    참고: my-snapshot-repo-name을 S3 버킷 이름으로 바꾸고 snapshot name을 스냅샷 이름으로 바꾸십시오.
    다음 예제 출력은 계정 A의 OpenSearch Service 도메인에 대한 전체 S3 버킷 등록을 확인합니다.
    GET _cat/snapshots/my-snapshot-repo-name
    
    SUCCESS 1585190280 02:38:00 1585190284 02:38:04 3.9s 4 4 0 4

계정 B에서 다음 단계를 완료하십시오.

  1. OpenSearch 대시보드를 엽니다.

  2. 다음 명령을 실행하여 S3 버킷에서 사용할 수 있는 계정 A의 스냅샷을 확인합니다.

    GET _cat/snapshots/my-snapshot-repo-name

    참고: my-snapshot-repo-name을 스냅샷 리포지토리로 바꾸십시오.
    다음 예제 출력은 계정 B에 교차 계정 액세스를 설정했음을 확인합니다.

    today SUCCESS 1585190280 02:38:00 1585190284 02:38:04 3.9s 4 4 0 4
  3. 데이터를 복원하려면 다음 명령을 실행합니다.

    POST /_snapshot/my-snapshot-repo-name/snapshotID/_restore

    참고: my-snapshot-repo-name을 스냅샷 리포지토리로 바꾸고 snapshotID를 스냅샷 이름으로 바꾸십시오.

  4. 특정 인덱스를 복원하려면 다음 명령을 실행합니다.

    POST /_snapshot/my-snapshot-repo-name/snapshot ID/_restore
    {
       "indices": "index name1,index name2"
    }

    참고: my-snapshot-repo-name을 스냅샷 리포지토리로 바꾸고 snapshotID를 스냅샷 이름으로 바꾸십시오. 또한 index name1indexname2를 해당 인덱스로 바꾸십시오.

  5. 복원된 인덱스를 확인하려면 다음 명령을 실행합니다.

    GET _cat/indices?v

관련 정보

한 OpenSearch Service 도메인에서 다른 도메인으로 데이터를 마이그레이션하려면 어떻게 해야 합니까?

1.3단계: 버킷 정책을 연결하여 계정 B에 교차 계정 권한 부여

원격 재색인을 사용하여 Amazon OpenSearch Service 인덱스 마이그레이션

IAM 역할 관리

AWS 공식
AWS 공식업데이트됨 4달 전