Amazon Elasticsearch Service
개발자 가이드 (API 버전 2015-01-01)

Amazon Elasticsearch Service란?

Amazon Elasticsearch Service(Amazon ES)는 AWS 클라우드에서 Elasticsearch 클러스터를 쉽게 배포, 운영 및 조정할 수 있는 관리형 서비스입니다. Elasticsearch는 로그 분석, 실시간 애플리케이션 모니터링, 클릭 스트림 분석 같은 사용 사례를 위한 인기 있는 오픈 소스 검색 및 분석 엔진입니다. Amazon ES를 사용하면 Elasticsearch API에 바로 액세스해 기존 코드 및 애플리케이션을 서비스를 통해 원활하게 사용할 수 있습니다.

Amazon ES는 Elasticsearch 클러스터의 리소스를 모두 프로비저닝하고 클러스터를 시작합니다. 또한 실패한 Elasticsearch 노드를 자동으로 감지한 다음 교체해 자체 관리형 인프라와 관련된 오버헤드를 줄입니다. API를 한 번만 호출하거나 콘솔에서 몇 번만 클릭하여 클러스터를 조정할 수 있습니다.

Amazon ES 사용을 시작하려면 도메인을 만듭니다. Amazon ES 도메인은 Elasticsearch 클러스터와 동의어입니다. 도메인은 설정, 인스턴스 유형, 인스턴스 수, 스토리지 리소스를 지정한 설정입니다.

Amazon ES 콘솔을 사용하여 몇 분 만에 도메인을 설정 및 구성할 수 있습니다. 프로그래밍 방식 액세스를 선호하는 경우 AWS CLI 또는 AWS SDK를 사용할 수 있습니다.

Amazon Elasticsearch Service의 기능

Amazon ES의 특징은 다음과 같습니다.

크기 조정

  • 다양한 CPU, 메모리 및 스토리지 용량 구성(인스턴스 유형이라고 함)

  • 최대 3PB의 인스턴스 스토리지

  • Amazon EBS 스토리지 볼륨

보안

  • AWS Identity and Access Management(IAM) 액세스 제어

  • Amazon VPC 및 VPC 보안 그룹을 사용하는 쉬운 통합

  • 저장 중 데이터 암호화 및 노드 간 암호화

  • Kibana에 대한 Amazon Cognito 인증

안정성

  • 리소스를 위한 여러 지리적 위치(리전가용 영역이라고 함)

  • 동일한 리전의 가용 영역 두 개 또는 세 개에 노드 할당(다중 AZ)

  • 클러스터 관리 작업 부담을 줄여주는 전용 마스터 노드

  • 자동 스냅샷으로 Amazon ES 도메인 백업 및 복원

유명 서비스와의 통합

  • Kibana를 사용하는 데이터 시각화

  • Amazon ES 도메인 지표 및 설정 경보 모니터링을 위한 Amazon CloudWatch와의 통합

  • Amazon ES 도메인에 대한 구성 API 호출 감사를 위한 AWS CloudTrail과의 통합

  • Amazon ES로 스트리밍 데이터 로드를 위한 Amazon S3, Amazon Kinesis 및 Amazon DynamoDB와의 통합

지원되는 Elasticsearch 버전

Amazon ES에서는 현재 다음과 같은 Elasticsearch 버전을 지원합니다.

  • 7.1

  • 6.8, 6.7, 6.5, 6.4, 6.3, 6.2, 6.0

  • 5.6, 5.5, 5.3, 5.1

  • 2.3

  • 1.5

Elasticsearch의 이전 버전에 비해 7.x 및 6.x 버전은 보다 빠르고 안전하며 손쉽게 사용할 수 있는 강력한 기능을 제공합니다. 몇 가지 주요 내용은 다음과 같습니다.

  • 인덱스 분할 – 인덱스가 원래 샤드 수보다 많아지는 경우 _split API를 사용하여 각각의 기본 샤드를 새로운 인덱스에 두 개 이상의 샤드로 분할할 수 있습니다.

  • Vega 가상화 – Kibana 6.2는 Vega 가상화 언어를 지원합니다. 이를 통해 컨텍스트 인식 Elasticsearch 쿼리를 만들고, 여러 데이터 소스를 하나의 그래프에 통합하며, 사용자 상호 작용을 그래프에 추가하는 등의 작업을 할 수 있습니다.

  • Java 상위 수준 REST 클라이언트 – 이 클라이언트는 하위 수준 클라이언트와 비교하여 개발 환경을 단순화하고 많은 Elasticsearch API를 지원합니다. 코드 샘플은 HTTP 요청 서명을 참조하십시오.

  • 가중 평균 – 이 집계 기능을 사용하여 문서에 가중치를 할당하고 해당 가중치를 주어진 값의 평균에 포함시킬 수 있습니다.

  • 향상된 인덱싱 성능 – 최신 버전의 Elasticsearch는 인덱싱 기능이 우수해서 데이터 업데이트 처리량이 크게 늘었습니다.

  • 보호 조치 개선 – 새 버전의 Elasticsearch는 향상된 클러스터 조정 기능을 제공하며 지나치게 광범위하거나 복잡한 쿼리가 성능과 안정성에 부정적인 영향을 주지 않도록 설계된 많은 보호 조치 기능을 제공합니다.

Amazon ES에서 지원하는 API 및 Elasticsearch 버전 간 차이에 대한 자세한 내용은 지원되는 Elasticsearch 작업 단원을 참조하십시오.

Elasticsearch 프로젝트를 새로 시작하는 경우에는 지원되는 최신 버전의 Elasticsearch를 선택하는 것이 좋습니다. Elasticsearch 구 버전을 사용하는 기존 도메인이 있으면 그 도메인을 유지하거나 데이터를 마이그레이션할 수 있습니다. 자세한 내용은 Elasticsearch 업데이트 단원을 참조하십시오.

Amazon Elasticsearch Service 가격

AWS에서는 사용한 만큼만 지불하면 됩니다. Amazon ES에서는 EC2 인스턴스의 사용 시간과 인스턴스에 연결된 EBS 스토리지 볼륨의 누적 크기에 대해 요금을 지불합니다. 이때 표준 AWS 데이터 전송 요금도 적용됩니다.

하지만 알아둘 만한 데이터 전송 예외가 존재합니다. 도메인에서 다중 가용 영역을 사용하는 경우, Amazon ES는 도메인이 속하는 두 가용 영역 간의 트래픽에 대해 요금을 청구하지 않습니다. 또한 샤드 할당 및 재분배 과정에서는 도메인 내부에서 상당한 데이터 전송이 발생합니다. 이때 일어나는 트래픽에 대해서도 Amazon ES는 측정하거나 요금을 청구하지 않습니다.

전체 요금 내역은 Amazon Elasticsearch Service 요금을 참조하십시오. 구성 변경 도중 발생하는 변경 사항에 대한 자세한 내용은 구성 변경 비용 단원을 참조하십시오.

Amazon Elasticsearch Service 시작하기

AWS 계정이 아직 없는 경우 시작하려면 계정에 가입해야 합니다. 계정을 설정하면 Amazon Elasticsearch Service에 대한 시작하기 자습서를 완료합니다. 이 서비스에 대해 알아보는 중 추가 정보가 필요한 경우 다음 소개 주제를 참조하십시오.

Amazon ES는 일반적으로 다음 서비스와 함께 사용됩니다.

Amazon CloudWatch

Amazon ES 도메인은 CloudWatch에 지표를 자동으로 보내므로 도메인 상태 및 성능을 모니터링할 수 있습니다. 자세한 내용은 Amazon CloudWatch를 사용하여 클러스터 지표 및 통계 모니터링(콘솔) 단원을 참조하십시오.

CloudWatch Logs가 다른 방향으로 진행될 수도 있습니다. 분석을 위해 데이터를 Amazon ES로 스트리밍하도록 CloudWatch Logs를 구성할 수도 있습니다. 자세한 내용은 Amazon CloudWatch에서 Amazon ES로 스트리밍 데이터 로드 단원을 참조하십시오.

AWS CloudTrail

AWS CloudTrail을 사용하면 계정의 Amazon ES 구성 API 호출 및 관련 이벤트 내역을 확인할 수 있습니다. 자세한 내용은 Amazon Elasticsearch Service의 로깅 및 모니터링 단원을 참조하십시오.

Amazon Kinesis

Kinesis는 방대한 규모의 스트리밍 데이터를 실시간으로 처리하는 관리형 서비스입니다. 자세한 내용은 Amazon Kinesis Data Streams에서 Amazon ES로 스트리밍 데이터 로드Amazon Kinesis Data Firehose에서 Amazon ES로 스트리밍 데이터 로드 단원을 참조하십시오.

Amazon S3

Amazon Simple Storage Service(Amazon S3)는 인터넷용 스토리지를 제공합니다. 이 가이드에서는 Amazon S3 통합을 위한 Lambda 샘플 코드를 제공합니다. 자세한 내용은 Amazon S3에서 Amazon ES로 스트리밍 데이터 로드 단원을 참조하십시오.

AWS IAM

AWS Identity and Access Management(IAM)는 Amazon ES 도메인에 대한 액세스 관리를 위해 사용할 수 있는 웹 서비스입니다. 자세한 내용은 Amazon Elasticsearch Service의 자격 증명 및 액세스 관리 단원을 참조하십시오.

AWS Lambda

AWS Lambda는 서버를 프로비저닝하거나 관리하지 않고도 코드를 실행할 수 있게 해주는 컴퓨팅 서비스입니다. 이 가이드는 DynamoDB, Amazon S3 및 Kinesis의 데이터를 스트리밍하기 위한 Lambda 샘플 코드를 제공합니다. 자세한 내용은 Amazon Elasticsearch Service로 스트리밍 데이터 로드 단원을 참조하십시오.

Amazon DynamoDB

Amazon DynamoDB는 완벽하게 관리되는 NoSQL 데이터베이스 서비스로, 원활한 확장성과 함께 빠르고 예측 가능한 성능을 제공합니다. Amazon ES에 데이터를 스트리밍하는 데 대한 자세한 내용은 Amazon DynamoDB에서 Amazon ES로 스트리밍 데이터 로드 단원을 참조하십시오.