엔지니어링

AWS Elasticsearch에서 Elastic Cloud의 Elasticsearch Service로 마이그레이션

Elastic Stack의 모든 기능에 액세스

솔루션스 아키텍트인 저는 Amazon Elasticsearch Service(ES)에서 Elasticsearch Service로 Elastic 배포를 이전하는 방법에 대한 질문을 종종 받습니다.  제가 주로 이런 질문을 받는 이유는 사용자가 Amazon에서는 제공하지 않지만 Elastic에서는 제공하는 기능, 운영 전문 지식 및 지원을 모두 활용하길 원하기 때문입니다. 이 실무자 안내서는 Elastic에서 Elasticsearch Service로 ‘리프트 앤 시프트’(그대로 이전) 마이그레이션하는 방법을 알려드립니다.

Elasticsearch Service를 시작하는 데 도움이 되도록, 배포를 생성할 수 있는 14일 무료 체험판을 제공합니다. Elastic에서 배포를 실행할 리전과 AWS 또는 GCP 중에서 클라우드 서비스 제공자를 선택할 수 있습니다.  AWS 사용자는 AWS Marketplace에서 직접 Elasticsearch Service를 추가할 수 있으며 요금은 AWS 청구서에 통합되어 청구됩니다.

오픈 소스 배포에서 제공하는 기능 외에도 캔버스, APM, 자율 기계 학습, 고정 인덱스, SQL, 보안(기본 IAM 정책 및 경계 전용 보안 그 이상) 및 배포 템플릿과 같이 Elastic Cloud의 Elasticsearch Service에서만 제공하는 다양한 기능이 있습니다. Elastic에서는 계속해서 고유한 기능을 추가하고 있습니다. AWS ES와 관련하여 Elastic에서 진행하는 작업에 대해 자세히 알아보려면 때때로 AWS Elasticsearch 비교 페이지를 확인하시기 바랍니다.

AWS Elasticsearch에서 Elastic Cloud의 Elasticsearch Service로 마이그레이션

이 안내서는 AWS ES에서 Elastic Cloud의 Elasticsearch Service로의 마이그레이션을 설명하는 상당히 기술적인 안내서이며 약간의 프로그래밍 경험이 필요합니다. AWS ES 클러스터는 일반적으로 VPC에 프로비저닝되지만, 공용 엔드포인트에서 구동될 수도 있습니다. 이 안내서를 두 시나리오 모두에서 활용할 수 있도록 여기에서는 Python AWS SDK를 사용합니다. AWS SDK가 지원되는 모든 언어(예: Java, Ruby, Go 등)를 사용할 수 있지만 아래에서는 Python의 예만 제공합니다.

이 안내서는 두 개의 파트로 나뉩니다.

참고: 이미 AWS ES 클러스터 스냅샷을 S3에 수동으로 생성한 경우, 파트 2로 건너뛰시기 바랍니다.

시작하기 전에 다음 IAM 보안 단계 몇 가지를 이해하는 것이 중요합니다. 먼저, S3에 AWS ES 클러스터 스냅샷을 생성하기 위해서는 AWS ES 클러스터에서 프라이빗 S3 버킷에 쓸 수 있는 권한이 있어야 합니다. 이를 위해서는 필요한 권한이 지정된 IAM 역할과 정책이 필요합니다. 또한, IAM 정책을 IAM 사용자에게 연결해야 합니다(필요한 경우 사용자 생성). IAM 사용자는 스크립트에서 AWS ES 클러스터와 통신하고 Elastic 관리형 배포에서 S3 버킷의 스냅샷을 읽는 데 사용됩니다.

파트 1 – S3에 스냅샷 생성

이 안내서의 첫 번째 파트에서는 S3에 AWS ES 클러스터 스냅샷을 생성하기 위해 IAM 역할, 정책 및 사용자를 설정하는 프로세스를 다룹니다. 이 프로세스에 대한 AWS 설명서는 Amazon Elasticsearch Service 인덱스 스냅샷 작업 섹션에서 확인할 수 있습니다. 필요한 경우 참고 자료로 사용하면 도움이 될 것입니다.

앞으로 사용할 몇 가지 변수를 적어두셔야 합니다. 이 안내서를 진행하면서 참조할 수 있도록 아래 표를 복사하여 노트 파일에 붙여넣으십시오. 그러면 마이그레이션에 필요한 값을 쉽게 채워 넣을 수 있습니다.

설명변수
AWS ES 도메인 ARN DOMAIN_ARN
AWS ES 엔드포인트 URL ES_ENDPOINT
AWS ES 리전 ES_REGION
AWS S3 버킷 이름 S3_BUCKET_NAME
AWS S3 리전 S3_REGION_NAME
AWS IAM 역할 ARN ROLE_ARN
AWS IAM 액세스 키 ID ACCESS_KEY
AWS IAM 보안 액세스 키 SECRET_KEY
AWS ES 스냅샷 리포지토리 SNAPSHOT_REPO my-snapshot-repo
AWS ES 스냅샷 이름 SNAPSHOT_NAME my-snapshot

SNAPSHOT_REPO 및 SNAPSHOT_NAME의 값을 변경하거나 제공된 예(즉, “my-snapshot-repo” 및 “my-snapshot”)를 사용할 수 있습니다.

1단계 – AWS ES 정보 가져오기

S3에 AWS ES 클러스터 스냅샷을 생성하려면 AWS ES 클러스터에 대한 몇 가지 기본 정보가 필요합니다.

  1. AWS 콘솔에서 Elasticsearch Service로 이동합니다.
  2. 스냅샷을 생성하려는 클러스터의 도메인을 선택합니다.
  3. ‘도메인 ARN’ 값을 노트 파일에 복사합니다(DOMAIN_ARN).
  4. ‘엔드포인트’ URL 값을 노트 파일에 복사합니다(ES_ENDPOINT).
  5. AWS ES 클러스터가 구동되는 AWS 리전(예: us-east-1)을 적어둡니다(ES_REGION).

이러한 정보는 아래에서 IAM 정책을 생성할 때와 나중에 클러스터에 명령을 내릴 때 사용됩니다.

2단계 – AWS S3 버킷 생성

스냅샷을 저장할 S3 버킷을 생성해야 합니다.

중요: S3 버킷은 AWS ES 클러스터와 동일한 리전에 위치해야 합니다. S3 버킷에서 원하는 리전 또는 클라우드 서비스 제공자(AWS 또는 GCP)의 Elastic 관리형 배포로 복원할 수 있습니다.

  1. AWS 콘솔에서 S3 서비스로 이동합니다.
  2. 프라이빗 S3 버킷을 생성합니다.
    참고: 기본값을 그대로 두면 버킷은 프라이빗으로 안전하게 설정됩니다.
  3. 버킷 이름을 노트 파일에 복사합니다(S3_BUCKET_NAME).
  4. 버킷 리전을 노트 파일에 복사합니다(S3_REGION_NAME).

이러한 정보는 스냅샷 리포지토리를 Elasticsearch에 등록할 때 사용됩니다.

3단계 – IAM 역할 생성

다음으로 S3에 스냅샷을 생성할 수 있는 권한을 Amazon Elasticsearch Service에 위임하는 역할을 생성합니다.

  1. AWS 콘솔에서 IAM 서비스로 이동합니다.
  2. [Roles]를 선택합니다.
  3. [Create role]을 선택합니다.
  4. 이 새 역할을 사용할 서비스로 [EC2]를 선택합니다(나중에 변경 예정).
  5. [Next: Permissions]를 선택합니다.
  6. 지금은 역할에 대한 정책을 비워 둡니다.
  7. [Next: Tags]를 선택합니다.
  8. [Next: Review]를 선택합니다.
  9. 역할의 이름을 TheSnapshotRole이라고 지정합니다.
  10. [Create role]을 선택합니다.
  11. 역할 목록에서 방금 선택한 [TheSnapshotRole]을 선택합니다.
  12. [Trust relationships]를 선택합니다.
  13. [Edit trust relationship]을 선택합니다.
  14. 다음을 trust relationship에 복사하여 붙여넣습니다(현재 있는 것을 대체).

    {
     "Version": "2012-10-17",
      "Statement": [{
        "Effect": "Allow",
        "Principal": {
          "Service": "es.amazonaws.com"
        },
        "Action": "sts:AssumeRole"
      }]
    }
    
  15. [Update Trust Policy]를 선택합니다.
  16. [Permissions]를 선택합니다.
  17. [Add inline policy]를 선택합니다.
  18. JSON 탭을 선택합니다.
  19. 다음 JSON을 복사하여 붙여넣습니다(현재 있는 것을 대체).
  20. S3_BUCKET_NAME을 올바른 값으로 대체합니다(두 군데).

    {
      "Version": "2012-10-17",
      "Statement": [{
          "Action": [
            "s3:ListBucket"
          ],
          "Effect": "Allow",
          "Resource": [
            "arn:aws:s3:::S3_BUCKET_NAME"
          ]
        },
        {
          "Action": [
            "s3:GetObject",
            "s3:PutObject",
            "s3:DeleteObject"
          ],
          "Effect": "Allow",
          "Resource": [
            "arn:aws:s3:::S3_BUCKET_NAME/*"
          ]
        }
      ]
    }   
  21. [Review policy]를 선택합니다.
  22. 정책의 이름을 TheSnapshotS3Policy라고 지정합니다.
  23. [Create policy]를 선택합니다.
  24. ‘역할 ARN’ 값을 노트 파일에 복사합니다(ROLE_ARN).

이렇게 S3 버킷을 읽고 S3 버킷에 쓸 수 있는 인라인 정책이 지정된 IAM 역할을 생성했습니다.

4단계 – IAM 정책 생성

스냅샷 리포지토리를 등록하려면 위의 역할을 맡을 수 있는 권한을 보유한 새로운 IAM 정책을 생성해야 합니다.

  1. AWS 콘솔에서 IAM 서비스로 이동합니다.
  2. [Policies]를 선택합니다.
  3. [Create policy]를 선택합니다.
  4. JSON 탭을 선택합니다.
  5. 다음 JSON을 복사하여 붙여넣습니다(현재 있는 것을 대체).
  6. ROLE_ARN을 올바른 값으로 대체합니다.
  7. DOMAIN_ARN을 올바른 값으로 대체합니다.
  8. S3_BUCKET_NAME을 올바른 값으로 대체합니다(두 군데).

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": "iam:PassRole",
          "Resource": "ROLE_ARN"
        },
        {
          "Effect": "Allow",
          "Action": "es:ESHttpPut",
          "Resource": "DOMAIN_ARN/*"
        }
      ]
    }
    
  9. [Review policy]를 선택합니다.
  10. 정책의 이름을 TheSnapshotPolicy라고 지정합니다.
  11. [Create policy]를 선택합니다.

이렇게 IAM 역할이 AW ES 도메인과 통신할 수 있도록 허용하는 IAM 역할을 생성했습니다.

5단계 – IAM 사용자 생성

아직 IAM 사용자가 없다면, 사용자를 생성하고 프라이빗 S3 버킷에 액세스할 수 있는 권한을 부여해야 합니다. IAM 사용자가 있다면, 다음 IAM 정책을 연결하기만 하면 됩니다.

  1. AWS 콘솔에서 IAM 서비스로 이동합니다.
  2. [Users]를 선택합니다.
  3. [Add user]를 선택합니다.
  4. 사용자의 이름을 TheSnapshotUser라고 지정합니다.
  5. [Programmatic access] 확인란을 선택합니다.
  6. [Next: Permissions]를 선택합니다.
  7. [Attach existing policies directly] 확인란을 선택합니다.
  8. “TheSnapshot”이라고 입력하여 정책을 필터링합니다.
  9. [TheSnapshotPolicy] 정책 옆의 확인란을 선택합니다.
  10. [Next: Tags]를 선택합니다.
  11. [Next: Review]를 선택합니다.
  12. [Create user]를 선택합니다.
  13. ‘액세스 키 ID’ 값을 노트 파일에 복사합니다(ACCESS_KEY).
  14. [Secret access key] 아래에 있는 [Show]를 선택합니다.
  15. ‘보안 액세스 키’ 값을 노트 파일에 복사합니다(SECRET_KEY).
  16. [Close]를 선택합니다.
  17. 사용자 목록에서 방금 생성한 [TheSnapshotUser]를 선택합니다.
  18. [Add inline policy]를 선택합니다.
  19. JSON 탭을 선택합니다.
  20. 다음 JSON을 복사하여 붙여넣습니다(현재 있는 것을 대체).
  21. S3_BUCKET_NAME을 올바른 값으로 대체합니다(두 군데).

    {
      "Version": "2012-10-17",
      "Statement": [{
          "Action": [
            "s3:ListBucket"
          ],
          "Effect": "Allow",
          "Resource": [
            "arn:aws:s3:::S3_BUCKET_NAME"
          ]
        },
        {
          "Action": [
            "s3:GetObject",
            "s3:PutObject",
            "s3:DeleteObject"
          ],
          "Effect": "Allow",
          "Resource": [
            "arn:aws:s3:::S3_BUCKET_NAME/*"
          ]
        }
      ]
    }
    
  22. [Review policy]를 선택합니다.
  23. 정책의 이름을 TheSnapshotUserS3Policy라고 지정합니다.
  24. [Create policy]를 선택합니다.

이렇게 수동 스냅샷을 생성하고 생성한 스냅샷에서 읽을 수 있는 IAM 사용자를 생성했습니다.

6단계 – Python AWS SDK 구성

수동 스냅샷을 실행하기 전에 배포에 스냅샷 리포지토리를 등록해야 합니다. 이를 위해서는 서명된 요청을 AWS ES 클러스터로 전송해야 합니다. 가장 쉬운 방법의 하나는 Python AWS SDK를 사용하는 것입니다. 다른 AWS SDK(예: Java, Ruby, Go 등)를 사용할 수도 있지만, 아래 예에서는 Python AWS SDK를 사용하겠습니다.

Python의 패키지 설치 프로그램인 PIP(pip3)를 사용하여 Python AWS SDK를 설치하겠습니다. 이를 위해서는 Python v3를 설치해야 합니다. Python v3가 설치되어 있지 않은 경우, pip3를 설치하면 됩니다. Python v3는 pip3의 종속 항목이므로 pip3를 설치하면 운영 체제의 패키지 관리자가 자동으로 Python v3를 설치합니다. 도움이 필요한 경우 Python 설치 설명서를 참조하십시오.

pip3 설치

Red Hat 및 파생 상품pip3를 설치하려면 yum을 사용합니다.

$ sudo yum -y install python3-pip

또는 일부 Fedora 배포판에서는 pip3 패키지의 레이블이 다르게 지정되어 있습니다.

$ sudo yum -y install python36-pip

위의 패키지 이름이 모두 작동하지 않으면 패키지를 검색하면 됩니다.

$ yum search pip

Ubuntu와 같은 Debian 파생 상품의 경우 apt-get을 사용합니다.

$ sudo apt-get -y install python3-pip

Python AWS SDK 설치

일단 pip3가 설치되면, boto3라는 Python AWS SDK를 설치할 수 있습니다.

$ pip3 install --user boto3 requests_aws4auth
Collecting boto3
...
Successfully installed boto3-1.9.106 requests-aws4auth-0.9 ...

참고: --user 플래그를 지정하면 루트 액세스 권한이 필요 없습니다.

AWS 자격 증명을 저장할 ~/.aws 디렉터리를 생성해야 합니다. 다음 명령을 실행하여 디렉터리를 생성합니다.

$ mkdir ~/.aws

원하는 편집기로 credentials라는 파일을 생성합니다. 편의성을 위해 nano를 사용하겠습니다.

$ nano ~/.aws/credentials

아래 콘텐츠를 복사하여 파일에 붙여넣고 2개의 대문자 변수를 대체합니다.

[default]
aws_access_key_id = ACCESS_KEY
aws_secret_access_key = SECRET_KEY

ctrl+x를 사용하여 nano를 종료하고 표시된 메시지에 따라 파일을 저장합니다.

다음으로 Python 스크립트 몇 개를 작성하여 필요한 작업을 수행하겠습니다.

7단계 – 수동으로 AWS ES 스냅샷 생성

Python 스크립트를 사용하여 AWS ES 클러스터에 인덱스를 나열하는 간단한 테스트를 실행하겠습니다. 이렇게 하면 AWS 자격 증명이 작동하고 있으며 클러스터와 통신할 수 있음을 확인할 수 있습니다.

원하는 편집기로 indices.py라는 파일을 생성합니다. 편의성을 위해 nano를 사용하겠습니다.

$ nano indices.py

아래 콘텐츠를 복사하여 붙여넣고 2개의 대문자 변수를 가지고 있는 값으로 대체합니다.

import boto3, requests
from requests_aws4auth import AWS4Auth
host = 'ES_ENDPOINT'
region = 'ES_REGION'
creds = boto3.Session().get_credentials()
auth = AWS4Auth(creds.access_key, creds.secret_key, region, 'es', session_token=creds.token)
print("Listing Indices from AWS ES ...")
req = requests.get(host + '/_cat/indices?v', auth=auth)
print("HTTP Response Code: " + str(req.status_code) + '\n' + req.text)

ctrl+x를 사용하여 nano를 종료하고 표시된 메시지에 따라 파일을 저장합니다.

Python 스크립트를 실행합니다.

$ python3 indices.py

출력 결과는 다음과 유사해야 합니다.

Listing Indices from AWS ES ...
HTTP Response Code: 200
health status index     uuid                   pri rep docs.count docs.deleted store.size pri.store.size
green  open   testindex yME2BphgR3Gt1ln6n03nHQ   5   1          1            0      4.4kb          4.4kb

이제 원하는 편집기로 register.py라는 파일을 생성합니다.

$ nano register.py

아래 콘텐츠를 복사하여 붙여넣고 7개의 대문자 변수를 가지고 있는 값으로 대체합니다.

import boto3, requests
from requests_aws4auth import AWS4Auth
host = 'ES_ENDPOINT'
region = 'ES_REGION'
repo_name = 'SNAPSHOT_REPO'
snapshot_name = 'SNAPSHOT_NAME'
s3_region_name = 'S3_REGION_NAME'
s3_bucket_name = 'S3_BUCKET_NAME'
role_arn = 'ROLE_ARN'
creds = boto3.Session().get_credentials()
auth = AWS4Auth(creds.access_key, creds.secret_key, region, 'es', session_token=creds.token)
headers = {"Content-Type": "application/json"}
payload = {
        "type": "s3",
        "settings": {
                "region": s3_region_name,
                "bucket": s3_bucket_name,
                "role_arn": role_arn
        }
}
print("Registering Snapshot with AWS ES ...")
url = host + '/_snapshot/' + repo_name
req = requests.put(url, auth=auth, json=payload, headers=headers)
print("HTTP Response Code: " + str(req.status_code) + '\n' + req.text)

ctrl+x를 사용하여 nano를 종료하고 표시된 메시지에 따라 파일을 저장합니다.

Python 스크립트를 실행합니다.

$ python3 register.py

출력 결과는 다음과 유사해야 합니다.

Registering Snapshot with AWS ES ...
HTTP Response Code: 200
{"acknowledged":true}

그다음, 원하는 편집기로 snapshot.py라는 파일을 생성합니다.

$ nano snapshot.py

아래 콘텐츠를 복사하여 붙여넣고 4개의 대문자 변수를 가지고 있는 값으로 대체합니다.

import boto3, requests
from requests_aws4auth import AWS4Auth
host = 'ES_ENDPOINT'
region = 'ES_REGION'
repo_name = 'SNAPSHOT_REPO'
snapshot_name = 'SNAPSHOT_NAME'
creds = boto3.Session().get_credentials()
auth = AWS4Auth(creds.access_key, creds.secret_key, region, 'es', session_token=creds.token)
print("Starting Snapshot with AWS ES ...")
url = host + '/_snapshot/' + repo_name + '/' + snapshot_name
req = requests.put(url, auth=auth)
print("HTTP Response Code: " + str(req.status_code) + '\n' + req.text)

ctrl+x를 사용하여 nano를 종료하고 표시된 메시지에 따라 파일을 저장합니다.

Python 스크립트를 실행합니다.

$ python3 snapshot.py

출력 결과는 다음과 유사해야 합니다.

Starting Snapshot with AWS ES ...
HTTP Response Code: 200
{"accepted":true}

참고: 스냅샷을 생성하는 데 걸리는 시간은 AWS ES 도메인의 크기에 따라 달라집니다. AWS 설명서에 따르면 장기 실행 스냅샷 작업에는 “504 GATEWAY_TIMEOUT” 오류 메시지가 표시될 때가 있습니다. 이 설명서에는 이 오류 메시지를 무시하고 스냅샷이 성공적으로 완료되길 기다리면 된다고 명시되어 있습니다.

마지막으로 스냅샷의 상태를 확인하겠습니다. status.py라는 파일을 생성합니다.

$ nano status.py

아래 콘텐츠를 복사하여 붙여넣고 4개의 대문자 변수를 가지고 있는 값으로 대체합니다.

import boto3, requests
from requests_aws4auth import AWS4Auth
host = 'ES_ENDPOINT'
region = 'ES_REGION'
repo_name = 'SNAPSHOT_REPO'
snapshot_name = 'SNAPSHOT_NAME'
creds = boto3.Session().get_credentials()
auth = AWS4Auth(creds.access_key, creds.secret_key, region, 'es', session_token=creds.token)
print("Getting Status of Snapshot with AWS ES ...")
url = host + '/_snapshot/' + repo_name + '/' + snapshot_name + '?pretty'
req = requests.get(url, auth=auth)
print("HTTP Response Code: " + str(req.status_code) + '\n' + req.text)

ctrl+x를 사용하여 nano를 종료하고 표시된 메시지에 따라 파일을 저장합니다.

Python 스크립트를 실행합니다.

$ python3 status.py

출력 결과는 다음과 유사해야 합니다.

Getting Status of Snapshot with AWS ES ...
HTTP Response Code: 200
{
  "snapshots" : [ {
    "snapshot" : "my-snapshot",
    "uuid" : "ClYKt5g8QFO6r3kTCEzjqw",
    "version_id" : 6040299,
    "version" : "6.4.2",
    "indices" : [ "testindex" ],
    "include_global_state" : true,
    "state" : "SUCCESS",
    "start_time" : "2019-03-03T14:46:04.094Z",
    "start_time_in_millis" : 1551624364094,
    "end_time" : "2019-03-03T14:46:04.847Z",
    "end_time_in_millis" : 1551624364847,
    "duration_in_millis" : 753,
    "failures" : [ ],
    "shards" : {
      "total" : 5,
      "failed" : 0,
      "successful" : 5
    }
  } ]
}

"state":"SUCCESS"가 표시되면 S3에 스냅샷을 성공적으로 생성했으며 파트 2를 진행할 준비가 된 것입니다!

파트 2 – S3로부터 복원

이 안내서의 두 번째 파트에서는 S3에 있는 수동 스냅샷에서 Elastic 관리형 배포를 복원하는 프로세스를 다룹니다.

이 파트 2에서 AWS 또는 GCP에 Elastic 관리형 배포를 프로비저닝할 수 있습니다.

1단계 – 배포 크기 조정

Elastic Cloud의 Elasticsearch Service에 생성한 배포에는 AWS ES 클러스터와 동일한 양의 리소스가 있어야 합니다. 슬라이더를 사용해 데이터 노드 수를 조정하여 AWS ES에 있는 클러스터의 크기를 반영합니다. 계속 진행하기 전에 변경 사항을 저장합니다.

2단계 – 사용자 정의 리포지토리 추가

Elastic 관리형 배포(AWS ES 클러스터가 아니라)에서 Kibana을 열고 [Dev Tools]로 이동합니다.

다음 API 호출을 복사하여 Dev Tools에 붙여넣고 5개의 변수를 대체합니다.

PUT /_snapshot/SNAPSHOT_REPO
{
  "type": "s3",
  "settings": {
    "bucket": "S3_BUCKET_NAME",
    "region": "S3_REGION_NAME",
    "access_key": "ACCESS_KEY",
    "secret_key": "SECRET_KEY",
    "compress": true
  }
}

요청을 실행합니다.

다음과 같은 응답을 받아야 합니다.

{
  "acknowledged": "true"
}

거의 다 끝났습니다.

3단계 – S3로부터 복원

마지막으로 방금 등록한 스냅샷 리포지토리로부터 복원할 차례입니다.

다음 API 호출을 복사하여 Dev Tools에 붙여넣고 2개의 변수를 대체합니다.

POST /_snapshot/SNAPSHOT_REPO/SNAPSHOT_NAME/_restore

다음과 같은 응답을 받아야 합니다.

{
  "accepted": "true"
}

다음 명령으로 복원 진행 상황을 확인할 수 있습니다.

GET /_snapshot/SNAPSHOT_REPO/SNAPSHOT_NAME/_status

"state":"SUCCESS"가 표시되면 복원이 성공적으로 완료된 것입니다.

{
  "snapshots": [
    {
      "snapshot": "my-snapshot",
      "repository": "my-snapshot-repo",
      "state": "SUCCESS",
      ...
    }
  ]
}

AWS ES에서 Elasticsearch Service로의 ‘리프트 앤 시프트’ 마이그레이션을 완료한 것을 축하드립니다.

결론

이제 Elastic Cloud의 Elasticsearch Service를 사용하게 되었으니 AWS ES에서는 제공하지 않는 기능을 활용할 수 있을 뿐만 아니라 Elastic Stack을 만든 전문가가 귀하의 배포를 유지 관리하고 있다는 것을 알고 안심하실 수 있습니다. 운영하면서 문제가 발생하는 경우, Elastic 지원팀의 전문가가 도와드릴 것입니다.  아직 Elastic Cloud의 Elasticsearch Service를 사용하지 않으신다면 14일 무료 체험판을 사용해 보시고, 질문이 있으시면 언제든지 편하게 연락주시기 바랍니다.