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

Amazon Elasticsearch Service 도메인 생성 및 구성

이 장에서는 Amazon Elasticsearch Service(Amazon ES) 도메인을 만들고 구성하는 방법에 대해 설명합니다. Amazon ES 도메인은 Elasticsearch 클러스터와 동의어입니다. 도메인은 설정, 인스턴스 유형, 인스턴스 수, 스토리지 리소스를 지정한 설정입니다.

시작하기 자습서의 간단한 지침과 달리 이 장에서는 모든 옵션에 대해 설명하고 관련 참조 정보를 제공합니다. Amazon ES 콘솔, AWS Command Line Interface(AWS CLI) 또는 AWS SDK에 대한 지침에 따라 각 절차를 완료할 수 있습니다.

Amazon ES 도메인 생성

이 단원에서는 Amazon ES 콘솔을 사용하거나 AWS CLI에서 create-elasticsearch-domain 명령을 사용하여 Amazon ES 도메인을 만드는 방법에 대해 설명합니다. AWS CLI에서 수행할 절차에는 구문 및 예가 포함됩니다.

Amazon ES 도메인 생성(콘솔)

콘솔에서 다음 절차에 따라 Amazon ES 도메인을 만듭니다.

Amazon ES 도메인을 만들려면(콘솔)

  1. https://aws.amazon.com으로 이동하여 Sign In to the Console(콘솔에 로그인)을 선택합니다.

  2. Analytics에서 Elasticsearch 서비스를 선택합니다.

  3. Create a new domain(새 도메인 생성)을 선택합니다.

    또는 이것이 AWS 리전에서 첫 번째 Amazon ES 도메인인 경우 시작하기를 선택합니다.

  4. 배포 유형 선택에서 도메인 목적에 가장 적합한 옵션을 선택합니다.

    • 프로덕션 도메인은 높은 가용성을 위해 다중 AZ와 전용 마스터 노드를 사용합니다.

    • 개발 및 테스트 도메인은 단일 가용 영역을 사용합니다.

    • 사용자 지정 도메인을 사용하면 모든 구성 옵션에서 선택할 수 있습니다.

    중요

    배포 유형이 다르면 다음 페이지에 표시되는 옵션도 다릅니다. 포괄적으로 설명하기 위해 이 단계에서는 모든 옵션(사용자 지정 배포 옵션)을 설명합니다.

  5. Elasticsearch 버전에서 최신 버전을 선택하는 것이 좋습니다. 자세한 내용은 지원되는 Elasticsearch 버전 단원을 참조하십시오.

  6. [Next]를 선택합니다.

  7. Elasticsearch 도메인 이름에 도메인 이름을 입력합니다. 이름은 다음 조건을 충족해야 합니다.

    • 해당 계정 및 리전에서 고유할 것

    • 소문자로 시작할 것

    • 3~28자 사이일 것

    • 소문자 a~z, 숫자 0~9 및 하이픈(-)만 포함할 것

  8. 가용 영역에서 1-AZ, 2-AZ 또는 3-AZ를 선택합니다. 자세한 내용은 다중 AZ 도메인 구성 단원을 참조하십시오.

  9. 인스턴스 유형에서 데이터 노드의 인스턴스 유형을 선택합니다. 자세한 내용은 지원되는 인스턴스 유형을 참조하십시오.

    참고

    모든 가용 영역에서 모든 인스턴스 유형이 지원되는 것은 아닙니다. 3-AZ를 선택할 경우 R4 또는 I3 등과 같은 최신 세대 인스턴스 유형을 선택할 것을 권장합니다.

  10. 인스턴스 수에서 데이터 노드 수를 선택합니다.

    최대값은클러스터 및 인스턴스 제한 단원을 참조하십시오. 단일 노드 클러스터는 개발 및 테스트 용도로 적합할 뿐 프로덕션 워크로드에 사용해서는 안 됩니다. 자세한 지침은 Amazon ES 도메인 크기 조정다중 AZ 도메인 구성 단원을 참조하십시오.

  11. (선택 사항) 전용 마스터 노드 활성화하거나 비활성화합니다. 전용 마스터 노드는 클러스터 안정성을 높이고 인스턴스 개수가 10개보다 많은 도메인에 필요합니다. 프로덕션 도메인의 경우 3개의 전용 마스터 노드를 권장합니다.

    참고

    전용 마스터 노드와 데이터 노드에 대해 다른 인스턴스 유형을 선택할 수 있습니다. 예를 들면 데이터 노드의 일반 목적 또는 스토리지 최적화 인스턴스를 선택할 수 있지만 전용 마스터 노드의 컴퓨팅에 최적화된 인스턴스는 선택할 수 없습니다.

  12. 스토리지 유형에서 인스턴스(기본값) 또는 EBS를 선택합니다.

    인덱스가 크거나 인덱스 수가 매우 많은 도메인은 스토리지 용량이 큰 EBS 볼륨을 사용하는 것이 유리할 때가 많습니다. 매우 큰 도메인을 생성하기 위한 지침은 페타바이트 규모 단원을 참조하십시오. EBS를 선택하면 다음 옵션이 나타납니다.

    1. EBS volume type(EBS 볼륨 유형)에서 EBS 볼륨 유형을 선택합니다.

      EBS 볼륨 유형으로 프로비저닝된 IOPS(SSD)를 선택하는 경우, 프로비저닝된 IOPS에 대해 원하는 기준 IOPS 성능을 입력합니다. 자세한 내용은 Amazon EC2 설명서의 Amazon EBS 볼륨을 참조하십시오.

    2. EBS volume size(EBS 볼륨 크기)에 각 데이터 노드에 연결할 EBS 볼륨 스토리지의 크기를 입력합니다.

      EBS volume size(EBS 볼륨 크기)는 노드당 크기입니다. 데이터 노드 수에 EBS 볼륨 크기를 곱하여 Amazon ES 도메인의 총 클러스터 크기를 계산할 수 있습니다. EBS 볼륨의 최소 크기 및 최대 크기는 지정된 EBS 볼륨 유형과 볼륨이 연결된 인스턴스 유형에 따라 달라집니다. 자세한 내용은 EBS 볼륨 크기 제한을 참조하십시오.

  13. (선택 사항) 도메인에 대한 모든 요청이 HTTPS를 통해 도착하도록 하려면 도메인에 대한 모든 트랙픽에 HTTPS 요구 확인란을 선택합니다.

  14. (선택 사항) 노드 간 암호화를 사용하려면 노드 간 암호화 확인란을 선택합니다. 자세한 내용은 Amazon Elasticsearch Service 노드 간 암호화 단원을 참조하십시오.

  15. (선택 사항) 저장 시 데이터 암호화를 활성화하려면 유휴 시 데이터 암호화 활성화 확인란을 선택합니다.

    Amazon ES에서 사용자를 대신하여 KMS 암호화 키를 생성하도록 하려면(또는 이미 생성된 것을 사용함) (기본값) aws/es를 선택하십시오. 그렇지 않으면 KMS 마스터 키 메뉴에서 KMS 마스터 키를 선택하십시오. 자세한 내용은 Amazon Elasticsearch Service에 대한 유휴 데이터 암호화 단원을 참조하십시오.

  16. (선택 사항) Elasticsearch 5.3 이상을 실행하는 도메인의 경우 자동 스냅샷 시작 시간은 아무 효과도 없습니다. 자동 스냅샷에 대한 자세한 내용은 Amazon Elasticsearch Service 인덱스 스냅샷 작업 단원을 참조하십시오.

  17. (선택 사항) 고급 옵션을 선택합니다. 옵션 요약은 고급 옵션 구성 단원을 참조하십시오.

  18. [Next]를 선택합니다.

  19. 액세스 설정 페이지의 네트워크 구성 섹션에서 퍼블릭 액세스 또는 VPC 액세스를 선택합니다. 퍼블릭 액세스를 선택한 경우, 다음 단계로 건너뜁니다. VPC access(VPC 액세스)를 선택한 경우, 사전 요구 사항이 충족되었는지 확인한 후 다음 작업을 수행합니다.

    1. VPC에서 사용하려는 VPC의 ID를 선택합니다.

      참고

      VPC 및 도메인은 동일한 AWS 리전에 있어야 하며 기본값으로 설정된 테넌시를 사용하여 VPC를 선택해야 합니다. Amazon ES는 아직 전용 테넌시를 사용하는 VPC를 지원하지 않습니다.

    2. 서브넷에서 서브넷을 선택합니다. 다중 영역을 활성화한 경우, 서브넷을 2개 또는 3개 선택해야 합니다. Amazon ES는 서브넷에 VPC 엔드포인트와 탄력적 네트워크 인터페이스를 배치합니다.

      참고

      서브넷(들)에서 네트워크 인터페이스용 IP 주소를 충분히 예약해야 합니다. 자세한 내용은 VPC 서브넷에서 IP 주소 예약 단원을 참조하십시오.

    3. 보안 그룹에서 Amazon ES 도메인에 대한 액세스 권한이 필요한 VPC 보안 그룹을 선택합니다. 자세한 내용은 Amazon Elasticsearch Service 도메인에 대한 VPC 지원 단원을 참조하십시오.

    4. IAM 역할에서는 기본 역할을 유지합니다. Amazon ES가 이 사전 정의된 역할(서비스 연결 역할이라고도 함)을 사용하여 VPC에 액세스하고 VPC의 서브넷에 IAM 엔드포인트와 네트워크 인터페이스를 배치합니다. 자세한 내용은 VPC 액세스를 위한 서비스 연결 역할 단원을 참조하십시오.

  20. (선택 사항) 로그인 페이지로 Kibana를 보호하려면 Enable Amazon Cognito for authentication를 선택하십시오.

    1. Kibana 인증을 사용하려는 Amazon Cognito 사용자 풀과 자격 증명 풀을 선택하십시오. 이러한 리소스를 만드는 방법은 Kibana에 대한 Amazon Cognito 인증 단원을 참조하십시오.

  21. Set the domain access policy to(도메인 액세스 정책을 다음과 같이 설정합니다.)에서 Select a template(템플릿 선택) 드롭다운 목록의 사전 구성된 정책을 선택하고 해당 도메인의 필요에 맞게 편집합니다. 아니면 [Add or edit the access policy] 상자에 자격 증명 및 액세스 관리(IAM) 정책 문을 하나 이상 추가해도 됩니다. 자세한 내용은 Amazon Elasticsearch Service의 자격 증명 및 액세스 관리, 액세스 정책 구성, VPC 도메인 액세스 정책에 대하여 단원을 참조하십시오.

    참고

    19단계에서 [VPC access]를 선택한 경우에는 IP 기반 정책 템플릿이 드롭다운 목록에 나타나지 않기 때문에 IP 기반 정책을 수동으로 구성할 수 없습니다. 대신에 보안 그룹을 사용하여 어느 IP 주소가 도메인에 액세스할 수 있는지 제어할 수 있습니다. 자세한 내용은 VPC 도메인 액세스 정책에 대하여 단원을 참조하십시오.

  22. [Next]를 선택합니다.

  23. 복습 페이지에서 도메인 구성을 검토한 다음 확인을 선택합니다.

Amazon ES 도메인 생성(AWS CLI)

콘솔을 사용하여 Amazon ES 도메인을 만드는 대신 AWS CLI를 사용할 수 있습니다. 구문은 AWS CLI 명령 참조에서 Amazon Elasticsearch Service를 참조하십시오.

예시 명령

이 첫 번째 예에서는 다음 Amazon ES 도메인 구성을 보여줍니다.

  • Elasticsearch 버전 5.5에서 mylogs라는 Amazon ES 도메인을 만듭니다.

  • 인스턴스 유형이 m4.large.elasticsearch인 인스턴스 2개를 사용하여 도메인을 채웁니다.

  • 각 데이터 노드의 저장에 100GiB 자기 디스크 EBS 볼륨을 사용합니다.

  • 단일 IP 주소(192.0.2.0/32)의 익명 액세스만 허용합니다.

aws es create-elasticsearch-domain --domain-name mylogs --elasticsearch-version 5.5 --elasticsearch-cluster-config InstanceType=m4.large.elasticsearch,InstanceCount=2 --ebs-options EBSEnabled=true,VolumeType=standard,VolumeSize=100 --access-policies '{"Version": "2012-10-17", "Statement": [{"Action": "es:*", "Principal":"*","Effect": "Allow", "Condition": {"IpAddress":{"aws:SourceIp":["192.0.2.0/32"]}}}]}'

다음 예에서는 아래 Amazon ES 도메인 구성을 보여줍니다.

  • Elasticsearch 버전 5.5에서 mylogs라는 Amazon ES 도메인을 만듭니다.

  • 인스턴스 유형이 m4.large.elasticsearch인 인스턴스 6개를 사용하여 도메인을 채웁니다.

  • 각 데이터 노드의 저장에 100GiB 범용(SSD) EBS 볼륨을 사용합니다.

  • 사용자 AWS 계정 ID가 555555555555인 단일 사용자로 서비스에 대한 액세스를 제한합니다.

  • 가용 영역 세 개에 인스턴스 분산

aws es create-elasticsearch-domain --domain-name mylogs --elasticsearch-version 5.5 --elasticsearch-cluster-config InstanceType=m4.large.elasticsearch,InstanceCount=6,ZoneAwarenessEnabled=true,ZoneAwarenessConfig={AvailabilityZoneCount=3} --ebs-options EBSEnabled=true,VolumeType=gp2,VolumeSize=100 --access-policies '{"Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": {"AWS": "arn:aws:iam::555555555555:root" }, "Action":"es:*", "Resource": "arn:aws:es:us-east-1:555555555555:domain/mylogs/*" } ] }'

다음 예에서는 아래 Amazon ES 도메인 구성을 보여줍니다.

  • Elasticsearch 버전 5.5에서 mylogs라는 Amazon ES 도메인을 만듭니다.

  • 인스턴스 유형이 m4.xlarge.elasticsearch인 인스턴스 10개를 사용하여 도메인을 채웁니다.

  • 전용 마스터 노드의 역할을 위해 인스턴스 유형이 m4.large.elasticsearch인 인스턴스 세 개를 사용하여 도메인을 채웁니다.

  • 각 데이터 노드에 대해 1000 IOPS의 기본 성능으로 구성된 100GiB 프로비저닝된 IOPS EBS 볼륨을 저장에 사용합니다.

  • 사용자 한 명과 하위 리소스 하나(_search API)만 액세스할 수 있도록 제한합니다.

aws es create-elasticsearch-domain --domain-name mylogs --elasticsearch-version 5.5 --elasticsearch-cluster-config InstanceType=m4.xlarge.elasticsearch,InstanceCount=10,DedicatedMasterEnabled=true,DedicatedMasterType=m4.large.elasticsearch,DedicatedMasterCount=3 --ebs-options EBSEnabled=true,VolumeType=io1,VolumeSize=100,Iops=1000 --access-policies '{"Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::555555555555:root" }, "Action": "es:*", "Resource": "arn:aws:es:us-east-1:555555555555:domain/mylogs/_search" } ] }'

참고

Amazon ES 도메인을 만들려고 하는데 같은 이름의 도메인이 이미 존재하는 경우, CLI에 오류가 표시되지 않습니다. 그 대신 기존 도메인에 대한 세부 정보가 표시됩니다.

Amazon ES 도메인 생성(AWS SDK)

AWS SDK(Android 및 iOS SDK 제외)에서는 CreateElasticsearchDomain을 비롯하여 Amazon ES 구성 API 참조에 정의된 모든 작업을 지원합니다. 샘플 코드에 대한 내용은 Amazon Elasticsearch Service와 함께 AWS SDK 사용 단원을 참조하십시오. AWS SDK 설치 및 사용에 대한 자세한 내용은 AWS 소프트웨어 개발 키트를 참조하십시오.

Amazon ES 도메인 구성

증가한 트래픽 및 데이터 수요를 충족하기 위해 다음 변경 사항으로 Amazon ES 도메인 구성을 업데이트할 수 있습니다.

  • 인스턴스 수 변경

  • 인스턴스 유형 변경

  • 전용 마스터 노드 활성화 또는 비활성화

  • 다중 AZ 활성화 또는 비활성화

  • 스토리지 구성을 구성

  • VPC 서브넷 및 보안 그룹 변경

  • 고급 옵션 구성

참고

저장에 EBS 볼륨을 사용하도록 도메인 구성에 대한 자세한 내용은 EBS 기반 스토리지 구성을 참조하십시오.

Amazon ES 도메인 구성(콘솔)

다음 절차에 따라 콘솔을 사용하여 Amazon ES 구성을 업데이트합니다.

Amazon ES 도메인을 구성하려면(콘솔)

  1. https://aws.amazon.com으로 이동하여 Sign In to the Console(콘솔에 로그인)을 선택합니다.

  2. Analytics에서 Elasticsearch 서비스를 선택합니다.

  3. 탐색 창의 My domains(내 도메인)에서 업데이트할 도메인을 선택합니다.

  4. Configure cluster(클러스터 구성)를 선택합니다.

  5. Configure cluster(클러스터 구성) 페이지에서 도메인 구성을 업데이트합니다.

    1. 데이터 노드의 인스턴스 유형을 변경하려면 [Instance type]에서 새 인스턴스 유형을 선택합니다.

      Amazon ES에서 지원하는 인스턴스 유형 목록은 지원되는 인스턴스 유형을 참조하십시오.

    2. 인스턴스 수를 변경하려면 인스턴스 수에서 1–40 사이의 정수를 선택합니다. 도메인당 최대 200개의 인스턴스까지 한도 증가를 요청하려면 AWS Support Center에서 요청을 생성합니다.

    3. 클러스터의 안정성을 높이고 싶거나 도메인의 인스턴스 수가 10개를 넘는다면 클러스터에 전용 마스터 노드를 사용하십시오. 자세한 내용은 전용 마스터 노드 단원을 참조하십시오.

      1. 전용 마스터 인스턴스 확인란을 선택합니다.

      2. 전용 마스터 인스턴스 유형에서 전용 마스터 노드의 인스턴스 유형을 선택합니다.

      3. 전용 마스터 인스턴스 수에서 인스턴스 수를 선택합니다.

    4. 다중 AZ를 활성화하거나 비활성화하려면 1-AZ, 2-AZ 또는 3-AZ를 선택합니다. 자세한 내용은 다중 AZ 도메인 구성 단원을 참조하십시오.

    5. VPC 액세스를 활성화한 경우, VPC 엔드포인트가 배치된 서브넷을 변경하고 보안 그룹을 변경할 수 있습니다.

      1. 서브넷에서 서브넷을 선택합니다. 서브넷에 네트워크 인터페이스용으로 예약된 IP 주소가 충분해야 합니다. 다중 AZ를 활성화한 경우, 서브넷을 두 개 또는 세 개 선택해야 합니다. 서브넷은 동일한 리전의 서로 다른 가용 영역에 있어야 합니다. 자세한 내용은 Amazon Elasticsearch Service 도메인에 대한 VPC 지원 단원을 참조하십시오.

      2. 보안 그룹에서 도메인에 대한 액세스 권한이 필요한 보안 그룹을 추가합니다.

    6. (선택 사항) 고급 옵션을 선택합니다. 옵션 요약은 고급 옵션 구성 단원을 참조하십시오.

    7. 제출을 선택합니다.

Amazon ES 도메인 구성(AWS CLI)

elasticsearch-cluster-config 옵션을 사용하여 AWS CLI에서 Amazon ES 클러스터를 구성합니다. 구문은 AWS CLI 명령 참조에서 Amazon Elasticsearch Service를 참조하십시오.

Amazon ES 도메인 구성(AWS SDK)

AWS SDK(Android 및 iOS SDK 제외)에서는 UpdateElasticsearchDomainConfig을 비롯하여 Amazon ES 구성 API 참조에 정의된 모든 작업을 지원합니다. 샘플 코드에 대한 내용은 Amazon Elasticsearch Service와 함께 AWS SDK 사용 단원을 참조하십시오. AWS SDK 설치 및 사용에 대한 자세한 내용은 AWS 소프트웨어 개발 키트를 참조하십시오.

EBS 기반 스토리지 구성

Amazon EBS 볼륨은 블록 수준 스토리지 디바이스를 제공하여 단일 인스턴스를 연결하는 것이 가능합니다. EBS 볼륨은 Amazon ES 도메인의 스토리지 리소스를 컴퓨팅 리소스와 독립적으로 확장할 수 있게 해줍니다. EBS 볼륨은 데이터 세트는 대규모이지만 대용량 컴퓨팅 리소스는 필요하지 않은 도메인에 매우 유용합니다. EBS 볼륨은 인스턴스에서 제공하는 기본 스토리지보다 훨씬 더 큽니다. Amazon Elasticsearch Service는 다음 EBS 볼륨 유형을 지원합니다.

  • 범용(SSD)

  • 프로비저닝된 IOPS(SSD)

  • Magnetic

참고

EBS 볼륨 유형을 프로비저닝된 IOPS에서 프로비저닝되지 않은 EBS 볼륨 유형으로 변경하는 경우 IOPS 값을 0으로 설정합니다.

주의

현재, EBS 볼륨에 연결된 데이터 노드에서 실패하면 EBS 볼륨에서도 실패합니다.

EBS 기반 스토리지 구성(콘솔)

다음 절차에 따라 콘솔을 사용하여 EBS 기반 스토리지를 활성화합니다.

EBS 기반 스토리지를 활성화하려면(콘솔)

  1. https://aws.amazon.com으로 이동하여 Sign In to the Console(콘솔에 로그인)을 선택합니다.

  2. Analytics에서 Elasticsearch 서비스를 선택합니다.

  3. 탐색 창의 My domains(내 도메인)에서 구성할 도메인을 선택합니다.

  4. Configure cluster(클러스터 구성)를 선택합니다.

  5. 스토리지 유형에서 EBS를 선택합니다.

  6. EBS volume type(EBS 볼륨 유형)에서 EBS 볼륨 유형을 선택합니다.

    EBS 볼륨 유형으로 프로비저닝된 IOPS(SSD)를 선택하는 경우, 프로비저닝된 IOPS에 대해 원하는 기준 IOPS 성능을 입력합니다.

  7. EBS volume size(EBS 볼륨 크기)에 원하는 EBS 볼륨 크기를 입력합니다.

    EBS volume size(EBS 볼륨 크기)는 노드당 크기입니다. (데이터 노드 수) * (EBS 볼륨 크기) 공식을 사용하여 Amazon ES 도메인의 총 스토리지 크기를 계산할 수 있습니다. EBS 볼륨의 최소 크기 및 최대 크기는 지정된 EBS 볼륨 유형과 볼륨이 연결된 인스턴스 유형에 따라 달라집니다. 자세한 내용은 EBS 볼륨 크기 제한을 참조하십시오.

  8. 제출을 선택합니다.

참고

프로비저닝된 IOPS EBS 볼륨의 IOPS 값을 볼륨의 최대 스토리지의 30배 미만으로 설정합니다. 예를 들어 볼륨의 최대 크기가 100GiB이면 이 볼륨의 IOPS 값에 3000보다 큰 값은 할당할 수 없습니다.

자세한 내용은 Amazon EC2 설명서의 Amazon EBS 볼륨을 참조하십시오.

EBS 기반 스토리지 구성(AWS CLI)

--ebs-options 옵션을 사용하여 AWS CLI에서 EBS 기반 스토리지를 구성합니다. 다음 구문은 create-elasticsearch-domainupdate-elasticsearch-domain-config 명령 둘 다에서 사용됩니다.

구문

--ebs-options EBSEnabled=<value>,VolumeType=<value>,VolumeSize=<value>,IOPS=<value>

파라미터 유효한 값 설명
EBSEnabled true 또는 false 인스턴스에서 제공하는 스토리지가 아니라 스토리지에 EBS 볼륨을 사용할지 여부를 지정합니다. 기본 값은 false입니다.
VolumeType 다음을 수행하십시오.
  • gp2 (범용 SSD)

  • io1 (프로비저닝된 IOPS SSD)

  • standard(마그네틱)

Amazon ES 도메인에서 사용할 EBS 볼륨 유형입니다.
VolumeSize 정수 GiB의 각 데이터 노드마다 EBS 볼륨 크기를 지정합니다. EBS 볼륨의 최소 크기 및 최대 크기는 지정된 EBS 볼륨 유형과 볼륨이 연결된 인스턴스 유형에 따라 달라집니다. 각 인스턴스 유형에 대한 최소 및 최대 EBS 유형을 보여주는 표를 보려면 서비스 제한을 참조하십시오.
IOPS 정수 EBS 볼륨에 대한 기본 I/O 성능을 지정합니다. 이 파라미터는 프로비저닝된 IOPS(SSD) 볼륨에서만 사용됩니다. 최소값은 1000입니다. 최대값은 16000입니다.

참고

프로비저닝된 IOPS EBS 볼륨의 IOPS 값은 볼륨의 최대 스토리지의 30배 미만으로 설정하는 것이 좋습니다. 예를 들어 볼륨의 최대 크기가 100GiB이면 이 볼륨의 IOPS 값에 3000보다 큰 값을 할당하면 안 됩니다. 각 볼륨 유형에 대한 사용 사례를 비롯한 자세한 정보는 Amazon EC2 설명서의 Amazon EBS 볼륨 유형을 참조하십시오.

예시

다음 예제에서는 Elasticsearch 버전 5.5를 사용하여 10GiB 범용 EBS 볼륨 1개를 포함하는 도메인 mylogs를 생성합니다.

aws es create-elasticsearch-domain --domain-name=mylogs --elasticsearch-version 5.5 --ebs-options EBSEnabled=true,VolumeType=gp2,VolumeSize=10

그러나 검색 인덱스의 크기가 증가함에 따라 더 큰 EBS 볼륨이 필요할 수 있습니다. 예를 들어, 기본 I/O 성능이 3000 IOPS인 100GiB의 프로비저닝된 IOPS 볼륨을 사용할 수 있습니다. 다음 예에서는 이러한 변경 사항으로 도메인 구성을 업데이트합니다.

aws es update-elasticsearch-domain-config --domain-name=mylogs --ebs-options EBSEnabled=true,VolumeType=io1,VolumeSize=100,IOPS=3000

EBS 기반 스토리지 구성(AWS SDK)

AWS SDK(Android 및 iOS SDK 제외)는 UpdateElasticsearchDomainConfig에 대한 --ebs-options 파라미터를 비롯하여 Amazon ES 구성 API 참조에 정의된 모든 작업을 지원합니다. AWS SDK 설치 및 사용에 대한 자세한 내용은 AWS 소프트웨어 개발 키트를 참조하십시오.

VPC 액세스 구성 수정

도메인을 VPC에 상주하도록 구성한 경우, Amazon ES 콘솔을 사용하여 구성을 수정할 수 있습니다. 퍼블릭 도메인을 VPC 도메인으로 마이그레이션하려면 퍼블릭 액세스에서 VPC 액세스로 마이그레이션 단원을 참조하십시오.

VPC 액세스 구성(콘솔)

콘솔에서 다음 절차를 사용하여 VPC 액세스를 구성합니다.

VPC 액세스(콘솔)을 구성하려면

  1. https://aws.amazon.com으로 이동하여 Sign In to the Console(콘솔에 로그인)을 선택합니다.

  2. Analytics에서 Elasticsearch 서비스를 선택합니다.

  3. 탐색 창의 My domains(내 도메인)에서 구성할 도메인을 선택합니다.

  4. Configure cluster(클러스터 구성)를 선택합니다.

  5. Network configuration(네트워크 구성) 섹션의 서브넷에서 서브넷을 선택합니다. 다중 AZ를 활성화한 경우, 서브넷을 두 개 또는 세 개 선택해야 합니다. 서브넷은 동일한 리전의 서로 다른 가용 영역에 있어야 합니다. 자세한 내용은 Amazon Elasticsearch Service 도메인에 대한 VPC 지원 단원을 참조하십시오.

    참고

    서브넷(들)에서 네트워크 인터페이스용 IP 주소를 충분히 예약해야 합니다. 자세한 내용은 VPC 서브넷에서 IP 주소 예약 단원을 참조하십시오.

  6. 보안 그룹에서 도메인에 대한 액세스 권한이 필요한 보안 그룹을 추가합니다.

  7. 제출을 선택합니다.

Kibana에 대한 Amazon Cognito 인증 구성

도메인을 생성한 후 Kibana에 대한 Amazon Cognito 인증을 활성화하거나 비활성화할 수 있습니다. 또한 사용자 풀과 자격 증명 풀을 변경할 수 있습니다. 자세한 내용은 Kibana에 대한 Amazon Cognito 인증 단원을 참조하십시오.

액세스 정책 구성

Amazon Elasticsearch Service는 Amazon ES 도메인에 대한 액세스를 구성하는 여러 가지 방법을 제공합니다. 자세한 내용은 Amazon Elasticsearch Service의 자격 증명 및 액세스 관리 단원을 참조하십시오.

콘솔이 사용자가 도메인의 필요에 따라 사용자 지정할 수 있는 사전 구성된 액세스 정책을 제공합니다. 사용자가 다른 Amazon ES 도메인의 액세스 정책을 가져올 수도 있습니다. 이러한 액세스 정책이 VPC 액세스와 상호 작용하는 방식에 대한 자세한 내용은 VPC 도메인 액세스 정책에 대하여 단원을 참조하십시오.

액세스 정책 구성(콘솔)

콘솔에서 다음 절차에 따라 액세스 정책을 구성합니다.

액세스 정책을 구성하려면(콘솔)

  1. https://aws.amazon.com으로 이동하여 Sign In to the Console(콘솔에 로그인)을 선택합니다.

  2. Analytics에서 Elasticsearch 서비스를 선택합니다.

  3. 탐색 창의 My domains(내 도메인)에서 업데이트할 도메인을 선택합니다.

  4. Modify access policy(액세스 정책 수정)를 선택합니다.

  5. 액세스 정책을 편집합니다.

    아니면 템플릿 선택 드롭다운 목록에서 정책 템플릿을 하나 선택한 다음, 해당 도메인의 필요에 맞게 편집합니다.

    사전 구성된 액세스 정책 설명
    하나 이상의 AWS 계정 또는 IAM 사용자에 대한 액세스를 허용 또는 거부 하나 이상의 AWS 계정, IAM 사용자 또는 역할에 대한 액세스를 허용 또는 거부합니다.
    Allow access to the domain from specific IP(s)(특정 IP로부터 도메인에 대한 액세스를 허용)

    이 정책을 사용하여 특정 IP 주소 또는 IP 주소 범위에 대한 익명 액세스를 제한할 수 있습니다.

    참고

    도메인에서 VPC 액세스를 활성화한 경우, 이 사전 구성된 정책은 사용할 수 없습니다. 대신에 보안 그룹을 사용하여 어느 IP 주소가 도메인에 액세스할 수 있는지 제어할 수 있습니다. 자세한 내용은 VPC 도메인 액세스 정책에 대하여 단원을 참조하십시오.

    Deny access to the domain(도메인에 대한 액세스를 거부) 이 정책은 Amazon ES 콘솔을 통한 액세스 또는 도메인을 생성한 AWS 계정 소유자의 액세스만 허용합니다.
    다른 도메인에서 액세스 정책을 복사 이 템플릿은 다른 도메인에서 기존 액세스 정책을 가져오는 편리한 방법입니다.
    도메인에 대한 개방 액세스를 허용

    도메인에 퍼블릭 엔드포인트가 포함되어 있을 경우 이 정책은 권장하지 않습니다. 누구나 도메인의 인덱스를 삭제하거나, 수정하거나, 액세스할 수 있기 때문입니다. 이 정책은 단지 테스트 시 편의를 위한 것입니다. 따라서 이 설정을 사용하는 도메인에는 민감한 데이터를 로드하지 마십시오.

  6. 제출을 선택합니다.

액세스 정책 구성(AWS CLI)

--access-policies 옵션을 사용하여 AWS CLI에서 액세스 정책을 구성합니다. 다음 구문은 create-elasticsearch-domainupdate-elasticsearch-domain-config 명령 둘 다에서 사용됩니다.

구문

--access-policies=<value>

파라미터 유효한 값 설명
--access-policies JSON Amazon ES 도메인에 대한 액세스 정책을 지정합니다.

리소스 기반 액세스 정책의 다음 예제에서는 Principal 정책 요소에서 서비스에 대한 액세스를 사용자 AWS 계정 ID가 555555555555인 단일 사용자에게로 제한합니다. 이 사용자는 index1에 대한 액세스는 가능하지만 이 도메인의 다른 인덱스에는 액세스할 수 없습니다.

aws es update-elasticsearch-domain-config --domain-name mylogs --access-policies '{"Version": "2012-10-17", "Statement": [ { "Effect": "Allow","Principal": {"AWS": "arn:aws:iam::123456789012:root" },"Action":"es:*","Resource":"arn:aws:es:us-east-1:555555555555:domain/index1/*" } ] }'

작은 정보

AWS CLI를 사용하여 액세스 정책을 구성하는 경우에는 여러 온라인 도구 중 하나를 사용하여 JSON 정책 문을 줄일 수 있습니다.

액세스 정책 구성(AWS SDK)

AWS SDK(Android 및 iOS SDK 제외)는 UpdateElasticsearchDomainConfig에 대한 --access-policies 파라미터를 비롯하여 Amazon ES 구성 API 참조에 정의된 모든 작업을 지원합니다. AWS SDK 설치 및 사용에 대한 자세한 내용은 AWS 소프트웨어 개발 키트를 참조하십시오.

고급 옵션 구성

고급 옵션을 사용하여 다음을 구성합니다.

rest.action.multi.allow_explicit_index

HTTP 요청의 본문에서 인덱스에 대한 명시적 참조를 허용할지 여부를 지정합니다. 이 속성을 false로 설정하면 사용자가 하위 리소스에 대한 액세스 제어를 우회하는 것을 방지할 수 있습니다. 기본값은 true입니다. 자세한 내용은 고급 옵션 및 API 고려 사항 단원을 참조하십시오.

indices.fielddata.cache.size

필드 데이터에 할당되는 Java 힙 공간의 백분율을 지정합니다. 기본적으로 이 설정은 무한입니다.

참고

많은 고객이 일일 인덱스 교체를 문의합니다. 이와 같은 대부분의 경우 JVM 힙의 40%로 구성된 indices.fielddata.cache.size를 사용하여 벤치마크 테스트를 시작하는 것이 좋습니다. 그러나 인덱스가 매우 큰 경우 큰 필드 데이터 캐시가 필요할 수 있습니다.

indices.query.bool.max_clause_count

Lucene 부울 쿼리 하나에 허용되는 최대 절 수를 지정합니다. 기본값은 1024입니다. 절 수가 허용되는 개수 이상인 쿼리는 TooManyClauses 오류를 일으킵니다. 자세한 내용은 Lucene documentation을 참조하십시오.

고급 옵션 구성(콘솔)

고급 옵션을 구성하려면(콘솔)

  1. https://aws.amazon.com으로 이동하여 Sign In to the Console(콘솔에 로그인)을 선택합니다.

  2. Analytics에서 Elasticsearch 서비스를 선택합니다.

  3. 탐색 창의 My domains(내 도메인)에서 업데이트할 도메인을 선택합니다.

  4. Configure cluster(클러스터 구성)를 선택합니다.

  5. 고급 옵션을 선택합니다.

  6. 원하는 옵션을 지정한 후 제출을 선택합니다.

고급 옵션 구성(AWS CLI)

--advanced-options 옵션에 다음 구문을 사용합니다. 옵션에 대한 구문은 create-elasticsearch-domainupdate-elasticsearch-domain-config 명령 둘 다에서 동일합니다.

구문

--advanced-options rest.action.multi.allow_explicit_index=<true|false>, indices.fielddata.cache.size=<percentage_heap>, indices.query.bool.max_clause_count=<int>

파라미터 유효한 값
--advanced-options rest.action.multi.allow_explicit_index=<true|false>
indices.fielddata.cache.size=<percentage_heap>
indices.query.bool.max_clause_count=<int>

다음은 HTTP 요청 본문에서 인덱스에 대한 명시적 참조를 비활성화하는 예제입니다. 또한 필드 데이터 캐시를 총 Java 힙 공간의 40%로 제한합니다.

aws es update-elasticsearch-domain-config --domain-name mylogs --region us-east-1 --advanced-options rest.action.multi.allow_explicit_index=false, indices.fielddata.cache.size=40

고급 옵션 구성(AWS SDK)

AWS SDK(Android 및 iOS SDK 제외)는 UpdateElasticsearchDomainConfig에 대한 --advanced-options 파라미터를 비롯하여 Amazon ES 구성 API 참조에 정의된 모든 작업을 지원합니다. AWS SDK 설치 및 사용에 대한 자세한 내용은 AWS 소프트웨어 개발 키트를 참조하십시오.

로그 구성

Amazon ES는 Amazon CloudWatch Logs를 통해 오류 로그, 검색 느린 로그, 인덱스 느린 로그와 같은 세 가지 Elasticsearch 로그를 공개합니다. 이러한 로그는 성능 및 안정성 문제 해결에 유용하지만 기본적으로 비활성화되어 있습니다. 활성화되면, 표준 CloudWatch 요금이 적용됩니다.

참고

오류 로그는 Elasticsearch 버전 5.1 이상에서만 사용 가능합니다. 느린 로그는 모든 Elasticsearch 버전에서 사용 가능합니다.

Elasticsearch는 로그에 대해 Apache Log4j 2TRACE, DEBUG, INFO, WARN, ERROR, FATAL의 내장형 로그 수준(최저~최고 수준의 심각도)을 사용합니다.

사용자가 오류 로그를 활성화하면 Amazon ES에서는 WARN, ERRORFATAL의 로그 줄을 CloudWatch에 게시합니다. 또한 Amazon ES는 다음을 포함하여 DEBUG 수준에서 여러 제외 항목을 게시합니다.

  • org.elasticsearch.index.mapper.MapperParsingException

  • org.elasticsearch.index.query.QueryShardException

  • org.elasticsearch.action.search.SearchPhaseExecutionException

  • org.elasticsearch.common.util.concurrent.EsRejectedExecutionException

  • java.lang.IllegalArgumentException

오류 로그는 다음을 포함하여 많은 상황에서 문제를 해결하는 데 도움이 될 수 있습니다.

  • Painless 스크립트 컴파일 문제

  • 잘못된 쿼리

  • 인덱싱 문제

  • 스냅샷 실패

로그 게시 활성화(콘솔)

Amazon ES 콘솔은 CloudWatch에 대한 로그 게시를 활성화하는 가장 간편한 방법입니다.

CloudWatch에 대한 로그 게시를 활성화하려면(콘솔)

  1. https://aws.amazon.com으로 이동하여 Sign In to the Console(콘솔에 로그인)을 선택합니다.

  2. Analytics에서 Elasticsearch Service를 선택합니다.

  3. 탐색 창의 My domains(내 도메인)에서 업데이트할 도메인을 선택합니다.

  4. 로그 탭에서 원하는 로그에 대해 활성화를 선택합니다.

  5. CloudWatch 로그 그룹을 생성하거나 기존 로그 그룹을 선택합니다.

    참고

    여러 로그를 활성화하려는 경우 자체 로그 그룹에 각각 게시하는 것이 좋습니다. 이렇게 분리하면 로그를 더 쉽게 검사할 수 있습니다.

  6. 적절한 사용 권한이 포함된 액세스 정책을 선택하거나 콘솔에서 제공하는 JSON을 사용하여 정책을 만듭니다.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "es.amazonaws.com" }, "Action": [ "logs:PutLogEvents", "logs:CreateLogStream" ], "Resource": "cw_log_group_arn" } ] }

    중요

    CloudWatch Logs는 리전당 10개의 리소스 정책을 지원합니다. 여러 Amazon ES 도메인에 대해 로그를 사용하도록 설정하려는 경우, 이 제한에 도달하지 않도록 하려면 여러 로그 그룹을 포함하는 더 광범위한 정책을 생성하여 재사용해야 합니다.

  7. [Enable]을 선택합니다.

    도메인 상태가 Active에서 Processing으로 바뀝니다. 상태가 다시 Active로 돌아온 다음에 로그 게시를 활성화해야 합니다. 이 프로세스에는 최대 30분이 걸릴 수 있습니다.

느린 로그 중 하나를 활성화한 경우 느린 로그에 대한 Elasticsearch 로깅 임계값 설정 단원을 참조하십시오. 오류 로그만 활성화한 경우 추가 구성 단계를 수행할 필요가 없습니다.

로그 게시 활성화(AWS CLI)

로그 게시를 활성화하려면 CloudWatch 로그 그룹이 필요합니다. 아직 없는 경우 다음 명령을 사용하여 생성할 수 있습니다.

aws logs create-log-group --log-group-name my-log-group

다음 명령을 입력하여 로그 그룹의 ARN을 찾은 다음 이를 기록해 둡니다.

aws logs describe-log-groups --log-group-name my-log-group

이제 Amazon ES에게 로그 그룹에 작성할 수 있는 권한을 부여할 수 있습니다. 명령의 끝 부분에 로그 그룹의 ARN을 제공해야 합니다.

aws logs put-resource-policy --policy-name my-policy --policy-document '{ "Version": "2012-10-17", "Statement": [{ "Sid": "", "Effect": "Allow", "Principal": { "Service": "es.amazonaws.com"}, "Action":[ "logs:PutLogEvents"," logs:PutLogEventsBatch","logs:CreateLogStream"],"Resource": "cw_log_group_arn"}]}'

중요

CloudWatch Logs는 리전당 10개의 리소스 정책을 지원합니다. 여러 Amazon ES 도메인에 대해 느린 로그를 사용하도록 설정하려는 경우, 이 제한에 도달하지 않도록 하려면 여러 로그 그룹을 포함하는 더 광범위한 정책을 생성하여 재사용해야 합니다.

마지막으로, --log-publishing-options 옵션을 사용하여 게시를 활성화할 수 있습니다. 옵션에 대한 구문은 create-elasticsearch-domainupdate-elasticsearch-domain-config 명령 둘 다에서 동일합니다.

파라미터 유효한 값
--log-publishing-options SEARCH_SLOW_LOGS={CloudWatchLogsLogGroupArn=cw_log_group_arn,Enabled=true|false}
INDEX_SLOW_LOGS={CloudWatchLogsLogGroupArn=cw_log_group_arn,Enabled=true|false}
ES_APPLICATION_LOGS={CloudWatchLogsLogGroupArn=cw_log_group_arn,Enabled=true|false}

참고

여러 로그를 활성화하려는 경우 자체 로그 그룹에 각각 게시하는 것이 좋습니다. 이렇게 분리하면 로그를 더 쉽게 검사할 수 있습니다.

다음 예제는 지정된 도메인에 대한 검색 및 인덱스 느린 로그의 게시를 활성화합니다.

aws es update-elasticsearch-domain-config --domain-name my-domain --log-publishing-options "SEARCH_SLOW_LOGS={CloudWatchLogsLogGroupArn=arn:aws:logs:us-east-1:123456789012:log-group:my-log-group,Enabled=true},INDEX_SLOW_LOGS={CloudWatchLogsLogGroupArn=arn:aws:logs:us-east-1:123456789012:log-group:my-other-log-group,Enabled=true}"

CloudWatch에 대한 게시를 비활성화하려면 Enabled=false를 통해 동일한 명령을 실행합니다.

느린 로그 중 하나를 활성화한 경우 느린 로그에 대한 Elasticsearch 로깅 임계값 설정 단원을 참조하십시오. 오류 로그만 활성화한 경우 추가 구성 단계를 수행할 필요가 없습니다.

로그 게시 활성화(AWS SDK)

로그 게시를 활성화하려면 먼저 CloudWatch 로그 그룹을 생성하고, ARN을 얻고, Amazon ES에게 작성할 수 있는 권한을 부여해야 합니다. 관련 작업은 Amazon CloudWatch Logs API Reference에 문서화되어 있습니다.

  • CreateLogGroup

  • DescribeLogGroup

  • PutResourcePolicy

AWS SDK를 사용하여 이 작업에 액세스할 수 있습니다.

AWS SDK(Android 및 iOS SDK 제외)는 CreateElasticsearchDomainUpdateElasticsearchDomainConfig에 대해 --log-publishing-options 옵션을 비롯하여 Amazon ES 구성 API 참조에 정의된 모든 작업을 지원합니다.

느린 로그 중 하나를 활성화한 경우 느린 로그에 대한 Elasticsearch 로깅 임계값 설정 단원을 참조하십시오. 오류 로그만 활성화한 경우 추가 구성 단계를 수행할 필요가 없습니다.

느린 로그에 대한 Elasticsearch 로깅 임계값 설정

Elasticsearch는 기본적으로 느린 로그를 비활성화합니다. CloudWatch에 대해 느린 로그 게시를 활성화한 후에도 여전히 각 Elasticsearch 인덱스에 대해 로깅 임계값을 지정해야 합니다. 이러한 임계값은 정확하게 기록할 내용과 로그 수준을 정의합니다.

Elasticsearch REST API를 통해 이러한 설정을 지정할 수 있습니다.

PUT elasticsearch_domain_endpoint/index/_settings { "index.search.slowlog.threshold.query.warn": "5s", "index.search.slowlog.threshold.query.info": "2s" }

느린 로그가 성공적으로 게시되고 있는지 테스트하려면 아주 낮은 값으로 시작하여 로그가 CloudWatch에 나타나는지 확인한 다음 임계값을 더 유용한 수준으로 늘립니다.

로그가 나타나지 않는 경우 다음 정보를 확인합니다.

  • CloudWatch 로그 그룹이 있습니까? CloudWatch 콘솔을 확인합니다.

  • 이제 Amazon ES에게 로그 그룹에 작성할 수 있는 권한이 있습니까? Amazon ES 콘솔을 확인합니다.

  • Amazon ES 도메인이 로그 그룹에 게시되도록 구성되었습니까? Amazon ES 콘솔을 확인하고, AWS CLI describe-elasticsearch-domain-config 옵션을 사용하거나 SDK 중 하나를 사용하여 DescribeElasticsearchDomainConfig를 호출합니다.

  • 요청이 해당 값을 초과할 만큼 Elasticsearch 로깅 임계값이 낮습니까? 인덱스에 대한 임계값을 검토하려면 다음 명령을 사용합니다.

    GET elasticsearch_domain_endpoint/index/_settings?pretty

인덱스에 대해 느린 로그를 사용하지 않으려면 변경한 임계값을 -1의 기본값으로 되돌립니다.

Amazon ES 콘솔 또는 AWS CLI를 사용하여 CloudWatch에 대한 게시를 비활성화해도 Elasticsearch의 로그 생성이 중지되지 않으며, 해당 로그에 대한 게시만 중지됩니다. 느린 로그가 더 이상 필요하지 않으면 인덱스 설정을 확인합니다.

로그 보기

CloudWatch에서 애플리케이션 및 느린 로그를 보는 것은 다른 CloudWatch 로그를 보는 것과 같습니다. 자세한 내용은 Amazon CloudWatch Logs User Guide로그 데이터 보기 단원을 참조하십시오.

다음은 로그를 볼 때 고려해야 할 몇 가지 사항입니다.

  • Amazon ES는 각 줄에 있는 처음 255,000개 문자만 CloudWatch에 게시합니다. 남아 있는 모든 콘텐츠는 잘리게 됩니다.

  • CloudWatch에서 로그 스트림 이름에는 콘텐츠를 식별하는 데 도움이 되는 -index-slow-logs, -search-slow-logs-es-application-logs 접미사가 있습니다.