<aside> 💡 확장성과 성능, 모니터링 측면에서 기존에 사용하고 있던 AWS Opensearch 서비스에서 Elastic Cloud로 변경하는 것이 낫다고 판단, 기존에 있던 인덱스 데이터를 새로 배포할 ES 클러스터에 복원하기 위한 플로우를 정리하였다.
</aside>
스냅샷을 저장할 S3 버킷 만들기
glacier가 아닌 버킷을 하나 만들어 주도록 하자
IAM Role 설정하기⭐
a_w_s_security_token_service_exception
호스트(컴퓨터) 권한부여
API를 호출하여 ThePassSnapshotPolicy
를 가지고 있는 Role, User를 설정하자.
→ aws configure
로 설정을 하거나 VPC 안에 있는 EC2에 관련 권한을 부여하도록 하자
Opensearch에 스냅샷 역할 매핑
Opensearch의 보안 구성 탭에 들어가서 해당 도메인으로 IAM 객체에 대한 작업(요청)을 허용하도록 하자
IAM 사용자에 대한 권한을 허용하였다.
snapshot repository 생성
권한 설정이 끝났다면 이제 REST API를 통해서 snapshot repository를 만들어야 한다.
curl
의 경우는 AWS의 요청 서명을 지원하지 않기 때문에 python, javascript와 같이 서명 지원을 하는 모듈을 다운로드하여 요청을 보내야 한다.
성공시 아래와 같은 요청이 발생한다.
GET _snapshot?pretty
를 통해서 현재 생성된 리포지토리를 볼 수 있다.snapshot 백업
생성된 리포지토리에 스냅샷을 백업하도록 하자 PUT
요청을 통해서 백업이 가능하다
/_snapshot/<repo_name>/_all?pretty
을 통해서 조회가 가능하다.Secret key 세팅
마찬가지로 S3에 접근할 수 있는 권한이 있는 IAM user을 통해서 접근을 해야한다. Role은 AWS의 인스턴스에 부여를 할 수 있는 것이기 때문에 이 상황에서는 user의 access key와 secret key를 넣도록 하자
deployment의 security에서 user key를 등록한 모습
공식적인 문서에서 나온 내용은 아니지만 <instance_type>.client.<client_name>.access_key
와 같은 방식으로 등록한다.
instance_type
: s3가 대표적인 예일 수 있다.client_name
: kibana에서 등록할 snapshot repository의 클라이언트 이름Kibana에서 Stack Management > Snapshot and Restore에 들어가서 repository 등록을 한다.
등록 모습
S3에서 찾은 snapshot을 바탕으로 restore을 시작한다. 특별한 설정 없이 resotre을 진행하였다.
restore이 완료된 모습이다.
복원이 된 인덱스에 대해서는 추라고 Stack Monitoring에서 확인할 수 있다.